There are many all in one packages,  which will install all together like WAMP  or XAMPP, but I do not like  them. In my opinion, they make a lot of uncontrolled  rubbish on the  computer and they are not often up to date. But they are good as  a very  fast solution for people who do not want to learn how it all works and   they only need the fastest way to install local web server, to test  their  projects.
This tutorial is more complicated, than  WAMP or XAMPP solution, but the  biggest advantage is that you have all  over your control – because you configure  all by yourself. And you can  be always up to date and enjoy the latest fixes and  improvements in  Apache, PHP and MySQL packages. As soon as you master this tut,  you  will agree that local web server can be installed, using original  packages,  in few minutes, like the WAMP or XAMPP. Updating with new  packages is also  really simple. Just install the new package over the  existing one and that is  it.
Who Should read this Tutorial?
This tutorial is great for web  developers and web designers, who needs real-time  testing of web-based  applications or themes for WordPress, Joomla, Drupal  without a need of  internet connection or web hosting. It should also cover and  beware of  all most important mistakes and unexpected errors, which sometimes   happen and which other tutorials do not cover. So users who will follow  this  tutorial step by step, should have working localhost web server in  99,9 %,  without any unexpected errors. I decided to write this  tutorial, because I  followed many tutorials on the web, but I was not  able to get all work for the  first time, so I spent many hours of  searching and fixing unexpected errors,  which are all covered in this  tutorial.
Quotes in tutorial
I often use quotes to put syntax,  commands, login names, passwords, paths and  names of the folders  between them. So whenever you see quotes in the tutorial,  always use  only what is between the quotes, it will be marked as bold text too.   Sometimes there are quotes between quotes, theese quotes (between  quotes) are  important to use them in configuration files.
Requirements
This tutorial was made on 32bit Windows 7  Ultimate in VMware Player, but I am  using it on a real installation of  64bit Windows 7 Ultimate without any problem.  I have also used it in  on 64bit version of Windows Vista Ultimate before. So in  that case it  should work on any Microsoft operating system. Even if the packages  are  32bit they do work on 64bit operating systems without any  incompatibility  issues. There are unofficial 64bit packages for Apache  and PHP, but their  installation is much complicated and they are not  often updated. Only official  support for 64bit operating systems has  MySQL, but it would not work properly  with 32bit Apache and PHP.
Downloads
Optional – Wordpress  2.9.2 
If you find any new versions on these  packages, you can use them too, the  steps will be the same.
Pre-installation Steps
- For better orientation I often create specific folder structure for   installation and for the folder where my test web pages are stored. I  recommend  you to follow the same structure; otherwise you will have to  change all paths to  your own settings during the tutorial steps. First  directory I create is  directory called “dev” (from the  word development) in the root  of “C:\“. Second  directory I create is called  “progs” in “C:\dev\”  and third is called  “www” in “C:\dev\”  So after that you should  have three new directories.
 C:\dev\
 C:\dev\progs\ – for the installation of Apache, PHP and MySQL
 C:\dev\www\ – this folder is like the ftp folder on your hosting, so you will extract all your webpages here
