系统选择与准备
操作系统推荐
类型 | 适用场景 | 优势特点 |
---|---|---|
CentOS/RHEL | 企业级生产环境 | 稳定性强、社区支持完善 |
Ubuntu | 快速部署 & 新手友好 | 包管理便捷(APT)、文档丰富 |
Debian | 高安全性需求 | 严格的依赖控制与漏洞修复及时性 |
💡 建议方案:优先选择 LTS(长期支持版),如 Ubuntu Server 22.04 LTS,兼顾稳定性和新功能迭代。
(图片来源网络,侵删)
基础环境配置步骤
1 安装Web服务器软件
根据需求任选以下一种或组合使用:
- Apache HTTP Server
- 命令示例:
sudo apt install apache2
- 配置文件路径:
/etc/apache2/sites-available/
- 命令示例:
- Nginx
- 命令示例:
sudo apt install nginx
- 默认站点配置:
/etc/nginx/sites-enabled/default
- 命令示例:
- LiteSpeed Web Application Firewall (WAF)
高性能替代方案,支持抗DDoS攻击防护
📌 端口冲突排查:若遇到“Address already in use”,可通过
netstat -tulnp | grep :80
检查占用进程并终止(如kill -9 PID
)。
2 PHP运行环境搭建
组件 | 作用说明 | 安装命令(Ubuntu为例) |
---|---|---|
PHP-FPM | FastCGI进程管理器 | sudo apt install php-fpm |
OpCache | Zend引擎字节码缓存加速 | sudo apt install php-opcache |
扩展模块 | 根据框架需求加载(如MySQLi、GD库等) | sudo apt install php-{mysql,gd} |
⚠️ 版本兼容性注意:确保PHP版本≥目标项目要求的最低标准(例如Laravel需PHP≥7.4)。
(图片来源网络,侵删)
3 数据库服务部署
数据库类型 | 典型应用场景 | 初始化脚本示例 |
---|---|---|
MySQL/MariaDB | WordPress、Discuz!等CMS系统 | CREATE DATABASE dbname; GRANT ALL PRIVILEGES ON dbname. TO 'user'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; |
PostgreSQL | Django、Ruby on Rails应用 | createdb mydb; psql -c "ALTER USER postgres PASSWORD 'newpass';" |
Redis | 缓存会话存储(非关系型) | redis-server --appendonly yes |
🔧 优化建议:为MySQL设置最大连接数限制(修改
my.cnf
中的max_connections=200
)。
域名解析与SSL证书申请
1 A记录绑定公网IP
登录域名注册商后台,添加两条A记录:
- @ → 服务器主IP(如192.168.1.100)
- www → 同一IP地址
2 Let’s Encrypt免费SSL部署
使用Certbot工具自动签发证书:
sudo apt install certbot python3-certbot-nginx # Nginx插件版 sudo certbot certonly --nginx -d example.com -d www.example.com
✅ 自动续期机制:Certbot默认每60天通过系统定时任务更新证书。
(图片来源网络,侵删)
文件上传与权限管理
1 Web根目录结构规划
/var/www/html/ ├── public # 静态资源存放区(CSS/JS/images) ├── uploads # 用户提交文件存储路径(需设置写权限) └── logs # 访问日志归档目录(建议每日轮转)
2 权限控制策略表
路径 | 所有者 | 所属组 | 权限模式 | 备注说明 |
---|---|---|---|---|
/var/www/html | www-data | www-data | drwxr-xr-x | 确保Web服务器可读不可执行 |
/var/log/nginx/ | root | adm | rw-r--r-- | 仅允许管理员查看错误日志 |
/etc/letsencrypt/live/ | root | root | drwx------ | SSL私钥文件严格保密 |
🛡️ 安全加固技巧:禁用危险PHP函数(编辑
php.ini
添加disable_functions = system,exec,passthru
)。
常见问题与解答(Q&A)
Q1: 网站打开显示“403 Forbidden”怎么办?
A: 此错误通常由以下原因导致:
- 文件权限不足 → 执行
chmod -R 755 /path/to/site
; - SELinux拦截 → 临时关闭验证:
getenforce → setenforce 0
; - .htaccess规则冲突 → 检查是否有Deny from all指令。
Q2: 如何实现多站点共存?
A: 以Nginx为例,通过server_name区分不同域名:
server { listen 80; server_name site1.com; root /var/www/site1; index index.html; } server { listen 80; server_name site2.org; root /var/www/site2; return 301 https://$host$request_uri; # 强制HTTPS跳转 }
重启服务使配置生效:`sudo systemctl restart nginx