我当前的设置是 /var/www/domain/*,使用 apache2 和 nginx 作为反向代理。我想将站点目录移动到 /home/user/html/* 下,以便每个网站都可以让具有该文件夹权限的用户访问。
你能给我指个地方吗?我试过找很多指南,但都没有找到!
答案1
使用默认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
现在创建您的虚拟主机“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
如果mysite.com
主机不存在,请使用以下命令在本地创建它:
$ sudo nano /etc/hosts
将其添加到hosts
文件中:
127.0.0.1 mysite.com
现在编辑您的mysite.conf
文件以指向您的Document Root
选择。
$ sudo nano /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
当更改Apache
配置文件时,请使用以下命令重新启动服务:
$ sudo systemctl restart apache2
对 VirtualHost 的目录和文件的写入权限:
您可以使用命令chown
和chgrp
更改 的文件和文件夹的所有者/home/web/mysite/www
。如果它们归您的用户 ID 所有,您将拥有对文件和文件夹的读写权限。
您还可以创建一个特定的group
组并将用户添加到该特定组,以便该组的用户对文件和文件夹具有读/写访问权限。