统计
  • 建站日期:2021-03-10
  • 文章总数:3772 篇
  • 评论总数:29 条
  • 分类总数:43 个
  • 最后更新:5月19日
文章 未分类

服务器:重来一世,这一世我要踏至巅峰!

小菜鸡
首页 未分类 正文

前言

故事发生在上个星期一下午,秋风伴随着暖阳,映照出我在机房电脑上键盘敲击的身影。突然,伴随着一行指令运行mv /* ~/home/blog-end/,我发出土拨鼠尖叫——啊啊啊啊啊!!!!我服务器,窝滴服务器哟,哎哟,你干嘛,窝滴服务器哟!!!

就这样,我把所有/目录下的文件给迁移了,/usr/bin/...所有文件都迁移了,还被我关了服务器窗口,后面重启也连不上了,我又是一声土拨鼠尖叫——啊啊啊啊啊啊!!!!如今只剩下一个方法了,那便是转世重修重新初始化系统......

重活一世,我要踏至巅峰

我,是上一代服务器的转世,重活一世,这一世我便要踏上那巅峰看一看,接下来便随着我一起打怪升级,踏上那巅峰吧......

搭建环境

在初始化系统的时候我选择的是诸天万界的高级系统ubuntu_22_04_x64,要部署的是我的博客项目,前端是nginx启动,后端是pm2启动,需要准备的环境有:nvm、node、mysql、git

1. 更新资源包,确保你的系统已经获取了最新的软件包信息

sudo apt update

2. 安装mysql

// 安装的时候一路`enter`就可以了
sudo apt install mysql-server

// 安装完后启动mysql服务
sudo systemctl start mysql

// 设置开机自启动
sudo systemctl enable mysql

// 检测数据库是否正在运行
 sudo systemctl status mysql

// 运行以下指令登录数据库,第一次输入的密码会作为你数据库的密码
mysql -u root -p

// 如果输入密码报以下错误那就直接回车就能进入
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

// 进入之后记得修改密码,这里的new_password修改为自己的密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

//在这里我会创建一个子用户,使用子用户进行链接数据库操作,而不是直接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,如果是子用户的话需要在前面加上sudo提权


服务器:重来一世,这一世我要踏至巅峰!
-IT菜鸡教程网-IT技术博客
-第1
张图片

3. 安装nvm管理node版本

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

sudo apt install git

git --version // 查看输出版本

配置shh(这里我是直接一路Enter的)注意:这里要一定要使用以下指令生成ssh,后面有大用

①输入 ssh-keygen -m PEM -t rsa -b 4096,按enter;

②此后初次出现到②,出现的是保存密钥的路径,建议默认,按Enter;

③此时出现③,出现的提示是设置密码,千万不要设置!!!按Enter;

④此时出现④,出现的提示是再次输入密码,不要有任何输入,继续按Enter;

生成之后默认是在在服务器根目录下的.shh目录,这里直接运行以下指令

cd ~
cd .ssh
vim id_rsa.pub

进入id_rsa.pub文件复制公钥,到github的setting


服务器:重来一世,这一世我要踏至巅峰!
-IT菜鸡教程网-IT技术博客
-第2
张图片
然后找到SSH and GPG keys去New SSH key,将公钥作为值保存就可以了

服务器:重来一世,这一世我要踏至巅峰!
-IT菜鸡教程网-IT技术博客
-第3
张图片

5. 安装nginx并配置nginx.conf

sudo apt install nginx

// 安装完后启动nginx服务
sudo systemctl start nginx

// 设置开机自启动
sudo systemctl enable nginx

关于配置nginx,我一般每个nginx项目都会在conf.d目录单独写一个配置文件,方便后期更改,以下是我的个人博客的nginx配置,注意:conf.d里的配置文件后缀名必须是.conf才会生效


服务器:重来一世,这一世我要踏至巅峰!
-IT菜鸡教程网-IT技术博客
-第4
张图片

listen是监听的端口;
server name是服务器公网ip,也可以写域名;
root是前端项目所在地址;
index表示的是访问的index.html文件;
ry—_files这里是因为我vue项目打包用的history模式做的处理,hash模式可以忽略;

6. pm2的安装以及配置

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属性


服务器:重来一世,这一世我要踏至巅峰!
-IT菜鸡教程网-IT技术博客
-第5
张图片

之后pm2 start econsystem.config.js运行配置文件就可以了

自动化部署

我自动化部署使用的技术是github actions,因为它简单容易上手,都是use轮子就完事了。下面跟我一起来做自动化部署

在开始自动化部署之前,我们还有一件大事要做,还记得之前生成ssh链接的时候说必须使用ssh-keygen -m PEM -t rsa -b 4096指令吗?现在就到了它表演的时候了,我们要用它配置ssh远程链接

先把.ssh目录下的id_rsa密钥复制到authorized_keys里,这一步就是配置远程ssh链接

然后配置sshd_config允许远程ssh链接,vim /etc/ssh/sshd_config,找到PermitRootLogin修改值为yes


服务器:重来一世,这一世我要踏至巅峰!
-IT菜鸡教程网-IT技术博客
-第6
张图片

前端

进入自己的github项目地址,点击Actions去新建workflow,配置yml文件


服务器:重来一世,这一世我要踏至巅峰!
-IT菜鸡教程网-IT技术博客
-第7
张图片

进入项目的setting里的Actions secrets and variables,创建secret


服务器:重来一世,这一世我要踏至巅峰!
-IT菜鸡教程网-IT技术博客
-第8
张图片

后端

同样也是创建一个新的workflow,但服务端这里需要额外写一个脚本生成.env配置文件,因为服务端不可能把.env配置文件暴露到github的,那样特别不安全

script脚本


服务器:重来一世,这一世我要踏至巅峰!
-IT菜鸡教程网-IT技术博客
-第9
张图片

yml配置文件


服务器:重来一世,这一世我要踏至巅峰!
-IT菜鸡教程网-IT技术博客
-第10
张图片

PS:觉得对自己有用或者文章还可以的话可以点个赞支持一下!!!

项目地址(大佬们给个star⭐)

我的博客项目地址:

前端:jonlyes/blog-start: 个人博客—前端项目 (github.com)

后端:jonlyes/blog-end: 个人博客—后端项目 (github.com)

朋友的博客项目地址:

前端:leslieXin92/ThousandSunny: personal website front-end (github.com)

后端:leslieXin92/GoingMerry: personal website back-end (github.com)

来源:https://juejin.cn/post/7299357353543368716

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
客服邮箱:kefu@itcaiji.cn
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

-- 展开阅读全文 --
HTTP的场景实践 | 抖音青训营
« 上一篇
禁止在代码中使用异常,一次时隔7年的复盘
下一篇 »
为了防止灌水评论,登录后即可评论!

热门文章

1
2
什么是高防CDN
4
推特计划推出点对点支付功能
5
p5.js 3D图形-立方体

标签