博客·

实现个人博客—服务器部署

服务器部署详细步骤

前期准备

本人选用阿里云服务器ECS,底部有活动自行挑选,如下:

image.png

新用户有免费试用,可先上手试试再选择购买

操作系统我选择的是Ubuntu 22.04 UEFI版

连接服务器

  • 通过Workbench远程连接,如下:

image.png

  • 忘记密码,重置密码,如下:

image.png

image.png

  • 登录实例,打开文件树,如下:

image.png

配置安全组

配置允许外网访问端口

路径:云服务器ECS/安全组

  • 点击创建安全组image.png
  • 设置访问规则,通过访问规则开放端口号image.png
  • 实例加入安全组

image.png

image.png

安装环境

下载注意

每次下载完软件后,会提前重启服务,类似如下:

image.png

解决办法:ECS 退出即可

更改ubuntu下载源(国内)

根据Ubuntu版本查询清华源

  • 通过vim修改source.list文件: sudo vim /etc/apt/sources.list
1.先按`i`进入编辑模式
2.将以下内容粘贴到文件中: 
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
3.按`Esc`退出编辑模式
4.输入`:wq`保存退出
  • 更新aptsudo apt-get update

安装node

1. 直接使用apt安装

sudo apt-get install nodejs
sudo apt install nodejs-legacy
sudo apt install npm

2. 安装nodezip包

# 创建node包所在目录
mkdir /opt/software

# 切换
cd /opt/software

# 下载包 node@16.15.0
wget https://nodejs.org/dist/v16.15.0/node-v16.15.0-linux-x64.tar.xz

# 解压
tar xvJf node-v16.15.0-linux-x64.tar.xz

# 删除包
rm -rf node-v16.15.0-linux-x64.tar.xz

# 配置全局环境变量
vi /etc/profile

配置全局环境变量步骤,如下:

1.先按`i`进入编辑模式
2.将以下内容粘贴到文件顶部: 
export PATH=$PATH:/opt/software/node-v16.15.0-linux-x64/bin/
3.按`Esc`退出编辑模式
4.输入`:wq`保存退出
5.保存环境变量 
source /etc/profile

# 验证
node -v
npm -v

注:最好将解压后的文件名 node-v16.15.0-linux-x64 修改成 node,同时环境变量配置 export PATH=$PATH:/opt/software/node-v16.15.0-linux-x64/bin/ 改成 export PATH=$PATH:/opt/software/node/bin/

更换npm镜像

# 更改
# 旧地址 https://registry.npm.taobao.org/
# 推荐新地址 https://registry.npmmirror.com/
sudo npm config set registry https://registry.npmmirror.com/

# 查看
sudo npm config list

根据个人所需下载cnpm、yarn、pnpm

# 下载
npm install cnpm -g 
npm install yarn -g 
npm install pnpm -g 

# 更改镜像
sudo cnpm config set registry https://registry.npmmirror.com/
sudo yarn config set registry https://registry.npmmirror.com/
sudo pnpm config set registry https://registry.npmmirror.com/

# 验证
cnpm -v
yarn -v
pnpm -v

下载git

# 下载
sudo apt-get install git

# 验证
git --version

下载nginx

# 下载
sudo apt-get install nginx

# 验证
nginx -v

下载pm2

# 下载
npm install pm2 -g

# 验证
pm2 -v

下载unzip

# 下载
sudo apt install unzip

# 验证
unzip -V

下载mysql

# 下载
sudo apt install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev

# 验证
sudo systemctl status mysql
or
sudo netstat -tap | grep mysql

下载jenkins

不同系统的官方安装方法,以下是ubuntu下载步骤:

# 添加秘钥
sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
    https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key

# 添加安装源
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 > /dev/null

# 更新
sudo apt-get update

# 下载java
sudo apt-get install fontconfig openjdk-17-jre

# 下载jenkins
sudo apt-get install jenkins

# 检查java
java --version

# 检查jenkins
jenkins --version

# 启动
service jenkins start

nginx配置

官方文档

nginx常用命令

# 编辑配置
vim /etc/nginx/nginx.conf
# 启动(下载好默认启动)
/etc/init.d/nginx start
# 检查
nginx -t
# 停止
nginx -s stop
# 重新加载
nginx -s reload
1. 配置权限
  • 通过vim修改nginx.conf文件: sudo vim /etc/nginx/nginx.conf
1.先按`i`进入编辑模式
2.第一行改为 user root;
3.按`Esc`退出编辑模式
4.输入`:wq`保存退出

2. nginx http配置
  • server_name: 域名地址
  • proxy_pass 代理地址
