I installed the ubuntu 12.04 server edition for my server pc . i had installed lamp server. i need to change the var/www location to my secondary hard disk location. i was configured so many time to at gedit /etc/apache2/sites-available/default here is my code
<VirtualHost *:80> ServerAdmin webmaster@localhost #DocumentRoot /var/www DocumentRoot /media/myserver/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> #<Directory /var/www/> <Directory /media/myserver/> 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 ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/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>and also used
sudo chown -R var/www /media/myserver/and
chmod -R 755 /media/myserver/still i was not able to connect my /media/myserver and my browser show the following message
Forbidden
You don't have permission to access / on this server.Please tell anyone how to mount myserver at my var/www, thanks advance
38 Answers
You'll have to edit apache2.conf and 000-default.conf to change the document root of apache.
The Apache server is installed on /var/www/html.This is the default root directory of apache.
Either change the root directory of Apache or move the project to /var/www/html.
To change Apache's root directory, run:
cd /etc/apache2/sites-availableThen open the
000-default.conffile using the command:nano 000-default.confEdit the
DocumentRootoption:DocumentRoot /path/to/my/projectThen restart the apache server:
sudo service apache2 restart
If you get Forbidden You don't have permission to access / on this server after changing the root of apache then do follow these steps
Find the
apache2.conflocated in/etc/apache2and open it using:nano apache2.confUse Ctrl+W and search for Directory (It should be in line 153)
It should look like this
<Directory /> Options Indexes FollowSymLinks AllowOverride All Require all denied </Directory>Change it to
<Directory /> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted </Directory>Restart apache
sudo service apache2 restart
I made a script that changes apache root in a single command. You can find it on my github.
1Maybe a little bit late. But still..
You should edit your directory permissions in apache.conf under /etc/apache2
Search for this
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted
</Directory>and add this code under of it, which gives the permission to access your directory
<Directory /media/myserver/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> Simply change the document root in your activated configuration. /etc/apache2/sites-enabled/000-default and then Make sure reloading your apache.
So try with this:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /media/myserver/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /media/myserver/> 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 ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>Then the proper permission should be given like this:
sudo adduser <username> www-data
sudo chown -R www-data:www-data /media/myserver/
sudo chmod -R g+rw /media/myserver/ 3 you modify
apache2.conf. Replace/var/www/with/your/path:<Directory /your/path/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>Modify the
000-default.conffile:DocumentRoot /your/path/Change the ownership of the directories to yourself from file manager or terminal (e.g.
sudo chown pi: path). Without this you will get this error message:You don't have permission to access / on this server.
As a quick workaround (safe and quick) you can make the mounting point of your external hard driver to the default root directory ( /var/www by default).
Assigning the mounting point to a per-existing directory is safe but the old content can't be reached unless you unmounted the driver.
To learn more how to create a mounting point refer to this.
1sudo gedit etc/apache2/apache2.conf
add this Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all
in virtual configuration :/etc/apache2/sites-available/site.conf
ServerAdmin
ServerName anilrmg.localhost.com
ServerAlias
DocumentRoot /home/anilrmg/projects/code/anilrmgsudo a2dissite 000-default.conf
For those who use VirtualBox guest additions and get you don't have permission to access /on this server despite of everything mentioned above:
If you are trying to set the Apache document root folder to a VirtualBox shared folder,and you have tried everything above and that did not help, there is one more step.
In short, the solution is to add user 'www-data' to the group 'vboxsf':
sudo usermod -a -G vboxsf www-dataYou can not change the owner and/or the group of the VirtualBox shared folder, but the solution above worked well for me.
I had to make sure the whole path was granted Apache.
chown www-data /media;
chown www-data /media/MNT/;
chown www-data /media/MNT/DISK;
chown www-data /media/MNT/DISK/www-root;