This entire tutorial is done after entering the ’sudo -i’ command which allows us to act as the SUPER-USER for the entirety of our terminal session.
1
sudo -i
1) Install the required modules from the command line
1
apt-get install apache2 mysql-server mysql-client php5 php5-cli php5-mysql
2) Change the directory to /etc/apache2/sites-available
1
cd /etc/apache2/sites-available
3) If you run the ‘ls’ command while in the sites-available directory you should see the following
1
ls
Output
1
default default-ssl
4) Copy the ‘default’ config to a site specific config. For this tutorial I am using dev.scottfaisal.com.
1
cp default dev.scottfaisal.com.conf
5) Make the application directory
1
mkdir /var/dev.scottfaisal.com
6) Open the file with an editor of your choosing. I prefer NANO.
1
nano dev.scottfaisal.com.conf
The output below is the entire file but I will discuss certain parts that we will need to edit.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>
7) Add the name of the server. This will be the name that you type in the URL field of your web browser (IE: Firefox)
1 2 3 4 5 6 7
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName dev.scottfaisal.com ...
8 ) Point the Virtual host to the correct directory
1 2 3 4 5 6 7 8 9 10 11 12 13
... DocumentRoot /var/dev.scottfaisal.com <Directory /> Options FollowSymLinks AllowOverride None </Directory> ...
9) Also make the change here.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
... <Directory /var/dev.scottfaisal.com/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ...
10) So this is what your dev.scottfaisal.com.conf file should look like when you are done. Write/Quite the file and we will move on.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName dev.scottfaisal.com DocumentRoot /var/dev.scottfaisal.com <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/dev.scottfaisal.com/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>
10a) IMPORTANT! Make a symbolic link in the sites-enabled directory
1
ln -s /etc/apache2/sites-available/dev.scottfaisal.com.conf /etc/apache2/sites-enabled/000-dev.scottfaisal.com.conf
11) We need to edit our /etc/hosts file
1
nano /etc/hosts
Output
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
127.0.0.1Â Â Â Â Â Â localhost 127.0.1.1Â Â Â Â Â Â servername # The following lines are desirable for IPv6 capable hosts ::1Â Â Â Â localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
12) Right beneath the ‘localhost’ definition, add the following
1
127.0.0.1Â Â Â Â Â dev.scottfaisal.com
13) The complete file looks like this.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
127.0.0.1Â Â Â Â Â Â localhost 127.0.0.1Â Â Â Â Â Â dev.scottfaisal.com 127.0.1.1Â Â Â Â Â Â servername # The following lines are desirable for IPv6 capable hosts ::1Â Â Â Â localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
14) Create an index.php file in /var/dev.scottfaisal.com for testing purposes.
1
nano /var/dev.scottfaisal.com/index.php
Contents of .php file.
1 2 3 4 5 6 7 8 9
<?php
echo 'This is a test!!!!';
phpinfo();
?>
15) Reboot the apache2 process.
1
/etc/init.d/apache2 restart
16) Now open up your web browser and enter dev.scottfaisal.com into the URL bar and it should work!
UPDATE: I forgot to mention that in this environment, I like to configure log files for each virtual host. This is our current dev.scottfaisal.com file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName dev.scottfaisal.com DocumentRoot /var/dev.scottfaisal.com <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/dev.scottfaisal.com/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>
Just change the ErrorLog and CustomLog names to match the virtual host.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
... ErrorLog /var/log/apache2/dev.scottfaisal.com_error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/dev.scottfaisal.com_access.log combined ... </VirtualHost>
Great writeup just fyi theres also a shorter method posted here on a ubuntu wiki: https://help.ubuntu.com/community/Drupal