Linux服务器环境搭建全攻略:Nginx、Redis、PostgreSQL与Docker部署指南

一、环境准备与基础要求

在开始部署前,需确保服务器满足以下条件:

  1. 系统要求:推荐使用Ubuntu 20.04 LTS或CentOS 8等主流Linux发行版,确保系统已更新至最新版本
  2. 权限要求:所有操作需使用root用户或具有sudo权限的普通用户执行
  3. 网络要求:服务器需具备公网或内网访问权限,部分组件可能需要配置防火墙规则
  4. 依赖准备:建议提前安装基础开发工具包(如build-essentialwgetcurl等)

二、Nginx部署与配置

1. 安装与版本验证

  1. # Ubuntu/Debian系统
  2. sudo apt update && sudo apt install -y nginx
  3. # CentOS/RHEL系统
  4. sudo yum install -y epel-release && sudo yum install -y nginx

安装完成后执行以下命令验证:

  1. nginx -v # 显示基础版本信息
  2. nginx -V # 显示编译参数及模块信息

2. 服务管理最佳实践

  • 启动与自启
    1. sudo systemctl start nginx # 立即启动
    2. sudo systemctl enable nginx # 设置开机自启
  • 状态监控
    1. sudo systemctl status nginx # 查看服务状态
    2. journalctl -u nginx --no-pager -n 50 # 查看最近50条日志

3. 防火墙配置

若使用ufw防火墙管理工具:

  1. sudo ufw allow 'Nginx Full' # 开放80/443端口
  2. sudo ufw status # 验证规则生效

对于firewalld(CentOS默认):

  1. sudo firewall-cmd --permanent --add-service=http
  2. sudo firewall-cmd --permanent --add-service=https
  3. sudo firewall-cmd --reload

4. 配置文件管理

  • 配置文件结构
    1. /etc/nginx/
    2. ├── nginx.conf # 主配置文件
    3. ├── conf.d/ # 虚拟主机配置
    4. └── sites-available/ # 站点配置模板
  • 热重载技巧
    1. sudo nginx -t # 语法检查
    2. sudo nginx -s reload # 优雅重载配置
    3. sudo systemctl reload nginx # 等效命令

三、Redis内存数据库部署

1. 安装与启动

  1. # Ubuntu/Debian
  2. sudo apt install -y redis-server
  3. # CentOS/RHEL
  4. sudo yum install -y redis

启动服务并设置自启:

  1. sudo systemctl start redis
  2. sudo systemctl enable redis

2. 安全配置

修改/etc/redis/redis.conf关键参数:

  1. bind 127.0.0.1 # 限制本地访问
  2. protected-mode yes # 启用保护模式
  3. requirepass StrongPassword123! # 设置认证密码

重启服务使配置生效:

  1. sudo systemctl restart redis

3. 客户端连接测试

  1. redis-cli -a StrongPassword123!
  2. 127.0.0.1:6379> SET test_key "Hello Redis"
  3. 127.0.0.1:6379> GET test_key

四、PostgreSQL数据库部署

1. 安装与初始化

  1. # Ubuntu/Debian
  2. sudo apt install -y postgresql postgresql-contrib
  3. # CentOS/RHEL
  4. sudo yum install -y postgresql-server
  5. sudo postgresql-setup --initdb

2. 服务管理

  1. sudo systemctl start postgresql
  2. sudo systemctl enable postgresql

3. 用户权限配置

切换至postgres用户:

  1. sudo -i -u postgres
  2. psql

在PostgreSQL交互界面执行:

  1. ALTER USER postgres WITH PASSWORD 'SecureDBPass123!';
  2. CREATE DATABASE myapp_db;
  3. GRANT ALL PRIVILEGES ON DATABASE myapp_db TO postgres;

4. 远程访问配置

修改/etc/postgresql/12/main/pg_hba.conf

  1. host all all 0.0.0.0/0 md5

修改/etc/postgresql/12/main/postgresql.conf

  1. listen_addresses = '*'

重启服务:

  1. sudo systemctl restart postgresql

五、Docker容器化平台部署

