一、环境准备与基础要求
在开始部署前,需确保服务器满足以下条件:
- 系统要求:推荐使用Ubuntu 20.04 LTS或CentOS 8等主流Linux发行版,确保系统已更新至最新版本
- 权限要求:所有操作需使用root用户或具有sudo权限的普通用户执行
- 网络要求:服务器需具备公网或内网访问权限,部分组件可能需要配置防火墙规则
- 依赖准备:建议提前安装基础开发工具包(如
build-essential、wget、curl等)
二、Nginx部署与配置
1. 安装与版本验证
# Ubuntu/Debian系统sudo apt update && sudo apt install -y nginx# CentOS/RHEL系统sudo yum install -y epel-release && sudo yum install -y nginx
安装完成后执行以下命令验证:
nginx -v # 显示基础版本信息nginx -V # 显示编译参数及模块信息
2. 服务管理最佳实践
- 启动与自启:
sudo systemctl start nginx # 立即启动sudo systemctl enable nginx # 设置开机自启
- 状态监控:
sudo systemctl status nginx # 查看服务状态journalctl -u nginx --no-pager -n 50 # 查看最近50条日志
3. 防火墙配置
若使用ufw防火墙管理工具:
sudo ufw allow 'Nginx Full' # 开放80/443端口sudo ufw status # 验证规则生效
对于firewalld(CentOS默认):
sudo firewall-cmd --permanent --add-service=httpsudo firewall-cmd --permanent --add-service=httpssudo firewall-cmd --reload
4. 配置文件管理
- 配置文件结构:
/etc/nginx/├── nginx.conf # 主配置文件├── conf.d/ # 虚拟主机配置└── sites-available/ # 站点配置模板
- 热重载技巧:
sudo nginx -t # 语法检查sudo nginx -s reload # 优雅重载配置sudo systemctl reload nginx # 等效命令
三、Redis内存数据库部署
1. 安装与启动
# Ubuntu/Debiansudo apt install -y redis-server# CentOS/RHELsudo yum install -y redis
启动服务并设置自启:
sudo systemctl start redissudo systemctl enable redis
2. 安全配置
修改/etc/redis/redis.conf关键参数:
bind 127.0.0.1 # 限制本地访问protected-mode yes # 启用保护模式requirepass StrongPassword123! # 设置认证密码
重启服务使配置生效:
sudo systemctl restart redis
3. 客户端连接测试
redis-cli -a StrongPassword123!127.0.0.1:6379> SET test_key "Hello Redis"127.0.0.1:6379> GET test_key
四、PostgreSQL数据库部署
1. 安装与初始化
# Ubuntu/Debiansudo apt install -y postgresql postgresql-contrib# CentOS/RHELsudo yum install -y postgresql-serversudo postgresql-setup --initdb
2. 服务管理
sudo systemctl start postgresqlsudo systemctl enable postgresql
3. 用户权限配置
切换至postgres用户:
sudo -i -u postgrespsql
在PostgreSQL交互界面执行:
ALTER USER postgres WITH PASSWORD 'SecureDBPass123!';CREATE DATABASE myapp_db;GRANT ALL PRIVILEGES ON DATABASE myapp_db TO postgres;
4. 远程访问配置
修改/etc/postgresql/12/main/pg_hba.conf:
host all all 0.0.0.0/0 md5
修改/etc/postgresql/12/main/postgresql.conf:
listen_addresses = '*'
重启服务:
sudo systemctl restart postgresql
五、Docker容器化平台部署
1. 安装流程
# 卸载旧版本(如有)sudo apt remove docker docker-engine docker.io containerd runc# 安装依赖sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common# 添加官方GPG密钥curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -# 添加稳定版仓库sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"# 安装Docker CEsudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
2. 用户组配置
sudo usermod -aG docker $USER # 添加当前用户到docker组newgrp docker # 立即生效
3. 验证安装
docker run hello-world # 运行测试容器docker version # 查看版本信息docker info # 查看系统信息
4. 常用命令速查
| 命令 | 功能说明 |
|---|---|
docker ps -a |
列出所有容器 |
docker images |
显示本地镜像 |
docker system prune |
清理无用资源 |
docker-compose up -d |
启动组合服务 |
六、部署后验证与优化
1. 服务健康检查
# 检查所有服务状态sudo systemctl list-units --type=service | grep -E 'nginx|redis|postgresql|docker'# 资源使用监控top -p $(pgrep -d, -f 'nginx|redis-server|postgres|dockerd')
2. 日志集中管理建议
推荐配置日志轮转:
# Nginx日志轮转sudo nano /etc/logrotate.d/nginx# 添加以下内容:/var/log/nginx/*.log {dailymissingokrotate 14compressdelaycompressnotifemptycreate 0640 www-data admsharedscriptspostrotate[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`endscript}
3. 安全加固建议
- 定期更新所有组件:
sudo apt update && sudo apt upgrade -y
- 配置SSH密钥认证,禁用密码登录
- 使用Fail2Ban防止暴力破解
- 定期备份关键数据(PostgreSQL使用
pg_dump,Redis使用SAVE或BGSAVE)
七、常见问题解决方案
1. Nginx 502 Bad Gateway
可能原因:
- 后端服务未启动
- PHP-FPM配置错误
- 连接超时设置过短
排查步骤:
# 检查Nginx错误日志tail -f /var/log/nginx/error.log# 测试PHP-FPM连接SCRIPT_FILENAME=/var/www/html/info.php \cgi.fix_pathinfo=0 \cgi.force_redirect=0 \nginx -t
2. Redis连接失败
- 检查服务是否运行:
sudo systemctl status redis
- 验证防火墙规则:
sudo ufw status numbered # 查看规则编号sudo ufw delete 2 # 删除错误规则(示例)
3. PostgreSQL性能优化
关键配置参数调整(postgresql.conf):
shared_buffers = 4GB # 建议为内存的25%work_mem = 16MB # 每个查询操作内存maintenance_work_mem = 1GB # 维护操作内存max_connections = 200 # 根据实际连接数调整
八、进阶部署建议
-
容器化部署方案:
- 使用Docker Compose编排多服务
- 示例
docker-compose.yml片段:version: '3.8'services:web:image: nginx:latestports:- "80:80"volumes:- ./nginx.conf:/etc/nginx/nginx.confdb:image: postgres:13environment:POSTGRES_PASSWORD: example
-
高可用架构:
- Nginx:配置Keepalived实现VIP切换
- Redis:搭建主从复制+哨兵模式
- PostgreSQL:配置流复制+Pgpool-II
-
监控告警方案:
- 推荐使用Prometheus+Grafana监控栈
- 关键指标:
- Nginx:请求速率、响应时间
- Redis:命中率、内存使用
- PostgreSQL:连接数、查询性能
通过本文的详细指导,开发者可以系统掌握Linux环境下关键组件的部署方法,并理解各组件间的协作机制。建议在实际部署前进行充分测试,并根据业务需求调整配置参数。对于生产环境,建议结合CI/CD流程实现自动化部署,并建立完善的备份恢复机制。