从零部署服务器:Nginx + MySQL + Java 全套指南

前言

本文面向准备将 Web 应用部署到 Ubuntu 服务器的开发者 —— 无论是初次接触运维的全栈开发者,还是希望快速搭建开发环境的团队,都能通过本文按步骤完成一套生产可用的基础环境部署。

典型应用场景:Spring Boot 后端服务 + 前端分离项目,配合 Nginx 反向代理、MySQL 数据库与 S3 兼容的对象存储,完成从代码到线上服务的完整闭环。

完成部署后,你将获得:

  • 一个可对外提供 API 服务并托管前端静态资源的 Nginx 服务;
  • 一套支持远程访问的 MySQL 数据库;
  • Java 运行时环境,可直接运行 Spring Boot 应用;
  • Nginx 反向代理与缓存配置,提升访问性能;
  • S3 兼容的对象存储,方便管理图片等静态文件。

接下来,我们将从最基础的系统更新开始,逐步搭建这套完整的服务器环境。

1. 环境准备

首先更新系统并安装必要的软件包:

sudo apt update

2. Nginx 安装与基础配置

安装 Nginx:

sudo apt install nginx

安装完成后,编辑 Nginx 主配置文件,设置 Web 根目录:

sudo vi /etc/nginx/nginx.conf

root 指向你的 Web 文件目录,例如:

root /var/www/html;

3. MySQL 安装与远程访问

3.1 安装 MySQL

sudo apt install mysql-server

3.2 修改 root 用户密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';

注意:root 用户默认不允许远程连接,请根据安全需求决定是否开启。

3.3 创建远程访问用户

CREATE USER 'dev1'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'dev1'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

3.4 修改 MySQL 绑定地址

编辑 MySQL 配置文件:

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

找到 bind-address 并修改为:

bind-address = 0.0.0.0

然后重启 MySQL:

sudo systemctl restart mysql

4. Java 环境部署

安装 OpenJDK 8 运行环境:

sudo apt install openjdk-8-jre-headless

假设你的应用打包为 app-1.0.jar,启动命令如下(使用了 Spring Boot 的 PropertiesLauncher):

nohup java -cp app-1.0.jar -Dloader.path=./lib org.springframework.boot.loader.PropertiesLauncher --spring.profiles.active=prod &

5. Nginx 反向代理与静态资源

编辑站点配置文件:

sudo vi /etc/nginx/sites-available/default

5.1 API 反向代理

location /api {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $http_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;
}

5.2 图片静态资源

代理所有图片请求到本地目录,并添加缓存头:

# 图片请求代理到本地 /var/www/html/images/ 路径
location ~* \.(jpg|jpeg|png|gif)$ {
    root /var/www/html;
    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;

    # 缓存控制头
    add_header Cache-Control "public, max-age=36000, immutable";  # 10小时
    expires 10h;

    # 使用 ETag 进行缓存验证
    etag on;

    # 启用文件传输优化
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    try_files $uri $uri/ =404;
}

5.3 Nginx 代理 WebSocket

若你的应用使用了 WebSocket,可在 Nginx 中增加相应代理配置(根据实际需要调整)。

5.4 配置语法检查与重载

修改 Nginx 配置后,务必先检查语法是否正确,再重载服务使其生效:

# 检查配置文件语法
sudo nginx -t

# 若语法正确,重载 Nginx(不中断现有连接)
sudo systemctl reload nginx
# 或使用
sudo nginx -s reload

验证配置是否生效:

  1. curl 直接请求反向代理接口,检查返回状态码和响应头:
    # 测试 API 代理
    curl -I http://你的服务器IP/api
    
    # 测试图片缓存头
    curl -I http://你的服务器IP/test.png
    
  2. 查看 Nginx 访问日志与错误日志,确认请求已正确代理:
    sudo tail -f /var/log/nginx/access.log
    sudo tail -f /var/log/nginx/error.log
    
  3. 检查 Nginx 进程及监听端口是否正常:
    sudo systemctl status nginx
    sudo netstat -tlnp | grep nginx
    

以上步骤可帮你快速确认 Nginx 配置无误且反向代理已按预期生效。

6. 对象存储 S3

RustFS 兼容 MinIO。

GitHub 仓库:https://github.com/rustfs/rustfs/blob/main/README_ZH.md

安装命令:

curl -O https://rustfs.com/install_rustfs.sh && bash install_rustfs.sh

默认账号/密码:rustfsadmin / rustfsadmin

后端服务端口:9000,Web 访问端口:9001

中文官网文档:https://docs.rustfs.com.cn/installation/linux/quick-start.html

7. 日志与调试

启动服务后,可通过以下命令实时查看 Nginx 错误日志:

sudo tail -f /var/log/nginx/error.log

8. 总结

以上完整记录了从零部署一台服务器的全部步骤,涵盖了 Nginx、MySQL、Java 运行环境以及反向代理与静态资源缓存配置。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值