Apache 2 切换目录或从不同端口下的多个目录运行的正确方法如下:
对于 Apache 2,配置文件位于 /etc/apache2 下,不像旧版本那样使用单个配置文件,而是拆分成更小的配置文件,/etc/apache2/apache2.conf 是主要配置文件。为了提供来自不同目录的文件,我们需要一个新的虚拟主机 conf 文件。虚拟主机配置文件位于/etc/apache2/sites-available(不要在启用站点的情况下编辑文件)。默认的 Apache 安装使用虚拟主机配置文件000-default.conf。
首先创建一个新的虚拟主机文件,方法是复制 Apache 默认安装使用的默认虚拟主机文件(在 localhost 端口 80 上运行的虚拟主机文件)。切换到目录/etc/apache2/sites-available 然后用sudo cp 000-default.conf example.com.conf 复制,现在用sudo gedit example.com.conf 编辑文件到:
<VirtualHost *:80>
ServerAdmin example@localhost
DocumentRoot /home/ubuntu/example.com
</VirtualHost>
为简洁起见,我已从上述文件中删除了不重要的行。这里DocumentRoot 是要提供网站文件的目录的路径,例如index.html。
创建您要从中提供文件的目录,例如mkdir example.com,并更改目录的所有者和默认组,例如,如果您的登录用户名为ubuntu,则将权限更改为sudo chown ubuntu:www-data example.com .这将授予用户 ubuntu 的完全访问权限,并允许对组 www-data 的读取和执行访问权限。
现在通过发出命令sudo gedit apache2.conf 编辑Apache 配置文件/etc/apache2/apache2.conf 并找到<Directory /var/www/> 和结束标记</Directory> 下方的行,添加以下内容:
<Directory /home/ubuntu/example.com>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
现在有两个命令可以启用或禁用虚拟主机配置文件,分别是a2ensite 和a2dissite。现在由于我们的example.com.conf 文件使用与默认配置文件(000-default.conf)相同的端口(@987654345@),我们必须通过发出命令sudo a2dissite 000-default.conf 禁用默认配置文件并启用我们的虚拟主机配置文件sudo a2ensite example.com.conf
现在使用命令sudo service apache2 restart 重新启动或重新加载服务器。现在 Apache 在默认端口 80 上的 localhost 提供目录 example.com 中的文件。
a2ensite 命令基本上是在启用站点的目录下创建一个指向配置文件的符号链接。
如this answer 中指出的,请勿编辑启用站点(或启用 *)的目录中的文件。
更改端口并从不同端口上的多个目录运行:
现在,如果您需要在不同的端口上运行目录,请将虚拟主机文件编辑为:将端口号从 80 更改为 8080:
<VirtualHost *:8080>
ServerAdmin user@localhost
DocumentRoot /home/ubuntu/work
</VirtualHost>
编辑/etc/apache2/ports.conf 并在Listen 80 行下方添加Listen 8080
现在我们可以启用在端口 80 上运行的默认虚拟主机配置文件,因为 example.com 目录使用端口 8080,如 sudo a2ensite 000-default.conf。
现在使用命令sudo service apache2 restart 重新启动或重新加载服务器。现在这两个目录都可以从localhost 和localhost:8080 访问。