一次博客部署的经历
本文最后更新于:2023年4月24日 凌晨
一次博客部署的经历
一、前言
在六七月份前前后后花了一个多月写一个博客项目,但是我还没有在真实环境部署过项目的经历,正好现在已经部署完了,就把部署过程写下来吧,以后忘记怎么部署了还可以看看。:)
二、服务器/域名购买
考虑到国内的服务器和域名还是比较便宜的,所以就选择了在国内购买服务器和域名。我购买的是阿里云的服务器以及域名。
为域名配置好了 www
记录,让域名指向我购买的服务器 IP
地址。
三,服务器相关配置
购买服务器的第一件事就是配置 ssh
远程连接。首先修改服务器的 /etc/ssh/sshd_config
,修改如下配置。
1 |
|
这些配置防止一些频繁的暴力破解攻击,接下来在本地生成公私钥对。
1 |
|
把私钥留在本地,上传公钥到服务器,并且将公钥中的内容导入 .ssh/authorized_keys
中。
1 |
|
这个时候还不可以登录,因为修改了默认的 22 端口,默认 22 是被阿里云的安全组放行的,但我修改的端口是没被阿里云的安全组放行的,所以要配置安全组规则。
找到安全组设置,手动添加一条规则,优先级任意,协议类型为自定义 TCP
,目的为 2022,源为:0.0.0.0/0
,保存。
重启 ssh
,退出服务器,采用密钥登录。
1 |
|
当然有了这些还不够,所以还可以使用 fail2ban
来做更强力的防护。
安装 fail2ban
。
1 |
|
检查 fail2ban
是否启动
1 |
|
在 /etc/fail2ban/jail.d/
中创建一个 sshd.local
,也就是创建一个新的监狱规则。fail2ban
最终会读取这个 监狱配置。
1 |
|
重启 fail2ban
,并且查看规则。
1 |
|
三,项目部署
在本地进行 maven
打包,并且上传到服务器。
1 |
|
在服务器中安装 jre
,由于只是每次部署到服务器的都是编译好的,所以只需安装 jre
即可。
1 |
|
安装数据库,这里安装的是 mariadb
数据库。
1 |
|
进行 mariadb
初始化。
1 |
|
修改 /etc/mysql/mysql.conf.d/mysqld.cnf
配置数据库的字符集编码。
1 |
|
由于高版本 (8) 的 mysql
加密规则是 caching_sha2_password
,会导致普通用户连接不上,所以这里修改加密规则为 mysql_native_password
,首先以 root
环境登录进 mysql
交互终端,执行以下命令。
1 |
|
退出 mysql
,重启。
1 |
|
创建相应的数据库并且导入相应的数据库脚本和数据脚本。
由于每次启动都需要写很长的命令,所以写一个脚本,方便运行。
启动脚本:
1 |
|
暂停脚本:
1 |
|
更改 start.sh
和 stop.sh
的权限。
1 |
|
找到安全组设置,手动添加一条规则,优先级任意,协议类型为自定义 TCP
,目的为 8080,源为:0.0.0.0/0
,保存。
执行 start.sh
脚本,打开浏览器输入服务器 IP
地址 + 8080,即能看到效果。
四,反向代理与HTTPS
为了让项目更好的访问以及安全性,接下来配置 nginx
和 https
,不过这两个前提都是,服务器需要先备案。
1. 备案
首先域名是要进行实名认证的,才能进行 ICP
备案,这个实名认证很快。
然后找到阿里云中的 备案服务号申请,右侧是 ECS
名称,在下方列表中选择当前实例,进行申请。
基本都是填一下基本个人信息进行核验,然后就是一些主办者信息(我这里主办者是个人),网站信息,就是描述这个网站是干什么用的( 由于我写的是博客相关的关键字,后来有客服来打电话帮我修改= = ),后面就是上传个人身份证正反面以及人脸识别,最后信息校验,进入
ICP
备案初审。差不过隔了一天,就收到了 阿里云 的短信,提示备案订单已经提交交管局审核,去工信部验证页面使用刚才的短信验证码验证。
隔天之后,收到 工信部 的短信,告诉我备案已经成功并且给了备案号,这个需要放入网站的底部中间位置。
2. Nginx 配置与安装
nginx
安装:
1 |
|
修改 /etc/nginx/nginx.conf
,加入以下配置:
1 |
|
重启 nginx
1 |
|
找到安全组设置,手动添加一条规则,优先级任意,协议类型为自定义 TCP
,目的为 80,源为:0.0.0.0/0
,保存。
打开浏览器,输入 域名 即可访问到网站,但此时还不是 HTTPS 的
3. HTTPS 配置
要配置 https
首先要有 ssl
证书,这里证书是通过阿里云免费获取。
当申请完成后,在证书管理的列表中选择已申请的证书,进行下载,选择 nginx
格式下载。
上传到服务器的 /usr/local/nginx/cert
下,一个文件为 pem
后缀的,一个文件为 key
后缀的。
修改 /etc/nginx/nginx.conf
配置。
1 |
|
重启 nginx
1 |
|
找到安全组设置,手动添加一条规则,优先级任意,协议类型为自定义 TCP
,目的为 443,源为:0.0.0.0/0
,保存。
打开浏览器,输入 https:// + 域名
,就可以看到右上角的小绿锁咯。