I’m always trying to figure out a more efficient way to do development. I’ve tried more than a dozen different applications to develop in: Notepad, Notepad++, Dreamweaver, FrontPage, Aptana, and so on.
Whichever application you end up using it still only solves some of the problems. So this post will divulge my development environment for some projects. This isn’t the ‘end all, be all’ and it will evolve, but its evolved to this point over years and years and I finally have something I really enjoy.
Most of the content in this tutorial is applicable to any operating system, but it is written for Windows users and some parts will need to be amended for Mac users.
Table of Contents
Local Environment
I used to hate local development. It makes sharing your work so much more difficult, configuring a local server isn’t always easy, and there’s so many things to change once you move to production. Not anymore.
Install Apache, MySQL, and PHP
First of all, for any local development you’ll need WAMP, XAMPP, or MAMP. These set up an environment that allows you to run a website on your machine. I use WAMP on a Windows machine. All of these programs will install Apache, MySQL, and PHP along with some helper applications like phpMyAdmin.
Choose which one you like the most and install.
Configure MySQL
After you’ve installed your server environment you need to create a database for your WordPress site.
Open phpMyAdmin or another bundled database application. From the homepage of phpMyAdmin you’ll be able to easily type the name of a new database and save it.
Configure Apache
There are two steps to allowing your computer to act as the server for a website using a real domain. Our intention is to setup example.com to run off of the local computer (rather than from the internet).
Use your real domain
One of the most annoying things about local development is that most tutorials have you setup http://localyourdomin/. That means when its time for production you have to find and replace all occurrences of that in your database and files. Lots of room for error there. So let’s just use your real domain: http://example.com (obviously, replace all instances of example.com with your domain).
1. Edit your HOSTS file
In Windows, use Notepad to open C:\Windows\System32\drivers\etc (be sure to “Run as administrator”) .
Add to the bottom of the file:
# 127.0.0.1 example.com #local
# 123.4.5.6 example.com #production
- The
#(pound sign) denotes a comment. So everything following the pound sign is ignored. So this example won’t change anything once you add it to the file. 127.0.0.1is the IP address of your machine. Replace123.4.5.6with the IP address of your remote server (the one your website is hosted on).#localand#productionare just comments to signify which server goes where.
Now, if you un-comment the local server when you try going to example.com your browser will look to your local machine.
NOTE: You can get browser extensions to quickly switch between hosts. Since I do most of my development in Firefox I use HostAdmin.
2. Edit Apache’s httpd.conf
Your computer now knows that example.com is hosted on your machine, but your server needs to know where your local website is located.
Open up httpd.conf (varies depending on which software you installed, but in WAMP its in C:\wamp\bin\apache\Apache2.2.17\conf).
Add to the bottom of the file:
<VirtualHost 127.0.0.1> ServerName example.com DocumentRoot "C:/wamp/www/example_com" ServerAdmin you@example.com <Directory C:/wamp/www/example_com> Order Allow,Deny Allow from all </Directory> </VirtualHost>
Save.
Install WordPress
Download the latest version of WordPress, unzip it, and put its contents into C:\wamp\www\example_com.
Go to example.com and you should see the WordPress installation screen. Follow the wizard. The database name is the one you created earlier. The username (by default) is “root” and the password is blank (null).
Code Editor
You may use Notepad to do all of your development. Pat yourself on the back; you’re hardcore. You’re also missing out.
Finding the right software is hard. Some are ugly, featureless, slow, or dead. A couple years ago I found Aptana. Its an IDE, which basically means that it does way more than edit files.
What does an IDE (and specifically Aptana) offer?
- Remote FTP/SFTP file editing. Upload/download of files.
- Code completion: PHP, CSS, HTML and more.
- Real-time error/warning checking against W3C standards.
- Local projects
After you install Aptana you can create a project.
- Go to “New” → “Project…”
- Name your project (maybe
example.com) - Uncheck “Use default location”.
- Browse to and choose
C:\wamp\www\example_com - Click Finish
Your project now contains all WordPress core files, themes, and plugins. Use the project explorer to view all of your files
You can also use Aptana to connect to FTP and remotely edit files. A better method may be to edit locally and use Aptana’s synchronization features to push the files live after you’ve tested locally.
Source Control
At this point you don’t need to go any further unless you’re interested in using source control. Everything we’ve done so far is good enough for a local environment and/or remote editing. But you can make things even beefier with source control…
Source control can be confusing and I’m not going to explain everything here. Instead I’m just going to layout how to use various tools to interact with SVN.
For those a little unfamiliar though, here’s some benefits of source control:
- History of changes
- Backup of code
- Teams can work on the same code simultaneously
I use a few different repository systems, but my favorite is Beanstalk. A single feature makes Beanstalk amazing: deployment. More on this in a bit.
SVN setup
Repository structure is important to get right. There’s lots of ways to do it and you probably will need to tailor it to your project’s needs. But imagine you’re developing several themes and plugins. This is the organization I’m using for just that:
/
/themes/
/my-theme/
/branches/
/tags/
/trunk/
index.php
style.css
/plugins/
/my-plugin/
/branches/
/tags/
/trunk/
my-plugin.php
This organization allows you to add multiple themes and plugins and keep them each separate from each other and allows you to tag a new version of the theme/plugin.
Create that structure in Beanstalk or whichever solution you’re using. Add a theme or plugin directory and put some files in its trunk directory.
Checkout locally
Now we want to checkout our theme/plugin locally and have it sit right inside the local WordPress installation we already setup.
- Install TortoiseSVN
- This allows you to do SVN actions within the Windows file system
- You’ll need to restart after you install. So tweet this post so you know how to get back to it ;)
- Navigate to
C:\wamp\www\example_com\wp-content\themes - Add a new directory with the name of your theme,
my-theme - Right click
my-themeand choose “SVN Checkout…” - Enter the URL of your repository
- Make sure your Checkout directory is the one you right clicked on
- Click OK
You’ll probably have to enter your SVN credentials as well.
Now you can login to your local WordPress and your theme/plugin will be visible (assuming you have the necessary files).
You can edit files and view the changes locally, then once you’re satisfied with your work you can commit it to the repository.
Deployment
Here’s the fun part (and we’re almost finished). Like I said at the start, it annoys me to have to manually upload and overwrite files via FTP. Its just an extra step and more room for error.
Deployment works like file syncing. Beanstalk keeps a revision record and puts it on each of your servers. This file tells it which other files you’ve made changes to, added, or deleted. Then it scours your server and syncs the files by making it identical to latest revision in your repository.
Using Beanstalk you can automatically deploy all commits to your remote server. I don’t suggest doing this exactly.
Staging server
Use Beanstalk to setup an automatic deployment every time you commit to your staging server. Pushing all of your commits to a staging server makes your latest revisions remotely accessible. This is handy for showing clients or for non-developers to see a working example (i.e. quality assurance, marketing, etc.). Its also a good idea to keep the staging server environment identical (or very similar) to what you’ll be pushing it to on production.
Production server
Finally this is your 100% publicly accessible live website. I use Beanstalk to manually deploy to this environment. Automatic deployment to production may work for you (especially on smaller, less critical sites) but you’ll need to be ready to roll back in the event of any problems.
After staging looks and works perfectly then I use a few clicks of the mouse inside of Beanstalk to manually deploy the latest version. Within seconds I’m confident that all production files are up to date.
Roll back
In the case that something goes horribly wrong, just manually deploy the previous revision. Its so easy!
Show Me Yours
I’d love to know how you have your environments setup. I’m willing and ready to improve mine. Streamlining the process just means I can spend more time paying attention to better code.
If you are looking for setups that WP developers use in practice be sure to check out this on WPSE http://wordpress.stackexchange.com/questions/324/software-for-wordpress-theme-and-plugin-development
I love StackExchange more and more everyday.
I’ve set a server on a VM running on my desktop.
The desktop is an Ubuntu client, the VM (VirtualBox) is an Ubuntu server, with Apache2, php, MySQL, phpMyadmin, ssh and svn.
I store all the dev on the SVN, using almost the same folder structure as yours, and when I commit the last version to the repository, I upload as well with the FTP to the VM as staging server.
If everything is OK, I push the files manually to the live webserver.
A virtual machine seems like a great way to replicate a production environment as well, making sure everything works locally and in production.
Hello Patrick and Sat
Can you please tell me the how can i use the virtual machine as i wanted to setup a development environment. Or can you please send me the link of the website where everything is shown in details. I am developing a website and want to use virtual machine as a server. Any help would be greatly appreciated.
Thank You
Amazing tutorial, thank you for that!!! I´ve been developing locally for some time and this will sure improve my workflow.
Great article Patrick! Thank you so much for sharing – I’ll be implementing some of these ideas into my own workflow.
Question about the staging server – you (and your clients) won’t be able to access it via example.com right? How do you get around that?
Its a little tricky if your intention is showing clients your staging server, because they’ll have to edit their host file (something they probably won’t ever figure out how to do in their lifetime). But you can send them these instructions and MAYBE they will figure it out. Otherwise, you can do it for them.
I used to be hardcore and use Notepad for everything. I’ve since gone a little soft though and was drawn in by a few pretty colors in Notepad++.
Love the hosts file!
For local sites, i tend to use example.dev. That way I know instantly which is the live site and which is development.
The hosts tip is really neat. I’ve been using it lately because I needed to work on an IDN domain name like héhé.com and didn’t have any domain to play with :)
2 thing I also use on my dev box are:
- my “No Login” plugin to always bypass the login process and save a few seconds each time
- a quick plugin to make the background of the admin area red or purple in my test site. Too many times I’ve forgotten I was in the test site and thought I was in the live site instead :)
A really easy thing you can do is simply copy the authentication keys from your remote
wp-config.phpand use them in your local copy. That way when you login locally or remotely you’re logged in to both. This only works if you’re using the same domain locally, of course.I feel you on forgetting which one you’re using sometimes. A few times before I’ve added code to the local
wp-config.phpto add a red bar at the top of the site that says “Local”. I like the admin color idea though.Surely you know the headaches of setting up network sites locally. I like to use the real domain in those situations especially because the subdomains of a network site are in the database, and if you want to use a copy of the remote DB then you’re out of luck. A tutorial for another day is setting up Apache and the hosts file to run a network locally. Its pretty easy actually.
Great info. One step that is missing: Syncing the databases.
For good or bad, a lot of logic for WordPress is in DB (plugin configs, widgets, etc)
We use capistrano for deployment and an in-house DB sync tool to solve both problems.
DB syncing would be amazing. I haven’t figured it out yet though.
However, sometimes I create a new database user for the production database and only give it
SELECTpermissions. Then I remotely connect to that DB so my local site is real-time identical to the live site. This isn’t perfect because obviously you can’t make any changes that affect the database, but its nice for theme testing.Also, one other thing, your host file doesn’t help when you deploy to staging. You’ll still need to find and replace. Something else a DB sync tool can do automatically.
There’s nothing to find and replace if you’re using the same domain on local, staging, and production. You just have to switch hosts between 3 servers.
I’ve recently become a convert and advocate for version control in all of our work and Beanstalk is our app of choice. This includes designs. And though I know that it is common practice to develop websites locally before deploying to a server, I am finding it more and more useful to develop on a live server staging area with automatic deployments. When we are ready to deploy to a production server, we manually deploy to that environment.
This is still a “work-in-progress” workflow for us but I am liking the results thus far. Thanks for sharing your insights.
Thanks! Like my weekend wasn’t going to be busy enough….. Now I’ve got this to look forward to figuring out.
Well written for sure!!
Didn’t you know its our goal at DevPress to keep you busy all the time with new stuff?
Nice up to date article about WordPress development environment in a nutshell.
I personally use Textmate + https://github.com/Gipetto/wordpress.tmbundle for code editor.
When speaking about a source control and a deployment: “A single feature makes Beanstalk amazing: deployment.” I would like to add the combination of GitHub (+ GitHub app for Mac http://mac.github.com/ or http://www.git-tower.com/) + http://www.pagodabox.com/ (I have some invitations if needed) is also very good alternative for serious source controlling and deployment.
For multiple databases you can use this tips http://markjaquith.wordpress.com/2011/06/24/wordpress-local-dev-tips/
Awesome article. I generally leave my local host as localhost/web folder
And, if I don’t want to navigate the database via phpmyadmin I can simply run the following script after installing wordpress:
oops. Paste.org Snippet
Thanks for the tutorial. Like everyone, I like the hosts tip. I had been using it to check sites before DNS was pointed to them, but had not thought of using it for local sites. I believe you need to flush your cache though when you change your hosts file. On a mac write “dscacheutil -flushcache” in the terminal.
I use Textmate with the WordPress bundle, css bundle, php bundle. And use git and github. I have not found an easy way for deployment. I have tried pagodabox.com and like it but it is too expensive for most of my sites and is not yet set up for hosting multi-sites.
I don’t use MAMP but create virtual hosts for my dev sites. I have written a tutorial for beginners on creating virtual hosts on a Mac (It is a little old so things may have changed). http://www.danielwiener.com/is/tutorials/create_virtual_host_mac And since I don’t use MAMP I install what Mac OS has not installed already, which can be a pain in the neck (especially when upgrading the OS), though there are many tutorials on how to do it and packages that make installation easier (Marc Liyanage is often the main source for these. http://www.entropy.ch/software/macosx/ )
I keep the Authentication Unique Keys and Salts and the logons the same between local and remote sites. And I have a clumsy way for syncing databases. I export the remote database using phpMyAdmin. Then I open the .sql file in my text editor and find “example.com” and replace all with “example.dev” and then import the modified .sql file into my local database with my local copy of phpMyAdmin. I “replace all” because the image url’s are hard-coded into the database. Naming the dev site with .com will alleviate this step.
I have a question for Patrick. How do you set up your staging site? And do you keep your staging site synced with your production site? Thanks.
On Windows you can flush DNS with
ipconfig /flushdns, but the Firefox add-on I linked to with automatically do that for you each time you pick a new host.My staging server DB isn’t synced, but if you don’t need to make changes on staging (i.e. all you need is to view content, not edit it) then you could use the method I mentioned in another comment to remotely connect to your production database.
Thanks for your answer. I’ll try the Firefox add-on.
But I was wondering about more of the basics for setting up a staging site. Do you create a separate folder (e.g. called “staging”) with a full WP install and synced files as your staging site? Do you use multi-site with one site as your staging site? I don’t mean to be dense but have not figured out a good way to do this. Thanks.
My staging environment is a totally unique server/host. My setup varies, but let’s just say I have a production server utilizing many domains for many clients and I have a totally separate staging server doing the same thing. It would require you having two accounts with one hosting provider, essentially.
The downside is that its more costly. The upside is that you can run 100% identical-to-production staging server and test all sorts of things AND if your production server ever goes down you can just route all traffic to staging as it is basically a backup.
Quite often you don’t have to have 2 accounts on the same server, but rather setup a development sub-domain, which you can password protect via .htaccess and .htpasswd. I also use virtualbox with Ubuntu as a linux server, where I can replicate the hosting environment for dev purposes. I think the operating system doesn’t matter as long as it’s linux. What matters is the version of PHP and its libraries as well as MySQL, IMHO.
When I’m using development sub-domains, I usually create 2 symlinks:
1 – live
2 – dev
the Apache config points both domains to their respective symlink folders. But in reality, you can point your symplink folder to any location you want. So, for example when I upgrade my WP sites to a new milestone version and I have to get my own/private plugins up to speed, I point my dev symlink to the new milestone folder, for example /wp_32. When I’m done with the upgrade, I simply remove the dev symplink and then point the /live symplink to the same folder /wp_32. It’s a seamless switch. And then, if something goes wrong (something you missed or just an unexpected issue), you can switch back your /live symlink to the other folder (read previous version) – in a matter of seconds (or as fast as you type a single string of commands).
So, to use as backup, you sync the two environments? What do you use for that? What may then work well is to use two Amazon EC2 “server” instances. I think they provide a way to have them in sync or at least back up one to the other.
Thanks. Just what I wanted to know. (but can’t afford it right now). And the domain names are the same for both production and staging servers? If so how does the client check the staging site? Thanks (hopefully my last question).
Hi,
Awesome Tutorials Thanks.
I have a similar setup where I develop on my local machine (windows+wamp)
Then I’ve my springloops account which acts as staging server
then I’ve my production server.
Changes made on local machine are pushed to the staging (springloops) where I’ve configured the auto deployment and added my production server’s credentials. So it takes only one click to push changes to the production server.
Now My question is how can I sync DB from my local machine to production server?
is there any tool that i can integrate with Springloops and my production server?
Thanks again
[...] may have ruined a weekend or two for me with this post. Check out really cool options for version control, etc while running a local development version [...]
[...] for version control hosting and the easiest deployments this side of an FTP client.Patrick Daly’s guide to developing WordPress using Beanstalk’s Subversion hosting & deployment tools is a VERY thorough overview of some best practices for using version control to develop and deploy [...]
So if I understand correctly, each theme &/or plugin will need it’s own repo?
And do you include the /branches, /tags, and /trunk directories in your /my-theme folder on your production site?
Thanks,
Owen
Great tutorial. Way too much for my simple knowledge and needs.
I did come across RAMP, a new product from Alex King of Crowd Favorite:
http://alexking.org/blog/2011/07/20/ramp-content-deploy-wordpress.
Wondering if this takes away some of the pain with staging/live environments?
Patrick. Thanks a bunch for the hosts tip. Using localhost and then trying to deploy has been a real pain especially for a novice. It took some open and closing of XAMPP and even a Windows XP restart, but I got this part working. I’m doing everything under Netbeans which seems very good. SVN tomorrow.
Thanks for the info, I’ll try some of the suggestions.
I just wanted to share my Code Editor (pc only). I used Notepad++ for years, but for some reason it started “scrambling” my code. It would look fine, but when uploaded to WordPress it would loose it’s line-breaks. This would cause problems if the code had single line comments. I read several posts on fixing the problem and made sure the encoding was correct, but the problem persisted.
I tried almost 10 different editors before I found PHP Designer 7. I’ve been very pleased with the editor. It’s lightweight but has all the features I need. Some features include: Code completion suggestions, very easy code snippets saving, built in FTP, completely customizable syntax highlighting, and appearance. It has proven a great time saver.
Link:
http://www.mpsoftware.dk/phpdesigner.php
Excellent Article. I used to manually replace localhost to the actual domain in my database file. Your hosts trick is pretty neat.
Sorry in advance for the long post.
Goal:
Local Development of WordPress 3.0 with:
1. Easy subversion updating of core WordPress files, themes and plugins
2. Using mysite.com instead of localhost for easier deployment
I had number 2 working using the advice from http://devpress.com/blog/a-really-sweet-wordpress-development-environment/ and the httpd.conf and hosts file changes listed below. Then, I moved core WordPress files into a subdirectory based on the directory structure below and item 1 worked, but item 2 is now broken. See http://ottopress.com/2011/creating-a-wordpress-site-using-svn/ re: item 1. I’m sure it has something to do with the Virtual Host setup I have, but I don’t know how to fix it.
Environment:
Windows XP
XAMPP 1.7.4
Wordpress 3.2.1
Directory Structure:
In my xampp folder, I have
/htdocs/mysite/
Under this directory, I have:
/wp_core (all wordpress files from svn with my modified .htaccess)
/wp_content (exported from /wp_core with my added plugins/themes)
wpconfig.php
.htaccess
# BEGIN WordPress
RewriteEngine On
RewriteBase /mysite/wp_core/
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /mysite/wp_core/index.php [L]
# END WordPress
httpd.conf
ServerName mysite.com
DocumentRoot “C:/xampp/htdocs/mysite/wp_core”
ServerAdmin me@mysite.com
Order Allow,Deny
Allow from all
wp-config.php
/* Added definitions to move content location to subfolder */
define( ‘WP_CONTENT_DIR’, $_SERVER['DOCUMENT_ROOT'] . ‘/mysite/wp_content’ );
define( ‘WP_CONTENT_URL’, ‘http://localhost/mysite/wp_content’);
Hosts file
127.0.0.1 localhost
127.0.0.1 mysite.com #local
# 123.4.5.6 example.com #production
Results I’m getting:
With the setup above, I get a blank screen at mysite.com. I assume this is because for some reason it’s pointing to /htdocs/mysite where there is now no index.php.
If I remove the Virtual Host code from the httpd.conf file, I get XAMPP setup by going to mysite.com which I assume is pointing to xampp/htdocs which has index.php for XAMPP. I can get to my WordPress site either by using mysite/wp_core or localhost/mysite/wp_core, but I can’t seem to get Virtual Host to resolve to mysite.com and see the site.
So you have
/htdocs/mysite/wp_core/and/htdocs/mysite/wp_content/in the same directory?You should have
/htdocs/mysite/wp_core/wp-content/. You can keepwp-contentas part of your core structure because when you update WordPress via SVN it won’t touch your custom stuff.Patrick, Thanks. Well I solved my problem, but still kept the directory structure. It did require me to make changes to wpconfig, some settings in the settings table (via admin if I had done it correctly) and I used the vhost setup recommended by XAMPP. If it will help anyone else, the thread where I got this resolved is at http://www.apachefriends.org/f/viewtopic.php?f=16&t=47872
I hear what you say about SVN, but it makes me curious why so many posts out there about moving wpcontent out of wpcore? Here’s the most recent one I based my work on http://ottopress.com/2011/creating-a-wordpress-site-using-svn/
I’ve had some problems with TortoiseSVN if I have a folder that’s supposed to be external, but it’s got non-external files and folders in it. Not that much different that wpcore given .htaccess gets added.
I’ll have to try it.
I see his point, but as long as you don’t have any directories in
wp-contentyou won’t ever have any conflicts (i.e. don’t make a theme namedtwentyelevenand don’t make changes in that directory either). Instead, it seems to add a lot more work and further change your local setup from what will exist remotely.All that matters though, is that you are happy with a working environment!
wouldn’t a tool such as navicat take care of the DB synchronization?
http://www.navicat.com/en/
I do not see how this helps with database sync – if you develop plugins or just install new plugins in dev and / or staging that do their own database stuff, how does this help? Not really. Deployment is still something else than configuration management – bringing this tip down it is just simple config file handling and copying files – your whole post totally ignores the databse – to say the truth writing about deployment and totally igbnoring database issues for an app like wordpress is not really an a-grade work – it is a fail!
Of course you can just dump your database and reload it to live server – hopefully you have had no comments on the live side meanwhile… get it? There is a little bit more to it than just dumping db.
These problems occur, because there is no real dev / staging / live cycle support built into wordpress itself – but for every major webapp you absolutely need a sane deployment toolset, one that goes far behind simple config file renaming / changing and rsyncing files to server.
Seems like many wordpress devs, especially the advanced ones, should urgently take a few weeks trip into rails- or django-land to learn about these issues and which solutions already exist – an adaption back to wordpress-world based on these experiences would be very appreciated and a hug step for the whole wp community.
To be constructive: read about git (hell, forget about svn!) , read about fabric (python) or capistrano (rails) and take a look on what migrations are.
Then redesign wordpress database layer to support migrations in any way and built a sane deployment-cycle on top of this, with git and support for rollbacks, updates, different site settings etc. etc.
[...] WordPress Development Environment. [...]
I suggest checking out this cool plugin: http://code.google.com/p/deploymint/
Dev/staging/production using Multisite.
[...] This tutorial is from Patrick Daly of DevPress. Basically the tutorial assumes that you’ve already used WAMP, XAMPP, MAMP or the like to set up a local development environment. Then you’ll learn how to use your real domain and edit your HOSTS file and Apache’s httpd.conf. Patrick also points you in the right direction for source control and deployment. This may be the perfect staging environment for you. Read the tutorial at: A really sweet WordPress development environment [...]
[...] This tutorial is from Patrick Daly of DevPress. Basically the tutorial assumes that you’ve already used WAMP, XAMPP, MAMP or the like to set up a local development environment. Then you’ll learn how to use your real domain and edit your HOSTS file and Apache’s httpd.conf. Patrick also points you in the right direction for source control and deployment. This may be the perfect staging environment for you. Read the tutorial at: A really sweet WordPress development environment [...]
Really interesting article and enjoyed reading this a lot. I am very new to Source Control and have created the free Beanstalkapp account to give it a try. However I am completely lost as to how to get this working.
I would love a step by step tutorial on exactly how to set all of this up with screenshots or a screencast. I am sure there are others out there who want to take the next step with development and deployment but I just not sure how.
I use a Mac but I am sure a Mac/Windows tutorial would be great.
I just use Netbeans over a debian system, configuring the lamp server that you can install from the repositories (which gives me something as close as possible as the production server), also for source control and project management I’m using http://www.xp-dev.com; a nice agile tool. But regarding IDEs, I reckon is something about habits and also more about the “indian than the arrow” :D
[...] 本教程出自DevPress。假设你已经在自己的电脑系统上搭建了WAMP, XAMPP, MAMP 并安装了WordPress,此教程会更深一层讲述如何在本地的WordPress上使用你的真实域名、如何编辑HOSTS 及 Apache服务器上的 httpd.conf 文件等。详细的教程请看这篇: A really sweet WordPress development environment. [...]
commercial rainwater and harvesting commercial services related to The management of Stormwater and recent with climate change creating unexpected rainfall events resulting in localised flooding. so hare you will get provide best services.
Should this workflow works also for multisite installation of wordpress?
Do you have any recommendations for on optimal VM production environment setup? I have Ubuntu, Apache2, MySQL, PHP5, SVN, SSH, etc. but I need to optimized the Apache client processes, Mods, etc. The threads keep locking up.
You may wish to check into my DesktopServer project. It automates much of this (sans SVN) and it’s free. The premium version has a lot of neat features but the free version is also loaded and even includes a copy feature to jump start your projects. Designers using Dreamweaver may also like the enhanced support for Live View so that you can edit and view your themes directly, reducing a lot of the flipping back n’ forth to the root’s index.php.
Getting Started with DesktopServer
[...] A really sweet WordPress development environment [...]
[...] WordPress Developer Environment – Share this:FacebookEmailShareRedditDiggStumbleUponPrint [...]