前期准备
序号 | 事项 | 详情 |
---|---|---|
1 | 服务器环境确认 | 确保拥有一台具备公网IP地址的云服务器或物理主机,操作系统推荐CentOS 7及以上版本(稳定性高且软件源丰富),检查内存至少2GB,硬盘剩余空间大于5GB用于系统安装及后续数据存储。 |
2 | 域名解析设置 | 若使用自有域名访问管理面板,需将域名指向服务器公网IP,登录域名注册商控制台,添加A记录解析至服务器IP地址,生效时间通常为几分钟到数小时不等。 |
3 | 安全组配置(云服务器场景) | 在云服务商后台开放必要端口:HTTP(80)、HTTPS(443)、SSH(22),避免外部恶意扫描导致服务不可用,部分厂商默认禁止所有入站流量,需手动放行。 |
安装Web服务器与PHP环境
步骤1:更新系统包索引
执行以下命令确保获取最新软件版本:
yum update -y && yum install epel-release -y
步骤2:部署LNMP栈(Linux+Nginx+MySQL+PHP)
推荐使用Oneinstack一键脚本快速搭建:
wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz tar xzf oneinstack-full.tar.gz && ./oneinstack --nginx --mysql --redis --php74
按提示选择参数(如MySQL根密码、PHP版本等),等待自动完成安装,此工具已集成常用扩展(如ionCubeLoader),适合虚拟主机场景。
步骤3:验证服务状态
通过命令检查关键组件是否运行正常:
systemctl status nginx # Nginx应显示active(running) systemctl status mysqld # MySQL服务就绪 php -v # 输出PHP版本信息确认成功
创建虚拟主机配置文件
以添加示例站点test.example.com
为例:
- 编辑Nginx虚拟主机块
路径:/usr/local/nginx/conf/vhost/test.example.com.conf
模板如下:server { listen 80; server_name test.example.com; root /data/wwwroot/test; # 网站根目录路径 index index.html index.php; # 默认首页文件顺序 location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { fastcgi_pass unix:/dev/shm/php-fpm.sock; # 根据实际Socket路径调整 include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
- 创建站点目录并授权
mkdir -p /data/wwwroot/test chown -R www:www /data/wwwroot/test # www用户组由Oneinstack自动创建 chmod -R 755 /data/wwwroot/test # 设置合理权限防止越权访问
- 重启Nginx使配置生效
nginx -t && systemctl restart nginx
数据库初始化与用户隔离
- 为每个虚拟主机分配独立数据库
登录MySQL命令行工具:mysql -u root -p # 输入之前设置的root密码
执行SQL语句创建新库及受限用户:
CREATE DATABASE `test_db` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'secure_password'; GRANT ALL PRIVILEGES ON `test_db`. TO 'test_user'@'localhost'; FLUSH PRIVILEGES;
- 记录凭证并安全存储
建议将数据库连接信息写入加密文件(如Vault或Ansible变量),避免明文暴露在日志中。
功能扩展与安全加固
功能模块 | 实现方式 | 备注 |
---|---|---|
SSL证书部署 | 通过Let’s Encrypt免费申请通配符证书,修改Nginx配置启用HTTPS重定向 | 使用acme.sh工具自动化续签流程 |
防跨站攻击 | 在PHP配置中开启open_basedir 限制执行路径,禁用危险函数(如exec) |
参考OWASP Top 10漏洞防护指南 |
日志审计 | 配置Nginx访问日志切割脚本,定期分析异常请求IP | 结合Fail2ban实现暴力破解拦截 |
备份策略 | 每日增量备份网站文件+数据库,异地存储至对象存储(如OSS) | 测试恢复流程确保灾难回滚可行性 |
常见问题与解答
Q1:如何修改已存在的虚拟主机绑定的域名?
A:需同步更新两处配置:①修改Nginx中的server_name
指令为新域名;②更新DNS解析记录指向服务器IP,完成后执行nginx -t
语法检查,无错误则重启服务生效,注意旧域名应在TTL过期后停止解析以避免冲突。
Q2:遇到“502 Bad Gateway”错误如何处理?
A:该错误通常由FastCGI进程未响应引起,排查步骤:①查看PHP-FPM错误日志(路径一般为/usr/local/php/logs/error.log
);②确认虚拟主机配置文件中的Unix Socket路径与实际一致;③检查脚本执行权限是否符合要求,常见解决方案包括增加PHP子进程数量或优化长耗时
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/108977.html