阿里云服务器部署全攻略
·
环境准备
阿里云服务器推荐选择 CentOS 7.x 或 Ubuntu 20.04 LTS 操作系统,配置至少 2核4G 的实例。通过 SSH 连接服务器后,安装基础工具包:
yum update -y && yum install -y git wget curl # CentOS
apt update -y && apt install -y git wget curl # Ubuntu
前端部署
Vue3 项目需先进行生产环境构建。在本地开发环境执行:
npm run build
生成的 dist 文件夹通过 SFTP 上传至服务器 /var/www 目录。安装 Nginx 作为前端服务器:
yum install nginx -y # CentOS
apt install nginx -y # Ubuntu
配置 Nginx 指向前端资源:
server {
listen 80;
server_name your_domain.com;
root /var/www/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
后端部署
安装 JDK 17 和 Maven:
yum install -y java-17-openjdk-devel maven # CentOS
apt install -y openjdk-17-jdk maven # Ubuntu
将 Spring Boot 项目打包后的 JAR 文件上传至 /opt/app。创建 Systemd 服务管理:
[Unit]
Description=Spring Boot App
After=syslog.target
[Service]
User=root
ExecStart=/usr/bin/java -jar /opt/app/your-app.jar
Restart=always
[Install]
WantedBy=multi-user.target
数据库配置
安装 MySQL 8.0:
wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
rpm -ivh mysql80-community-release-el7-5.noarch.rpm
yum install -y mysql-community-server
初始化后创建数据库用户:
CREATE DATABASE app_db;
CREATE USER 'app_user'@'%' IDENTIFIED BY 'SecureP@ss123';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'%';
安全配置
- 防火墙放行必要端口:
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
- 配置 SSL 证书(以 Let's Encrypt 为例):
certbot --nginx -d your_domain.com
- 禁用 root 远程登录,修改 SSH 端口:
Port 2222
PermitRootLogin no
持续集成
在项目根目录添加 GitHub Actions 配置 .github/workflows/deploy.yml:
name: CI/CD Pipeline
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm install && npm run build
- uses: easingthemes/ssh-deploy@main
with:
server: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_KEY }}
source: "dist/"
target: "/var/www"
监控维护
安装 PM2 管理 Node 进程(如需 SSR):
npm install pm2 -g
pm2 start npm --name "ssr-server" -- run start
配置日志轮转:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
/etc/init.d/nginx reload >/dev/null
endscript
}
更多推荐
所有评论(0)