前言
故事发生在上个星期一下午,秋风伴随着暖阳,映照出我在机房电脑上键盘敲击的身影。突然,伴随着一行指令运行mv /* ~/home/blog-end/
,我发出土拨鼠尖叫------啊啊啊啊啊!!!!我服务器,窝滴服务器哟,哎哟,你干嘛,窝滴服务器哟!!!
就这样,我把所有/
目录下的文件给迁移了,/usr/bin/...
所有文件都迁移了,还被我关了服务器窗口,后面重启也连不上了,我又是一声土拨鼠尖叫------啊啊啊啊啊啊!!!!如今只剩下一个方法了,那便是转世重修重新初始化系统
......
重活一世,我要踏至巅峰
我,是上一代服务器的转世,重活一世,这一世我便要踏上那巅峰看一看,接下来便随着我一起打怪升级,踏上那巅峰吧......
搭建环境
在初始化系统的时候我选择的是诸天万界的高级系统ubuntu_22_04_x64
,要部署的是我的博客项目,前端是nginx启动,后端是pm2启动,需要准备的环境有:nvm、node、mysql、git
等
1. 更新资源包,确保你的系统已经获取了最新的软件包信息
sql
sudo apt update
2. 安装mysql
csharp
// 安装的时候一路`enter`就可以了
sudo apt install mysql-server
// 安装完后启动mysql服务
sudo systemctl start mysql
// 设置开机自启动
sudo systemctl enable mysql
// 检测数据库是否正在运行
sudo systemctl enable mysql
// 安装完后启动mysql服务
sudo systemctl start mysql
// 运行以下指令登录数据库,第一次输入的密码会作为你数据库的密码
mysql -u root -p
//在这里我会成绩一个子用户,使用子用户进行链接数据库操作,而不是直接root用户直接操作数据库
// 这里的dms换成用户名,PASSword123换成密码
create user 'dms'@'%' identified by 'PASSword123!'; // 创建子用户
grant all privileges on *.* to 'dms'@'%'with grant option; // 授权
flush privileges; // 生效用户
配置数据库运行远程链接
cd /etc/mysql/mysql.conf.d
vim mysqld.cnf //进入mysql配置文件修改 bind-address为0.0.0.0
3. 安装nvm管理node版本
arduino
sudo apt install https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
nvm --version // 查看是否正确输出
// 安装node版本
nvm install 19.1.0
// 查看是否正确输出
node --version
npm --version
4. 安装git并配置github
scss
sudo apt install git
git --version // 查看输出版本
配置shh(这里我是直接一路Enter的)
①输入 ssh-keygen -m PEM -t rsa -b 4096,按enter;
②此后初次出现到②,出现的是保存密钥的路径,建议默认,按Enter;
③此时出现③,出现的提示是设置密码,千万不要设置!!!按Enter;
④此时出现④,出现的提示是再次输入密码,不要有任何输入,继续按Enter;
生成之后默认是在在服务器根目录下的.shh
目录,这里直接运行以下指令
bash
cd ~
cd .ssh
vim id_rsa.pub
进入id_rsa.pub
文件复制公钥,到github的setting
然后找到SSH and GPG keys去New SSH key,将公钥作为值保存就可以了
5. 安装nginx并配置nginx.conf
arduino
sudo apt install nginx
// 安装完后启动nginx服务
sudo systemctl start nginx
// 设置开机自启动
sudo systemctl enable nginx
关于配置nginx,我一般每个nginx项目都会在conf.d目录单独写一个配置文件,方便后期更改,以下是我的个人博客的nginx配置,注意:conf.d里的配置文件后缀名必须是.conf才会生效
listen
是监听的端口;server name
是服务器公网ip,也可以写域名;root
是前端项目所在地址;index
表示的是访问的index.html文件;ry---_files
这里是因为我vue项目打包用的history
模式做的处理,hash
模式可以忽略;
6. pm2的安装以及配置
arduino
npm install -g pm2
// 由于我项目使用了ts,并且没有去打包,所以我pm2也要安装ts-node
pm2 install ts-node
// 进入到后端项目的目录
cd /home/blog-end
// 初始化pm2文件
pm2 init // 运行之后会生成ecosystem.config.js配置文件
以下是我对pm2文件的配置,由于我是用了ts,所以我需要用到ts-node解释器,使用JavaScript的可以忽视interpreter属性
之后pm2 start econsystem.config.js
运行配置文件就可以了
PS:本来是想今晚把这篇文章写完的,还差一个化部署模块,但是在配置的时候遇到点问题,1点半了,熬不住了,明天再研究了,明天把自动化部署模块补上,双十一买了腾讯云新的服务器,现在是把项目部署到腾讯云的服务器上
项目地址(大佬们给个star⭐)
我的博客项目地址:
朋友的博客项目地址:
前端:leslieXin92/ThousandSunny: personal website front-end (github.com)
后端:leslieXin92/GoingMerry: personal website back-end (github.com)