请帮助新手。我最近在 Ubuntu 22.04 上安装了 LAMP。Apache 版本:Apache/2.4.52
我想做的是在我的本地主机上启用多个网站。我读过并关注过关于这个主题的一些帖子,但我无法让它工作。
到目前为止,我已经创建了两个网站“prj1”和“prj2”:
- 创建了两个文件夹
sudo mkdir /var/www/prj1
sudo mkdir /var/www/prj2
- 在文件夹中创建两个索引文件:
sudo gedit /var/www/prj1/index.html
sudo gedit /var/www/prj2/index.html
它们很简单,第一个陈述:
网络项目 1. 位置:
/var/www/prj1
第二:
网络项目 2. 位置:
/var/www/prj2
- 设置权限:
sudo chown -R www-data:www-data /var/www
sudo chown -R 775 /var/www
sudo chown -R www-data:www-data /var/www/prj1
sudo chown -R www-data:www-data /var/www/prj2
- 为每个项目创建 .conf 文件:sudo gedit /etc/apache2/sites-available/prj1.conf
<VirtualHost *:80>
ServerAdmin admin@prj1
ServerName prj1
DocumentRoot /var/www/prj1/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/prj1/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/prj1.webdock.io_error.log
CustomLog ${APACHE_LOG_DIR}/prj1.webdock.io_access.log combined
</VirtualHost>
sudo gedit /etc/apache2/sites-available/prj2.conf
<VirtualHost *:80>
ServerAdmin admin@prj2
ServerName prj2
DocumentRoot /var/www/prj2/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/prj2/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/prj2.webdock.io_error.log
CustomLog ${APACHE_LOG_DIR}/prj2.webdock.io_access.log combined
</VirtualHost>
- 已启用的站点:
a2ensite prj1
a2ensite prj2
- 编辑 apache2.conf: sudo gedit /etc/apache2/apache2.conf
我添加了以下内容:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
DocumentRoot "/var/www/prj1"
<Directory "/var/www/prj1">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
DocumentRoot "/var/www/prj2"
<Directory "/var/www/prj2">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
- 在 /etc/hosts 中添加两行:sudo gedit /etc/hosts
127.0.0.1 localhost prj1
127.0.0.1 localhost prj2
- 重新启动Apache:
systemctl restart apache2
现在我在浏览器中使用以下 URI:
http://prj1.localhost/
这按预期工作,它显示:
网络项目 1. 位置:
/var/www/prj1
但是如果我使用http://prj2.localhost/它仍然显示第一个网站
网络项目 1. 位置:
/var/www/prj1
我做错了什么?
谢谢你,亚历克斯
答案1
我找到了问题所在。在 prj2.conf 中,prj2 的端口是 81,而不是 80。老实说,我不知道这是怎么发生的,我甚至不能说这是一个拼写错误,因为整个文本都是复制/粘贴的。无论如何,在我将其更改为 80 后,两个网站现在都可以正常工作了。
在文件 /etc/host 中,这些行应该是
127.0.0.1 项目1
127.0.0.1 项目2
URL 应为http://prj1和http://prj2。唯一的问题是浏览器告诉该站点的连接“不安全”(我不知道为什么)。
我感谢该文章的所有贡献者。
问候,亚历克斯
答案2
第 7 步应该是:
127.0.0.1 prj1.localhost
127.0.0.1 prj2.localhost
答案3
根据文档,/etc/hosts
文件需要具有每个 IP 地址一行.所以你应该把全部127.0.0.1
在一行中引用的主机名,例如:
127.0.0.1 localhost prj1 prj2
另外,我不确定为什么您在文件和 Apache 配置中的指令中都使用纯主机名prj1
和,但在 URL 中使用和。我宁愿尝试和。prj2
hosts
ServerName
prj1.localhost
prj2.localhost
http://prj1/
http://prj2/