Centos 7 服务器部署多网站
一、准备工作
-
安装 Apache
bash
sudo yum install httpd -y sudo systemctl start httpd sudo systemctl enable httpd
-
创建网站目录
假设部署 2 个网站,目录结构如下:bash
sudo mkdir -p /var/www/site1/html sudo mkdir -p /var/www/site2/html
-
添加测试内容
bash
echo "This is Site 1" > /var/www/site1/html/index.html echo "This is Site 2" > /var/www/site2/html/index.html
二、配置虚拟主机(基于 IP 或域名)
方案 1:仅用 IP 访问(无域名,适合内网测试)
修改 Apache 虚拟主机配置文件(若不存在需新建):
bash
sudo vi /etc/httpd/conf.d/vhosts.conf
添加以下内容(通过 不同端口 区分网站):
apache
# 网站 1:通过 IP:端口 访问(如 http://10.10.10.129:8080)
<VirtualHost *:8080>ServerAdmin webmaster@site1DocumentRoot "/var/www/site1/html"ServerName 10.10.10.129:8080ErrorLog "/var/log/httpd/site1-error_log"CustomLog "/var/log/httpd/site1-access_log" combined
</VirtualHost># 网站 2:通过 IP:另一端口 访问(如 http://10.10.10.129:8081)
<VirtualHost *:8081>ServerAdmin webmaster@site2DocumentRoot "/var/www/site2/html"ServerName 10.10.10.129:8081ErrorLog "/var/log/httpd/site2-error_log"CustomLog "/var/log/httpd/site2-access_log" combined
</VirtualHost>
方案 2:搭配域名访问(推荐,需提前配置 DNS 解析)
假设域名为 site1.local
和 site2.local
(内网可通过本地 hosts
文件绑定:10.10.10.129 site1.local site2.local
),配置如下:
apache
# 网站 1:通过域名访问(如 http://site1.local)
<VirtualHost *:80>ServerAdmin webmaster@site1DocumentRoot "/var/www/site1/html"ServerName site1.localServerAlias www.site1.local # 可选:支持带 www 的域名ErrorLog "/var/log/httpd/site1-error_log"CustomLog "/var/log/httpd/site1-access_log" combined
</VirtualHost># 网站 2:通过另一域名访问(如 http://site2.local)
<VirtualHost *:80>ServerAdmin webmaster@site2DocumentRoot "/var/www/site2/html"ServerName site2.localServerAlias www.site2.localErrorLog "/var/log/httpd/site2-error_log"CustomLog "/var/log/httpd/site2-access_log" combined
</VirtualHost>
DNS 要加一条 search local
三、配置防火墙(CentOS 7 默认使用 firewalld)
-
开放端口(根据方案选择端口,示例为 80、8080、8081):
bash
sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --permanent --add-port=8081/tcp sudo firewall-cmd --reload
-
若为公网服务器:需在云服务商控制台放行对应端口(如阿里云安全组、腾讯云防火墙)。
四、验证访问
-
内网测试:
- 方案 1:访问
http://10.10.10.129:8080
和http://10.10.10.129:8081
,查看是否显示对应内容。 - 方案 2:在内网电脑的
hosts
文件中添加10.10.10.129 site1.local site2.local
,然后访问http://site1.local
和http://site2.local
。
- 方案 1:访问
-
公网测试(若 IP 为公网 IP):
- 直接通过公网 IP: 端口 或域名访问(需确保 DNS 解析已生效)。
五、扩展:使用 HTTPS(需域名)
若后续需要为网站添加 HTTPS(需先绑定域名):
-
安装证书工具(以 Let's Encrypt 为例):
bash
sudo yum install epel-release -y sudo yum install certbot python2-certbot-apache -y
-
申请证书并配置:
bash
sudo certbot --apache -d site1.local -d www.site1.local # 替换为实际域名
证书会自动配置到 Apache 虚拟主机中,访问时会强制跳转至
https://
。
常见问题处理
- 端口冲突:确保端口未被其他服务占用(如
netstat -tunlp | grep 8080
)。 - 权限问题:若无法访问文件,检查目录权限(建议设置为
chown -R apache:apache /var/www/site*
)。 - 域名解析延迟:公网域名解析可能需要几分钟到几小时生效,可通过
nslookup site1.local
检查解析状态。
通过以上步骤,可在同一服务器上基于 IP 或域名部署多个独立网站服务。如果需要更复杂的负载均衡或动态网站(如 PHP、Node.js),可进一步配置 FastCGI 或反向代理。
测试第一个网站
测试第二个网站
网站内容自己添加,网站页面是开发做的跟运维没关系