结论: 服务器配置运行环境的标准路径是:更新系统 → 部署 Nginx 作为 Web 入口 → 安装数据库(MySQL 8.4 或 PostgreSQL 16)→ 安装运行时(JDK 21 / Python 3.12 / Node.js 22)→ 配置 systemd 托管进程并设开机自启。追求效率可直接用宝塔面板一键部署,追求可控则手工逐层安装,两种方案本文都给完整命令。
"配置运行环境"这个词在不同人嘴里含义差别很大。前端说的大概是 Node.js + Nginx,后端 Java 说的是 JDK + Tomcat + MySQL,而 Python 工程师指的是虚拟环境 + Gunicorn。所以第一步不是急着敲命令,而是明确你要跑什么技术栈。
本文按"通用于所有技术栈的基础层"加"按语言可选的运行时层"组织。基础层包括系统更新、Nginx、数据库、缓存;运行时层给出三大主流语言的安装方式。所有命令以 Ubuntu 24.04 LTS 为主,同时提供 Debian 12、Rocky Linux 9、CentOS 7 对照。截至 2026 年,相关稳定版本为 Nginx 1.26、MySQL 8.4 LTS、Redis 7.4、JDK 21 LTS、Python 3.12、Node.js 22 LTS。
环境选型:先确定你要跑什么
结论:按业务语言选择技术栈,不要什么都装。 装一堆用不上的服务既浪费内存,又扩大了攻击面。一台 2 核 4G 的机器同时跑 MySQL + Redis + Nginx + 两个 Java 进程,内存必然吃紧。
| 技术栈 | 必装组件 | 内存占用参考 | 适合项目 |
|---|---|---|---|
| LNMP(PHP) | Nginx 1.26、MySQL 8.4、PHP 8.3 | 约 900MB | WordPress、Discuz、ThinkPHP |
| Java 后端 | JDK 21、Nginx、MySQL、Redis | 约 1.5GB 起 | Spring Boot、微服务 |
| Node.js | Node 22、Nginx、PM2、Redis | 约 500MB | 前后端分离 SSR、API 服务 |
| Python | Python 3.12、Nginx、Gunicorn、venv | 约 450MB | Django、Flask、数据分析 |
| 静态站点 | 仅 Nginx | 约 30MB | Vue/React 构建产物、文档站 |
磁盘与内存的前置要求
- 系统盘建议 ≥ 40GB:Docker 镜像、node_modules、日志文件累积速度远超预期。
- MySQL 8.4 空载约 450MB 内存,务必为 buffer pool 留出余量。
- Java 应用默认堆上限需显式限制,否则 JVM 会按物理内存比例申请,容易 OOM。
三种环境搭建路线怎么选:手工 LNMP、Docker Compose、宝塔面板
结论:单机长期运行的项目选手工搭建,需要复制到多台机器选 Docker Compose,纯新手赶上线选宝塔面板。 三条路线安装的软件完全一样,差别在于"谁来写配置文件"以及"以后怎么迁移"。
| 对比维度 | 手工 LNMP | Docker Compose | 宝塔面板 |
|---|---|---|---|
| 上手耗时 | 2~4 小时 | 1~2 小时 | 20~40 分钟 |
| 前置知识 | Linux 命令、配置文件语法 | 镜像、容器、数据卷 | 基本不需要 |
| 额外内存开销 | 无 | 容器运行时约 100~200MB | 面板自身约 300~500MB |
| 环境一致性 | 依赖脚本与文档,易漂移 | 镜像天然一致 | 依赖面板版本,升级可能变配置 |
| 迁移难度 | 高,基本要重做一遍 | 极低,拷 compose 文件即可 | 中等,可用面板一键迁移插件 |
| 排错难度 | 配置透明,改哪看哪 | 需懂容器网络与日志 | 配置被面板托管,改前须备份 |
| 适合场景 | 生产主站、长期运维 | 微服务、多环境复制、CI | 个人站、演示环境、新手练手 |
选型建议:按团队情况对号入座
- 个人站长或学生:宝塔面板。先把站点跑通再谈优化,面板的可视化能省掉大量查文档时间。
- 1~3 人小团队:手工搭建并把全过程写成 shell 脚本存进 Git,兼顾可控性与复现效率。
- 有开发、测试、生产三套环境:Docker Compose。环境漂移是这类团队最常见的故障来源。
- 已上 Kubernetes(K8s)集群:不要在服务器上手工装运行时,直接以容器镜像交付。
需要强调的是,宝塔面板会额外开放 8888 端口作为面板入口,该端口必须在云平台安全组中限制来源 IP,不要对全网开放。
Docker Compose 起一套环境的最小示例
下面这份 docker-compose.yml 会同时拉起 Nginx 1.26、MySQL 8.4 与 Redis 7,数据目录挂载到宿主机,删容器不丢数据:
services:
nginx:
image: nginx:1.26-alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d:ro
- ./www:/usr/share/nginx/html
restart: unless-stopped
mysql:
image: mysql:8.4
environment:
MYSQL_ROOT_PASSWORD: Str0ng!Passw0rd
MYSQL_DATABASE: appdb
MYSQL_CHARACTER_SET_SERVER: utf8mb4
volumes:
- ./data/mysql:/var/lib/mysql
command: --default-authentication-plugin=caching_sha2_password
restart: unless-stopped
redis:
image: redis:7.4-alpine
command: redis-server --requirepass YourRedisPass --maxmemory 512mb
volumes:
- ./data/redis:/data
restart: unless-stopped# 安装 Docker Compose 插件(Ubuntu 24.04)
sudo apt install -y docker-compose-plugin
# 启动整套环境
docker compose up -d
docker compose ps # 查看各容器状态
docker compose logs -f nginx
# 停止并移除容器(数据卷保留)
docker compose down常见应用的运行环境组合对照表
结论:同一台服务器上,不同应用需要的组件组合差异很大,照抄别人的安装清单很容易装多余或不配套的版本。 下表给出五类典型应用在 2026 年的主流组合,可直接作为采购与安装的依据。
| 应用类型 | 必需组件与推荐版本 | 可选组件 | 最小配置 | 关键注意点 |
|---|---|---|---|---|
| WordPress | Nginx 1.26 + PHP 8.3-FPM + MySQL 8.4 | Redis 7(对象缓存) | 2 核 4G | PHP 需装 php-mysql、php-gd、php-curl;upload_max_filesize 默认 2M 太小 |
| Spring Boot | JDK 21 + Nginx 1.26 + MySQL 8.4 | Redis 7、RabbitMQ | 2 核 4G | 用 systemd 托管 jar,显式设 -Xmx;Nginx 只做反向代理 |
| Django / Flask | Python 3.12 + venv + Gunicorn + Nginx + PostgreSQL 16 | Celery + Redis | 2 核 2G | 必须用虚拟环境隔离;ALLOWED_HOSTS 要填域名 |
| Node.js | Node.js 22 LTS + PM2 + Nginx | Redis 7、MongoDB | 2 核 2G | 用 nvm 装,避免 apt 源版本过旧;PM2 需 pm2 startup 设自启 |
| 纯静态站点 | 仅 Nginx 1.26 | 无 | 1 核 1G | 开启 gzip 与浏览器缓存即可,不需要任何运行时 |
这张表解决的是"装什么",而"怎么装"取决于上一节的路线选择:手工路线按后文逐条执行,Compose 路线把组件换成镜像并写进 YAML 即可。
第一步:系统初始化
结论:安装任何软件之前先更新系统包索引并安装基础工具集,避免后续因缺少编译依赖而反复失败。 同时建议设置时区,否则日志时间与监控告警会对不上。
# ===== Ubuntu 24.04 / Debian 12 =====
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget vim git unzip zip htop lsof net-tools \
build-essential ca-certificates gnupg software-properties-common
sudo timedatectl set-timezone Asia/Shanghai
# ===== Rocky Linux 9 / AlmaLinux 9 =====
sudo dnf update -y
sudo dnf install -y curl wget vim git unzip zip htop lsof net-tools \
gcc gcc-c++ make ca-certificates gnupg
sudo timedatectl set-timezone Asia/Shanghai
# ===== CentOS 7(已 EOL,仅存量环境参考)=====
# sudo yum update -y
# sudo yum install -y epel-release curl wget vim git unzip net-tools国内服务器建议更换软件源镜像以加速下载:
# Ubuntu 24.04 替换为阿里云镜像(先备份)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's|http://archive.ubuntu.com|https://mirrors.aliyun.com|g; \
s|http://security.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list
sudo apt update
# Rocky Linux 9 更换为阿里云镜像
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://dl.rockylinux.org/\$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \
-i /etc/yum.repos.d/rocky*.repo
sudo dnf makecache第二步:安装并配置 Nginx
结论:Nginx 承担静态资源、反向代理与负载均衡三重角色,是整个运行环境的流量入口。 Ubuntu 24.04 官方源提供的 Nginx 版本为 1.24,如需 1.26 可添加官方仓库。
# 安装 Nginx(Ubuntu / Debian)
sudo apt install -y nginx
# 启动并设置开机自启
sudo systemctl enable --now nginx
sudo systemctl status nginx --no-pager
# 验证服务可用(返回 HTTP/1.1 200 OK 即成功)
curl -I http://127.0.0.1
# 关键路径一览
# 主配置: /etc/nginx/nginx.conf
# 站点配置: /etc/nginx/sites-available/ → /etc/nginx/sites-enabled/
# 默认根目录: /var/www/html
# 访问日志: /var/log/nginx/access.log
# 错误日志: /var/log/nginx/error.log配置一个反向代理站点,把 8080 端口的应用暴露到 80 端口:
server {
listen 80;
server_name example.com www.example.com;
# 静态资源直接由 Nginx 返回,不经过后端
location /static/ {
alias /data/app/static/;
expires 30d;
access_log off;
}
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 30s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}
client_max_body_size 20m;
access_log /var/log/nginx/example.access.log;
}# 启用站点并校验语法
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t # 必须显示 syntax is ok
sudo systemctl reload nginx # 平滑重载,不断连接
# Rocky Linux 9 需放行 HTTP 服务
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload第三步:安装数据库与缓存
结论:MySQL 8.4 LTS 是最稳妥的关系型数据库选择,PostgreSQL 16 适合需 JSONB、GIS 或复杂查询的场景,Redis 7 用于缓存与会话。 安装完成后必须执行安全初始化脚本。
# ===== MySQL 8.4 LTS(Ubuntu 24.04 源默认即为 8.0.x,8.4 需官方源)=====
sudo apt install -y mysql-server
sudo systemctl enable --now mysql
# 安全初始化:设置 root 密码策略、删除匿名用户、禁止 root 远程登录
sudo mysql_secure_installation
# 登录并创建业务库与专用用户
sudo mysql -e "CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'Str0ng!Passw0rd';"
sudo mysql -e "GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost'; FLUSH PRIVILEGES;"
# 验证连接
mysql -u appuser -p -e "SELECT VERSION(), @@port;"PostgreSQL 16 与 Redis 7 的安装:
# ===== PostgreSQL 16 =====
sudo apt install -y postgresql postgresql-contrib # Ubuntu / Debian
# sudo dnf install -y postgresql-server postgresql-contrib # Rocky Linux 9
sudo systemctl enable --now postgresql
sudo -u postgres psql -c "SELECT version();"
# 创建用户与数据库
sudo -u postgres createuser --pwprompt appuser
sudo -u postgres createdb -O appuser appdb
# ===== Redis 7 =====
sudo apt install -y redis-server
sudo systemctl enable --now redis-server
# 修改配置:绑定内网、设置密码、限制内存
sudo sed -i 's/^bind .*/bind 127.0.0.1 -::1/; s/^# requirepass.*/requirepass YourRedisPass/' /etc/redis/redis.conf
echo "maxmemory 512mb" | sudo tee -a /etc/redis/redis.conf
echo "maxmemory-policy allkeys-lru" | sudo tee -a /etc/redis/redis.conf
sudo systemctl restart redis-server
# 验证
redis-cli -a YourRedisPass ping # 应返回 PONG第四步:安装语言运行时
结论:运行时安装遵循两条原则——用官方源或版本管理器安装以获得正确版本,永远不要在生产环境直接使用 root 权限跑应用进程。 下面给出三种主流语言的推荐安装方式。
JDK 21(Java 项目)
# Ubuntu 24.04 / Debian 12 安装 OpenJDK 21 LTS
sudo apt install -y openjdk-21-jdk
# Rocky Linux 9:sudo dnf install -y java-21-openjdk-devel
# 验证安装
java -version
javac -version
# 配置 JAVA_HOME(写入全局环境变量)
echo 'export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64' | sudo tee /etc/profile.d/java.sh
echo 'export PATH=$JAVA_HOME/bin:$PATH' | sudo tee -a /etc/profile.d/java.sh
source /etc/profile.d/java.sh
echo $JAVA_HOMEPython 3.12(虚拟环境隔离)
# Ubuntu 24.04 默认已带 Python 3.12
python3 --version
# 安装 venv 与 pip
sudo apt install -y python3-venv python3-pip
# 创建独立虚拟环境,避免污染系统 Python
python3 -m venv /opt/venvs/appenv
source /opt/venvs/appenv/bin/activate
# 在虚拟环境内安装依赖(使用国内镜像加速)
pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 退出虚拟环境
deactivateNode.js 22 LTS(推荐用 nvm 管理)
# 安装 nvm(Node Version Manager)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
# 安装 Node.js 22 LTS 并设为默认
nvm install 22
nvm use 22
nvm alias default 22
# 验证与配置 npm 镜像
node -v && npm -v
npm config set registry https://registry.npmmirror.com
# 全局安装 PM2 进程管理器
npm install -g pm2
pm2 startup systemd # 生成开机自启配置
pm2 savePHP 8.3(LNMP 与 WordPress 场景)
Debian/Ubuntu 官方源的 PHP 版本往往落后,建议添加 ondrej/php 仓库后再安装。PHP-FPM(FastCGI Process Manager)是 PHP 的进程管理器,Nginx 通过 FastCGI 协议把 PHP 请求转给它处理,两者必须版本匹配。
# Ubuntu 24.04 添加 PHP 官方仓库
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
# 安装 PHP 8.3 与常用扩展
sudo apt install -y php8.3-fpm php8.3-mysql php8.3-gd php8.3-curl \
php8.3-mbstring php8.3-xml php8.3-zip php8.3-redis php8.3-opcache
# 启动 FPM 并确认监听套接字
sudo systemctl enable --now php8.3-fpm
ls -l /run/php/php8.3-fpm.sock
# 调整上传与内存限制
sudo sed -i 's/^upload_max_filesize.*/upload_max_filesize = 64M/; \
s/^post_max_size.*/post_max_size = 64M/; \
s/^memory_limit.*/memory_limit = 256M/' /etc/php/8.3/fpm/php.ini
sudo systemctl restart php8.3-fpmNginx 侧对应的 PHP 转发配置如下,注意 fastcgi_pass 的路径要与上一步查到的套接字一致:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
企业QQ咨询




