在阿里云Linux主机上添加两个网站,主要涉及环境准备、网站目录创建、数据库配置、Nginx服务器配置及SSL证书部署等步骤,以下以CentOS 7系统为例,结合Nginx+MySQL+PHP(LNMP环境)详细说明操作流程。
环境准备
首先确保阿里云Linux主机已安装LNMP环境(若未安装,可通过阿里云云市场的一键部署脚本或手动安装),手动安装基本步骤如下:
- 安装Nginx:执行
yum install -y nginx
,启动并设置开机自启systemctl start nginx && systemctl enable nginx
。 - 安装MySQL:执行
yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm -y
,安装MySQL服务器yum install -y mysql-community-server
,启动并设置自启systemctl start mysqld && systemctl enable mysqld
。 - 安装PHP:执行
yum install -y php php-fpm php-mysql php-gd php-mbstring
,启动PHP-FPM并设置自启systemctl start php-fpm && systemctl enable php-fpm
。
确保已注册两个域名(如site1.com和site2.com),并在阿里云DNS控制台添加A记录,将域名解析至Linux主机的公网IP地址。
创建网站目录及数据库
为两个网站创建独立的目录和数据库,避免文件冲突。
创建网站根目录
在/var/www/
下创建两个网站的根目录,并设置正确的权限:
mkdir -p /var/www/site1.com /var/www/site2.com chown -R nginx:nginx /var/www/site1.com /var/www/site2.com chmod -R 755 /var/www/site1.com /var/www/site2.com
可通过echo "<?php phpinfo(); ?>" > /var/www/site1.com/index.php
和/var/www/site2.com/index.php
创建测试页面,后续通过浏览器访问验证。
创建数据库及用户
登录MySQL(执行mysql -u root -p
,首次登录可通过grep 'temporary password' /var/log/mysqld.log
获取临时密码),为每个网站创建独立数据库和用户:
-- 创建site1数据库和用户 CREATE DATABASE site1_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'site1_user'@'localhost' IDENTIFIED BY 'StrongPassword1!'; GRANT ALL PRIVILEGES ON site1_db.* TO 'site1_user'@'localhost'; FLUSH PRIVILEGES; -- 创建site2数据库和用户 CREATE DATABASE site2_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'site2_user'@'localhost' IDENTIFIED BY 'StrongPassword2!'; GRANT ALL PRIVILEGES ON site2_db.* TO 'site2_user'@'localhost'; FLUSH PRIVILEGES;
注意:密码需包含大小写字母、数字和特殊字符,增强安全性。
配置Nginx虚拟主机
Nginx通过虚拟主机(server块)实现多网站部署,需为每个网站创建独立的配置文件。
创建Nginx配置文件
在/etc/nginx/conf.d/
目录下创建两个配置文件,如site1.com.conf
和site2.com.conf
:
site1.com.conf示例:
server { listen 80; server_name site1.com www.site1.com; root /var/www/site1.com; index index.php index.html index.htm; access_log /var/log/nginx/site1.com.access.log; error_log /var/log/nginx/site1.com.error.log; location / { try_files $uri $uri/ =404; } location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 防止访问隐藏文件 location ~ /. { deny all; access_log off; log_not_found off; } }
site2.com.conf示例:
server { listen 80; server_name site2.com www.site2.com; root /var/www/site2.com; index index.php index.html index.htm; access_log /var/log/nginx/site2.com.access.log; error_log /var/log/nginx/site2.com.error.log; location / { try_files $uri $uri/ =404; } location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /. { deny all; access_log off; log_not_found off; } }
配置文件说明
配置项 | 作用 |
---|---|
listen 80 |
监听80端口(HTTP访问) |
server_name |
绑定域名,支持多个域名(用空格分隔) |
root |
网站根目录路径 |
index |
默认首页文件顺序 |
access_log/error_log |
访问日志和错误日志路径,便于排查问题 |
location ~ .php$ |
处理PHP文件,通过fastcgi_pass将请求传递给PHP-FPM(9000端口) |
测试并重启Nginx
执行nginx -t
检查配置文件语法是否正确,若无报错则执行systemctl reload nginx
重新加载配置。
配置SSL证书(可选但推荐)
为网站启用HTTPS,需申请SSL证书,可通过阿里云免费证书服务申请(1年有效期),下载Nginx版本的证书文件(.pem和.key),上传至服务器/etc/nginx/ssl/
目录,修改配置文件:
修改site1.com.conf:
server { listen 443 ssl; server_name site1.com www.site1.com; root /var/www/site1.com; index index.php index.html index.htm; ssl_certificate /etc/nginx/ssl/site1.com.pem; ssl_certificate_key /etc/nginx/ssl/site1.com.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; # 其他配置保持不变... } # 添加HTTP跳转HTTPS server { listen 80; server_name site1.com www.site1.com; return 301 https://$server_name$request_uri; }
同理修改site2.com.conf,上传对应证书文件后重启Nginx。
测试访问
- HTTP访问:在浏览器输入
http://site1.com
和http://site2.com
,若显示PHP测试页面或网站首页,说明配置成功。 - HTTPS访问:输入
https://site1.com
,若显示安全锁标志,表示SSL证书配置正确。 - 检查日志:若无法访问,可通过
tail -f /var/log/nginx/site1.com.error_log
查看错误日志,排查权限、配置或数据库连接问题。
相关问答FAQs
问题1:添加网站后无法访问,如何排查?
解答:
- 检查Nginx配置:执行
nginx -t
确认语法正确,若无报错则systemctl reload nginx
。 - 检查防火墙:确保80、443端口已开放,执行
firewall-cmd --list-ports
查看,未开放则执行firewall-cmd --add-port=80/tcp --permanent
并重启防火墙firewall-cmd --reload
。 - 检查目录权限:确认网站目录属主为nginx,执行
chown -R nginx:nginx /var/www/站点目录
。 - 检查域名解析:通过
ping site1.com
确认域名是否解析至服务器IP,若未生效则等待DNS propagation(通常10分钟内)。 - 检查PHP-FPM:确认PHP-FPM运行状态,执行
systemctl status php-fpm
,未启动则systemctl start php-fpm
。
问题2:是否可以为不同网站配置不同的PHP版本?
解答:
可以,通过安装多个PHP版本(如PHP 7.4和PHP 8.0)并为每个网站配置独立的PHP-FPM pool实现,步骤如下:
- 安装多版本PHP:执行
yum install -y php74 php74-fpm php80 php80-fpm
。 - 为site1.com创建PHP-FPM pool配置文件
/etc/php-fpm.d/site1.conf
:[site1] user = nginx group = nginx listen = /var/run/php-fpm/site1.sock listen.owner = nginx listen.group = nginx pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 10
- 修改site1.com.conf的PHP处理部分:
location ~ .php$ { fastcgi_pass unix:/var/run/php-fpm/site1.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
- 启动对应PHP-FPM服务并重启Nginx:
systemctl start php74-fpm php80-fpm && systemctl reload nginx
。
通过此方式,site1.com可使用PHP 7.4,site2.com使用PHP 8.0,实现版本隔离。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/30934.html