- Users of Windows XP can skip this step! It is for Vista and Windows 7 users! Disable UAC! You will do it by clicking on Start>Control Panel>User Accounts and then click on “Change User Account Control settings”. On the next window (remembering the default position of the slider) pull the slider down to “Never notify me when:…”, click on OK and close the windows. Vista users – just turn off User Account Control. Do not restart the computer now! For security reasons the slider should be reverted to default settings after successful installation of Apache, PHP and MySQL.
- Modify the Windows hosts file. In some cases I could not get the installation work until I did this step. I did not test this on Windows XP, so XP users can also probably skip this step, because in my opinion it is not needed. This file call hosts is often placed in “C:\Windows\System32\drivers\etc\“, it is hidden and it is read only. To see hidden files go to Start>Control Panel>Folder Options, click on tab “View”, select “Show hidden files, folders, and drives” and then click OK. On x64 systems it will not be visible in 3rd party 32bit file managers like Total Commander even if you set settings to see hidden files and folders, because 32bit programs can not see 64bit files and folders. So navigate to this directory through Windows native file Explorer to get to hosts file properly. Open the file in notepad, search for the line: “# 127.0.0.1 localhost“, delete the “#” symbol, save the file and now you can now restart the computer to apply both settings.
Now we are done with pre-installation  Steps.
Apache installation and configuration
Run the installation of Apache, click  next, check that you accept the terms,  click next and next again. On  the next screen fill the Server settings, like on  the picture below and  click next again.
On the next page select Custom Setup  Type and click next. All features leave as  they are, change only the  installation path to  “C:\dev\progs\Apache\” and click  Next. Now click install. After  the installation you should see new icon  on a windows taskbar with small green  triangle which signalizes that  apache is installed and running.
To test it properly open Internet  Explorer, Firefox or whatever browser you  are using and write  “localhost” to your address bar, if everything went well you  should see  “It works!“.
Now we need to edit Apache configuration  file! Go to the folder  “C:\dev\progs\Apache\conf\”  and open the file  “httpd.conf” in Notepad. For better,  more comfortable editing,  I recommend advanced text editor like Adobe  Dreamweaver or free PSPad,  because you can see line numbers and  navigation through the text file  will be more comfortable.
- Go to line 117 or search for “#LoadModule rewrite_module modules/mod_rewrite.so” and delete the “#” at the start of the line – in other words uncomment the line (good for nice URLs)
- Go to line 178 or search for “DocumentRoot “C:/dev/progs/Apache/htdocs”” and replace it with “DocumentRoot “C:/dev/www”“
- Go to line 205 or search for “progs/Apache/htdocs”>”  and replace it with  ““ 
- Go to line 208 or search for “Options Indexes FollowSymLinks” and replace it with “Options Includes Indexes FollowSymLinks MultiViews“
- Go to line 225 or search for “AllowOverride None” and replace it with “AllowOverride All“
- Go to line 240 or search for “DirectoryIndex index.html” and replace it with “DirectoryIndex index.html index.htm index.php“
- Go to line 382 or search for “AddType application/x-gzip .gz .tgz” do not replace anything, just add new line below this line with text “AddType application/x-httpd-php .php“
That is it, save the file, exit the  editor and restart Apache. You can do it  by clicking on the taskbar  Apache icon and then move the cursor on the Apache  2.2 and click  restart. At this state if you point your browser again to  “localhost”  you wont see “It works!” but just something like  “Index Of”. Do not  worry, it is due to changing the directory from where the  Apache  translates the webpages. Apache installation and configuration is now   completed!
PHP Installation and configuration
Run the downloaded PHP install package.  Click Next, accept the terms and  click Next again. On the next screen  click Browse and navigate the installation  program to install PHP to “C:\dev\progs\PHP\”  and click Next.  Now select Apache 2.2.x Module and click Next again.  At this step you need to  tell the installation program where the Apache  configuration file (we have  edited in apache configuration) is. So  navigate the installation by clicking on  the button Browse to the  directory “C:\dev\progs\Apache\conf\”  and click Next.  On the next screen click Next again and then on the Install. If  all  went well you should see following new lines at the end of Apache   configuration file “httpd.conf“:
#BEGIN PHP INSTALLER EDITS –  REMOVE ONLY ON UNINSTALL
PHPIniDir “C:/dev/progs/PHP/”
LoadModule php5_module “C:/dev/progs/PHP/php5apache2_2.dll”
#END PHP INSTALLER EDITS – REMOVE ONLY ON UNINSTALL
PHPIniDir “C:/dev/progs/PHP/”
LoadModule php5_module “C:/dev/progs/PHP/php5apache2_2.dll”
#END PHP INSTALLER EDITS – REMOVE ONLY ON UNINSTALL
Now we need to configure the PHP  configuration file  “php.ini” which is in the folder  “C:\dev\progs\PHP\“,  so open it in Notepad, PSPad or  Dreamweaver and change the lines like  this (the PHP should also work with the  original php.ini, but these  changes are recommended for more comfortable using):
- Go to line 458 or search for “memory_limit = 128M” and change it to “memory_limit = 512M” (define how much memory can PHP use)
- Go to line 531 or search for “display_errors = Off” and change it to “display_errors = On” (if there are some errors it will be shown in web browser, if this settings are set to on)
- Go to line 542 or search for “display_startup_errors = Off” and change it to “display_startup_errors = On“
- Go to line 728 or search for “post_max_size = 8M” and change it to “post_max_size = 100M“
- Go to line 879 or search for “upload_max_filesize = 2M” and change it to “upload_max_filesize = 2000M“
- Go to line 959 or search for “;date.timezone =” and replace it with “date.timezone = “XXX/XXX”“. Where the XXX/XXX means your actual position, for me it is Europe/Prague, to find your position look here. For example for people living in Brazil – Sao Paulo, it should look like this “date.timezone = “America/Sao_Paulo”“
That is it save the file, exit editor  and restart Apache. Now we need to  test if PHP works. So navigate to  directory “C:\dev\www\” and  create new text file  called “index.php” and put this  
phpinfo();  ?> as a text inside, save  the file and exit. Open  your web browser and point it to  “localhost“. If PHP  is successfully installed you should see  the same like on the following  picture.MySQL Installation and configuration
This is the easiest part, because all is  configured in installation wizard. Just  run the MySQL installation  file. Click next, choose Custom and then click Next,  change the  installation directory to “C:\dev\progs\MySQL\“,  click  Next once more and then Install. After the installation completes you  will  see other screen, so once again click, Next, Next, check “Configure  the  MySQL server now” and uncheck “Register the MySQL  server  now“, then click Finish. On the next screen click  Next, then select  “Detailed Configuration” and click  Next, select  “Developer Machine” and click Next,  select  “Multifunctional Database” and click Next,  other screen leave  as is and click Next, select “Decision  Support (DSS)/OLAP” and  click Next. Now check “Enable  TCP/IP Networking“, leave port  number 3306,  check “Add firewall exception for this  port“, check “Enable  Strict Mode” then click Next.  Select “Best Choice For  Multilingualism” and click Next. Check  “Install As  Windows Service“, select service name  “MySQL5“,  check “Launch the MySQL Server  automatically” and  check “Include Bin Directory in Windows  PATH” then  click Next. Check “Modify Security  Settings” and as a “New  root password” use  “root” without the  quotes, confirm password, other things leave  as they are and click  Next. Last step is to apply all settings we have done, so  click on  Execute and wait until you see this:
If you do not see this picture there is  something wrong. And it should be many  things. I will try to help in  comments. But I expect there will not be any  problems.
phpMyAdmin installation and configuration
phpMyAdmin is web-based MySQL database  manager. For me personally it is the  best and easiest solution for  managing and creating databases even if it runs on  localhost. There is a  solution from MySQL developers called MySQL GUI Tools,  which runs on  Windows operating systems, but it is not providing the easiest  survey  and it is a bit chaotic for me. Also many users using web hosting   services for their web pages knows phpMyAdmin very well. I often install   Wordpress, Drupal, Joomla and vBulletin together to test themes etc.  and I use  single database for each CMS so that is why I use phpMyAdmin,  which allows me to  create databases in friendly way without knowledge  of MySQL command line.
We will start with creating a directory  called “pma” in  “C:\dev\www\“. Now  open the zip file with phpMyAdmin and  extract all content of directory   “phpMyAdmin-3.3.2-all-languages” to “pma”   directory. Now open your favourite web browser and point it to  “localhost/pma”  if you are lucky, you should see phpMyAdmin  login screen. You can  login to phpMyAdmin by entering “root” as  login name  and password.
Sometimes on Vista and Windows 7, maybe  on XPs operating systems too, you  will get some kind of error saying  that PHP is not installed or configured  properly. This is one of the  very often unexpected errors which I was searching  for a solution for  many hours, before I solved it! The solution could be simple  – first is  go to the directory “C:\dev\progs\PHP\“, find file   called “php5ts.dll” and copy it to  “C:\Windows\”  and “C:\Windows\System32\”  directories and restart  the Apache. Maybe Apache will refuse to start and it  will show some  error, if so, ignore the error and start him again, it should  work now!  :) After this fix you should see phpMyAdmin login page by pointing   your browser to “localhost/pma“. If the first solution  did not  help the problem has a lot to do with Windows write folder  permissions and PHPs  session save path and Temp directories. PHP have  no rights to write to desired  Temp directories. This problem is really  individual and if someone will report  it in comments I will help  him/her individually.
So log in to phpMyAdmin and you will get  to the phpMyAdmin database  administration interface on the left panel,  you will see actual databases, which  is important to run MySQL  properly, so do not delete them at any time. On the  right side you will  see some information about your web server, you can change a  theme or  language or create new database. On the bottom you will see some   errors, which we are going to fix. For basic use it is not necessary,  but I  can’t stand something showing errors :-) First we must create  some tables to  unlock phpMyAdmin’s full potential, so at the left panel  click on database  called “test” and then click on the  “Import“.
After that click on Browse button and  navigate phpMyAdmin to folder  “C:\dev\www\pma\scripts\”  and select file called  “create_tables.sql” and in  phpMyAdmin right bottom corner click  on “Go“. It will  create new database called phpmyadmin with 9  tables. It will be used  for phpMyAdmin advanced features, like creating PDFs  etc. You can close  the browser and look forward for the last part – editing  phpMyAdmin  configuration file :-). So go to the folder  “C:\dev\www\pma\”  and open file  “config.sample.inc.php” in Notepad,  Dreamweaver or PSPad.
- We need to edit line 18 defining the blowfish secret passphrase. It is completely up to you what you enter between the quotes so it can look for example like this “$cfg['blowfish_secret'] = ‘ 1M41Oie6q9E3w#7U0M^3f3Tyzr5r93 ‘;“
- Go to line 36 and replace “$cfg['Servers'][$i]['extension'] = ‘mysql’;” with “$cfg['Servers'][$i]['extension'] = ‘mysqli’;”
- Now we need to delete “//” at the start of the  following  lines:
 $cfg['Servers'][$i]['controluser'] = ‘root’; (also change default pma user to root)
 $cfg['Servers'][$i]['controlpass'] = ‘root’; (also change default pmapass password to root)
 $cfg['Servers'][$i]['pmadb'] = ‘phpmyadmin’;
 $cfg['Servers'][$i]['bookmarktable'] = ‘pma_bookmark’;
 $cfg['Servers'][$i]['relation'] = ‘pma_relation’;
 $cfg['Servers'][$i]['table_info'] = ‘pma_table_info’;
 $cfg['Servers'][$i]['table_coords'] = ‘pma_table_coords’;
 $cfg['Servers'][$i]['pdf_pages'] = ‘pma_pdf_pages’;
 $cfg['Servers'][$i]['column_info'] = ‘pma_column_info’;
 $cfg['Servers'][$i]['history'] = ‘pma_history’;
 $cfg['Servers'][$i]['tracking'] = ‘pma_tracking’;
 $cfg['Servers'][$i]['designer_coords'] = ‘pma_designer_coords’;