1. 安装流程

  1. # 卸载旧版本(如有)
  2. sudo apt remove docker docker-engine docker.io containerd runc
  3. # 安装依赖
  4. sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
  5. # 添加官方GPG密钥
  6. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  7. # 添加稳定版仓库
  8. sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  9. # 安装Docker CE
  10. sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io

2. 用户组配置

  1. sudo usermod -aG docker $USER # 添加当前用户到docker组
  2. newgrp docker # 立即生效

3. 验证安装

  1. docker run hello-world # 运行测试容器
  2. docker version # 查看版本信息
  3. docker info # 查看系统信息

4. 常用命令速查

命令 功能说明
docker ps -a 列出所有容器
docker images 显示本地镜像
docker system prune 清理无用资源
docker-compose up -d 启动组合服务

六、部署后验证与优化

1. 服务健康检查

  1. # 检查所有服务状态
  2. sudo systemctl list-units --type=service | grep -E 'nginx|redis|postgresql|docker'
  3. # 资源使用监控
  4. top -p $(pgrep -d, -f 'nginx|redis-server|postgres|dockerd')

2. 日志集中管理建议

推荐配置日志轮转:

  1. # Nginx日志轮转
  2. sudo nano /etc/logrotate.d/nginx
  3. # 添加以下内容:
  4. /var/log/nginx/*.log {
  5. daily
  6. missingok
  7. rotate 14
  8. compress
  9. delaycompress
  10. notifempty
  11. create 0640 www-data adm
  12. sharedscripts
  13. postrotate
  14. [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
  15. endscript
  16. }

3. 安全加固建议

  1. 定期更新所有组件:
    1. sudo apt update && sudo apt upgrade -y
  2. 配置SSH密钥认证,禁用密码登录
  3. 使用Fail2Ban防止暴力破解
  4. 定期备份关键数据(PostgreSQL使用pg_dump,Redis使用SAVEBGSAVE

七、常见问题解决方案

1. Nginx 502 Bad Gateway

可能原因:

  • 后端服务未启动
  • PHP-FPM配置错误
  • 连接超时设置过短

排查步骤:

  1. # 检查Nginx错误日志
  2. tail -f /var/log/nginx/error.log
  3. # 测试PHP-FPM连接
  4. SCRIPT_FILENAME=/var/www/html/info.php \
  5. cgi.fix_pathinfo=0 \
  6. cgi.force_redirect=0 \
  7. nginx -t

2. Redis连接失败

  1. 检查服务是否运行:
    1. sudo systemctl status redis
  2. 验证防火墙规则:
    1. sudo ufw status numbered # 查看规则编号
    2. sudo ufw delete 2 # 删除错误规则(示例)

3. PostgreSQL性能优化

关键配置参数调整(postgresql.conf):

  1. shared_buffers = 4GB # 建议为内存的25%
  2. work_mem = 16MB # 每个查询操作内存
  3. maintenance_work_mem = 1GB # 维护操作内存
  4. max_connections = 200 # 根据实际连接数调整

八、进阶部署建议

  1. 容器化部署方案

    • 使用Docker Compose编排多服务
    • 示例docker-compose.yml片段:
      1. version: '3.8'
      2. services:
      3. web:
      4. image: nginx:latest
      5. ports:
      6. - "80:80"
      7. volumes:
      8. - ./nginx.conf:/etc/nginx/nginx.conf
      9. db:
      10. image: postgres:13
      11. environment:
      12. POSTGRES_PASSWORD: example
  2. 高可用架构

    • Nginx:配置Keepalived实现VIP切换
    • Redis:搭建主从复制+哨兵模式
    • PostgreSQL:配置流复制+Pgpool-II
  3. 监控告警方案

    • 推荐使用Prometheus+Grafana监控栈
    • 关键指标:
      • Nginx:请求速率、响应时间
      • Redis:命中率、内存使用
      • PostgreSQL:连接数、查询性能

通过本文的详细指导,开发者可以系统掌握Linux环境下关键组件的部署方法,并理解各组件间的协作机制。建议在实际部署前进行充分测试,并根据业务需求调整配置参数。对于生产环境,建议结合CI/CD流程实现自动化部署,并建立完善的备份恢复机制。