# 后台管理配置
server {
  listen 80;
  server_name xx.vliangao.cn;

  location / {
    root /home/blog/blog-admin/dist;
    index index.html;
  }

  include /etc/nginx/default.d/*.conf;
}

# 前台配置
server {
    listen 80;
    server_name vliangao.cn www.vliangao.cn;

    location / {
        proxy_pass http://127.0.0.1:8000/;
    }

    include /etc/nginx/default.d/*.conf;
}

# 接口配置
server {
    listen 80;
    server_name xx.vliangao.cn;

    location / {
        proxy_pass http://127.0.0.1:3000/;
    }

    include /etc/nginx/default.d/*.conf;
}
3. nginx ssl配置

certbot生成ssl证书

# 下载
sudo apt-get install certbot
# 生成
# 二级域名
sudo certbot certonly --preferred-challenges dns --manual -d *.vliangao.cn
# 一级域名
sudo certbot certonly --preferred-challenges dns --manual -d vliangao.cn

生成TXT记录,验证是否已经部署

将生成的TXT记录,配置域名解析

生成SSL证书

查看证书有效时间

sudo certbot certificates

手动更新 默认有效期90天

# 更新
sudo certbot renew

配置nginx server

  • ssl_certificate、ssl_certificate_key: ssl证书配置,修改成自己的证书地址
# 后台管理配置
server {
  listen 443 ssl;
  server_name xx.vliangao.cn;

  ssl_certificate /etc/letsencrypt/live/vliangao.cn/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/vliangao.cn/privkey.pem;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
  ssl_prefer_server_ciphers on;

  location / {
    root /home/blog/blog-admin/dist;
    index index.html;
  }

  include /etc/nginx/default.d/*.conf;
}

# 前台配置
server {
  listen 443 ssl;
  server_name vliangao.cn www.vliangao.cn;

  ssl_certificate /etc/letsencrypt/live/vliangao.cn-0001/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/vliangao.cn-0001/privkey.pem;

  # 配置 SSL 协议和加密算法
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';

  # 配置其他 SSL 选项
  ssl_prefer_server_ciphers on;
  ssl_session_timeout 1d;
  ssl_session_cache shared:SSL:50m;
  ssl_session_tickets off;

  # 配置 SSL 证书验证和安全性选项
  ssl_stapling on;
  ssl_stapling_verify on;
  resolver 8.8.8.8;

  location / {
    proxy_pass http://127.0.0.1:8000/;
  }

  include /etc/nginx/default.d/*.conf;
}

# 接口配置
server {
  listen 443;
  server_name xx.vliangao.cn;

  ssl_certificate /etc/letsencrypt/live/vliangao.cn/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/vliangao.cn/privkey.pem;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
  ssl_prefer_server_ciphers on;

  location / {
    proxy_pass http://127.0.0.1:3000/;
  }

  include /etc/nginx/default.d/*.conf;
}

# http重定向到https
server {
  listen 80;
  server_name *.vliangao.cn;

  include /etc/nginx/default.d/*.conf;
  rewrite ^(.*)$ https://${host}$1 permanent;
}

mysql 配置

1. 访问并修改密码

第一次进入不需要输入密码,通过以下步骤修改密码退出后,再次进入需要输入密码。

# 进入mysql
mysql -u root -p

# 修改密码, new_password 为你要设置的密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';

# 更改保存
FLUSH PRIVILEGES;

# 退出
exit;

注: ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; 修改密码无效 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '7z5y3o3dznpu611a';

2. 配置远程访问
  • 通过vim修改mysqld.cnf文件: sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
1.先按`i`进入编辑模式 
2.使用#注释 bind-address、mysqlx-bind-address(如下图所示)
3.按`Esc`退出编辑模式
4.输入`:wq`保存退出

image.png

  • 重启mysql sudo systemctl restart mysql
  • 修改访问权限
# 进入mysql
mysql -u root -p

# 修改访问权限,根据不同版本修改,其中password为密码
# mysql@5.x
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';  
FLUSH PRIVILEGES;

# mysql@8.x
CREATE USER 'root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  • 测试连接成功,如下: image.png

jenkins 配置

访问地址:ip+端口号(默认端口号8080)

1. 查看密码并登陆
# 查看默认密码
cat /var/lib/jenkins/secrets/initialAdminPassword

image.png

2. 安装推荐插件

image.png

3. 创建用户

image.png

4.实例配置(直接保存并完成)

image.png

5.开始使用

image.png

6. 安装插件

路径:Manage Jenkins/Plugins

选择Available plugins,搜索giteenodejsPublish Over SSH 点击右侧安装

image.png

7. 配置全局工具

路径:Manage Jenkins/Tools

选择需要的node版本,点击应用+保存

image.png

8. 添加私人令牌
  • 进入 https://gitee.com/ 登录账号

image.png

或者

image.png

  • 进入账号设置 —— 私人令牌 —— 生成新令牌 点击复制将生成的令牌保存下来

image.png

  • 配置全局凭证 路径:Manage Jenkins/凭证/系统/全局凭证

image.png

9. 全局系统配置

路径:Manage Jenkins/System

Gitee配置

选择设置好的私人令牌,测试连接成功

image.png

Publish over SSH 配置

image.png

image.png

10. 配置SSH Key
  • 生成
# 创建 (一直回车)
ssh-keygen -t rsa -C '1289206613@qq.com'

# 查看公钥
cat ~/.ssh/id_rsa.pub

# 查看私钥
cat ~/.ssh/id_rsa
  • 将公钥配置到gitee上
  • 将私钥配置到jenkins上