返回文章
blog 项目 Ubuntu 22.04 部署手册(上篇:服务器环境部署)
新服务器首次部署基础设施准备:系统初始化、Node.js 20 + PM2、MySQL 8、Redis、Nginx、Jenkins 的安装与配置。
上篇:服务器环境部署
> 本篇为基础设施准备,新服务器首次部署时按顺序执行,后续项目迭代无需重复。
1. 系统初始化
sudo apt update && sudo apt upgrade -y
sudo apt install -y vim wget curl unzip zip git lrzsz openssl ca-certificates gnupg build-essential rsync lsof
建议只开放公网需要访问的端口。MySQL 和 Redis 与后端在同一台机器,默认只监听 127.0.0.1,不要开放到公网。
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp
sudo ufw enable
sudo ufw status
创建部署目录:
sudo mkdir -p /www/blog/serve /www/blog/web/dist /www/blog/admin/dist
sudo chown -R ubuntu:ubuntu /www/blog
2. 安装 Node.js 20 和 PM2
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
node -v
npm -v
sudo npm config set registry https://registry.npmmirror.com
sudo npm install -g pm2
pm2 -v
如果 Jenkins 构建时找不到 node/npm/pm2,在 Pipeline 中显式设置:
export PATH=/usr/local/bin:/usr/bin:/bin:$PATH
3. 安装 MySQL 8
sudo apt install -y mysql-server
sudo systemctl enable mysql
sudo systemctl start mysql
sudo systemctl status mysql
初始化数据库和密码:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的MySQL密码';
CREATE DATABASE IF NOT EXISTS blog_system DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
FLUSH PRIVILEGES;
EXIT;
验证:
mysql -uroot -p你的MySQL密码 -e "SHOW DATABASES;"
备份命令:
mysqldump -uroot -p你的MySQL密码 --default-character-set=utf8mb4 blog_system > /www/blog/backup_blog_system_$(date +%F_%H%M%S).sql
恢复命令:
mysql -uroot -p你的MySQL密码 --default-character-set=utf8mb4 blog_system < backup.sql
4. 安装 Redis
sudo apt install -y redis-server
sudo systemctl enable redis-server
编辑配置:
sudo vim /etc/redis/redis.conf
建议配置:
bind 127.0.0.1 ::1
protected-mode yes
port 6379
requirepass 你的Redis密码
maxmemory-policy allkeys-lru
appendonly yes
重启并验证:
sudo systemctl restart redis-server
redis-cli -a 你的Redis密码 ping
返回 PONG 即正常。
5. 安装 Nginx
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
6. 安装 Jenkins
安装 JDK 和 Jenkins:
sudo apt install -y openjdk-17-jdk
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list
sudo apt update
sudo apt install -y jenkins
sudo systemctl enable jenkins
sudo systemctl start jenkins
初始化密码:按 Jenkins 页面提示在服务器本机查看,公开博客不要展示具体命令输出。
建议安装插件:
Git Plugin
Pipeline
SSH Agent
NodeJS Plugin
配置 Git SSH 凭据:在 Jenkins 凭据管理中新增 SSH 凭据,并把对应公钥添加到代码托管平台。公开博客不要展示私钥、凭据 ID 或真实仓库地址。
目录权限:
sudo chown -R jenkins:jenkins /www/blog
PM2 注意:
Jenkins 用户启动的 PM2 进程归 Jenkins 管。
如果之前用 ubuntu 或 root 启动过同名 PM2,先统一停掉,避免两个用户各有一套 PM2。
pm2 delete blog-server || true
sudo -u jenkins pm2 delete blog-server || true
评论留言
登录后可留言和点赞