我最近从 Windows 转到了 Ubuntu 16.04,并尝试设置 Web 开发环境。我成功安装了 apache、mysql 和 php,并且 html 和 php(通过 sudo nano 创建了一个测试脚本)都完美地呈现了出来/var/www
。
然后我尝试通过 sublime text 在目录中创建一个新文件,/var/www
结果发现保存文件时出现拒绝访问错误。因此,我找到了一篇关于权限等的新文章,我意识到修改该目录的权限可能不是一个好主意。
我查阅了有关如何将 apache 文档根目录移到其他地方的文章。然后我在下创建了一个新的项目/web 目录,/home/user
并更改了中的 DocumentRoot /etc/apache2/sites-available/000-default.conf
(我使用的是 apache 2.4.18)。我在中做了相关更改/etc/apache2/apache2.conf
以更改<Directory>
路径。重新启动 apache 后,DocuemntRoot
更改了,但它没有呈现任何 php。即使是之前通过 url 工作的 phpmyadminhttp://localhost/phpmyadmin不再起作用。
在 /etc/apache2/sites-available/000-default.conf 中更改
DocumentRoot /var/www/html
为:
DocumentRoot /home/{user}/projects/web
在 /etc/apache2/apache2.conf 中更改
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
为:
<Directory /home/{user}/projects/web/> Options Indexes FollowSymLinks AllowOverride None Require all granted</Directory>
有人能帮助我如何更改 DocumentRoot 并且仍让 php 和 phpmyadmin 正常工作吗?
答案1
首先修复损坏的 Apache2
您显然已经破坏了 Apache2。您应该使用默认主机设置,并为您想要的自定义根目录创建虚拟主机。删除或重命名您已编辑的配置文件并恢复原始文件。
使用默认000-default.conf
文件作为模板。将其复制到您的虚拟主机的名称并修改您的自定义文件。
您可以按照以下步骤重命名文件:
$ cd /etc/apache2/sites-available
$ sudo mv 000-default.conf mysite.conf
$ cd /etc/apache2
$ sudo mv apache2.conf apache2.conf.test
现在使用此命令行恢复默认文件:
$ sudo apt -o Dpkg::Options::="--force-confmiss" install --reinstall apache2
现在创建您的虚拟主机“mysite.com”。您可以将 替换/home/web/mysite
为任何目录。根据您的情况,您可以使用/home/{user}/projects/web
。
$ cd /etc/apache2/sites-available
$ sudo cp 000-default.conf mysite.conf
$ sudo mkdir -p /home/web/mysite/www
$ sudo mkdir -p /home/web/mysite/log
如果我的站点主机不存在,请使用以下命令在本地创建它:
$ gksudo gedit /etc/hosts
将其添加到hosts
文件中:
127.0.0.1 mysite.com
现在编辑您的我的站点配置文件文件指向你的文档根目录选择。
$ pksudo gedit /etc/apache2/sites-available/mysite.conf
对此文件进行以下更改。这是该000-default.conf
文件与您新创建的mysite.conf
文件之间的差异。差异在大胆的类型。
<虚拟主机 *:80> # ServerName 指令设置请求方案、主机名和端口 # 服务器用来标识自己。这在创建时使用 # 重定向 URL。在虚拟主机上下文中,ServerName # 指定请求的 Host: 标头中必须出现的主机名 # 匹配此虚拟主机。对于默认虚拟主机(此文件),此 # 值不是决定性的,因为无论如何它都被用作最后的手段主机。 # 但是,您必须为任何其他虚拟主机明确设置它。 服务器名称 mysite.com ServerAdmin webmaster@localhost DocumentRoot /home/web/mysite/www <目录 /> 选项 +FollowSymLinks +ExecCGI +Includes 要求所有已授予 </目录> # 可用的日志级别:trace8,...,trace1,debug,info,notice,warn, # 错误,严重,警报,紧急。 # 也可以为特定 # 模块,例如 #日志级别 info ssl:warn 错误日志 /home/web/mysite/log/error.log CustomLog /home/web/mysite//access.log 合并 # 对于 conf-available/ 中的大多数配置文件,它们是 # 在全球范围内启用或禁用,可以 # 只包含一个特定虚拟主机的行。例如 # 以下行仅为该主机启用 CGI 配置 # 在使用“a2disconf”全局禁用它之后。 #包括conf-available/serve-cgi-bin.conf </虚拟主机> # vim: 语法=apache ts=4 sw=4 sts=4 sr noet
现在使用以下命令启用新站点:
$ sudo a2ensite mysite.conf
当对阿帕奇配置文件使用以下命令重新启动服务:
$ sudo systemctl restart apache2
对 VirtualHost 的目录和文件的写入权限:
您可以使用命令chown
和chgrp
更改 的文件和文件夹的所有者/home/web/mysite/www
。如果它们归您的用户 ID 所有,您将拥有对文件和文件夹的读写权限。
您还可以创建特定的团体并将用户添加到特定组,以便该组的用户对文件和文件夹具有读/写访问权限。
与授予其他用户对您空间中的文件和文件夹的组访问权限相比,使用后一种考虑可能是一种更好的安全选择/home
。