我在 centos 上安装了 apache,并添加了两个虚拟主机(server1.com 和 server2.com):
服务器1.conf
Listen 443 https
<VirtualHost *:443>
DocumentRoot /opt/server1/
ServerName server1.com
ServerAlias server1.com
<Directory "/opt/server1/">
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php-fpm-server1.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
服务器2.conf
<VirtualHost *:443>
DocumentRoot /opt/server2/
ServerName server2.com
ServerAlias server2.com
<Directory "/opt/server2/">
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php-fpm-server2.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
上述配置完美运行,我可以通过浏览器的 443 端口访问 server1.com 和 server2.com,并且它们显示不同的内容(完美)。
现在的问题是我想要两个独立的 apache 实例,这样我就可以在需要时启动和停止每个实例。我在 /etc/systemd/system 文件夹中创建了两个服务。
- 问题是,当我执行 systemctl start httpd-server1.service 时,server1.com 运行正常,但 server2.com 也运行正常,并且显示的内容与 server1.com 相同。只有 server1.com 应该可以运行!!
- 第二个问题是,当我执行 systemctl start httpd-server2.service 时,它会失败并显示“没有可用的监听套接字,正在关闭”,即使我在 server2.conf 上添加另一个“listen 443”,我仍然会收到另一个错误“无法绑定到地址 [::]:443”
以下是两个 systemctl 服务文件中启动 httpd 进程的命令:
/opt/httpd/sbin/apachectl -f /etc/opt/httpd/conf/httpd-server1.conf -k start
/opt/httpd/sbin/apachectl -f /etc/opt/httpd/conf/httpd-server2.conf -k start
httpd-server1.conf 指向 server1.conf,httpd-server2.conf 指向 server2.conf,所以我不明白为什么启动一个服务时,另一个服务即使在同一个端口上也无法启动。
我迷茫了,我不知道如何单独创建每个实例。有人遇到过这个问题吗?