Save the file in the same folder as “config.inc.php”  and  exit the editor. phpMyAdmin should now work without any errors and  we are done  with whole installation of localhost web server. Now you  can restore your UAC  settings as we were talking about at the  beginning.
Optional – installing CMS (WordPress 2.9.2)
First we must create new database for  WordPress, so login to phpMyAdmin and  under the text “Create  New Database” fill the name  “WordPress” and  click on Create. Now go to folder  “C:\dev\www\” and  create new folder called  “wp“. If you have downloaded  the WordPress 2.9.2 installation  open the zip file and extract all  content of the WordPress directory to  “C:\dev\www\wp\“.  Open your browser and point it to  “localhost/wp“, If  all was done well, you should see first  WordPress installation page, so  click on “Create a Configuration  File” and then on “Lets  go!” On the next page. On the  following page fill database  name, which is “WordPress” and  User Name and Password  which is the “root” for both. This is  password for  WordPress to write tables in the database not for accessing CMS  admin  panel. All other values can stay as they are, click  “Submit”  and then “Run the Install“. Fill the  Blog title, as  you wish and in the email field, fill any true email address,  sending  emails will not work because our Apache is not configured for sending   emails, but who cares? We do not need it on localhost! ;-)Then continue  with  install. On the next screen it will be shown your login and  password, write it  down somewhere and click on “Log In”  to get to the WordPress  admin interface, you can change here the  password to something easier to  remember. You are done. If you point  your browser now to  “localhost/wp” you will see  something like this:
Now you now basics of how to install any  other CMS you prefer, installations  of Drupal or Joomla are very  similar.
Conclusion
I told you that it is not so complicated  ;-) If you are like me, you like a  good coffee, in your favourite café  (which unfortunately has no internet  connection), you like to work in  company of people and not being alone at home  or office, you will  probably appreciate this tutorial. Most of you are most  likely using  WAMP or XAMPP solutions, some of you are using my solution in most   advanced way, which Apache configurations offers, but I know many web  designers  and web developers, who do not know about these solutions and  this tutorial is  exactly for them.
If you are facing any problem, then let  me know and I will try my best to help you.
 
 
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.