云服务器搭建博客网站全套流程(浓缩版)
Published in:2024-02-01 | category: 博客搭建 reading:

1.配置安全组

为云服务器安装CentOS 7系统,首先配置安全组,放开【入方向规则】指定或全部端口以正常安装宝塔运维工具

【入方向规则】与【出方向规则】的配置示例如下图:

2.安装宝塔

使用在线安装或者键入命令

yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

装好后控制台会打印登录地址和账号密码

3.安装Nginx

建议使用宝塔安装Nginx,方便后续配置与自动续期SSL证书

但也可以手动安装,下面是手动使用命令安装的方式

//一键安装全部依赖

yum -y install gcc zlib zlib-devel pcre-devel opensslopenssl-devel

//创建一个Nginx文件夹

cd /usr/local
mkdir nginx
cd nginx

//下载tar包

wget http://nginx.org/download/nginx-1.13.7.tar.gz

tar -xvf nginx-1.13.7.tar.gz

//进入nginx目录

cd /usr/local/nginx

//进入目录(以实际安装版本号为准)

cd nginx-1.13.7

//执行命令考虑到后续安装ssl证书 添加两个模块

./configure –with-http_stub_status_module –with-http_ssl_module

//执行make命令

make

//执行make install命令

make install

//nginx安装完毕后,为了今后使用方便,将nginx配置到环境变量

echo ‘export PATH=/usr/local/nginx/sbin:$PATH’ >> /etc/profile

//并使其生效

source /etc/profile

//接下来直接输入nginx -v,看看环境变量有没有配置成功

nginx -v

修改/usr/local/nginx/conf/nginx.conf

将里面的地址改为网站目录位置

主要修改的部分(示例)

location / {
root /www/wwwroot/cpblog-hexo/public;
index index.html index.htm;
}

#防盗链设置,只允许自己网站访问自己的多媒体资源
location ~*.(png|jpg|jpeg|gif|mp4){
root /www/wwwroot/epya15.fun;
valid_referers none blocked www.epya15.fun epya15.fun;
if ($invalid_referer) {
#return 403; #可以返回403,盗链网页显示的是一个裂开的图
rewrite ^/ /images/invalid_referer_tip.png break; #返回一个自己定制的图片
}
}

4.配置防火墙

建议在宝塔上设置防火墙

过程中可能遇到系统没有安装防火墙的情况,可以用下面的命令安装

yum install firewalld

下面是一些操作防火墙的命令,下面这些命令均可在宝塔上找到对应可视化设置项

//查看防火墙开启状态

systemctl status firewalld

//开启防火墙,没有任何提示则为开启成功

systemctl start firewalld

//如果要关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能,没有任何提示则关闭成功

systemctl stop firewalld

//永久开启80端口

firewall-cmd –permanent –zone=public –add-port=80/tcp –permanent

//查看80端口是否开启

firewall-cmd –permanent –query-port=80/tcp

//重启防火墙

firewall-cmd –reload

测试:在云服武器上ping 百度看看能不能ping通,在其它电脑上ping云服务器看看能不能ping通

5 购买域名,并设置DNS解析到当前服务器的IP

首先选购一个域名,或者使用目前手上已有的域名

然后配置DNS解析,如下图

过一会,用其他电脑ping一下这个域名,看看定向到的IP是否正确

6.用宝塔的Let’s Encrypt申请免费SSL证书

Let’s Encrypt提供免费的SSL证书,申请之前,请确保域名已解析,如未解析会导致审核失败。

Let’s Encrypt免费证书有效期3个月,支持多域名。宝塔可以帮助其自动续签。

申请完成后,网站即可使用https访问,安全性大大提高。

7.云服务器安装git及ssh免密

本地写的博文需要同步到云服务器,我们使用git来进行版本管理。其中云服务器只负责拉取,不负责推送。

首先给服务器安装git

yum –y install git

键入git指令验证是否安装成功

新建文件夹作为网站根目录(如果在第3步使用了宝塔搭建Nginx服务,则忽略此步)

mkdir www/wwwroot

chmod 777 www/wwwroot

生成ssh密钥(注意替换为自己的邮件地址)

ssh-keygen -t ecdsa -b 521 -C ‘yourmailaddress@gmail.com‘ -f ~/.ssh/id_ecdsa

连按3次回车

接着提取公钥

cat ~/.ssh/id_ecdsa.pub

将公钥填到github的ssh列表中(在网页端配置,具体过程略)

输入

ssh -T git@github.com

提示Successfully即为完成配置

进入www/wwwroot目录,克隆自己的git仓库,本地仓库名比如为cpblog

git clone git@github.com:xxxxxxx/xxxxxx.github.io.git cpblog

8.本地环境安装

本地电脑环境简介

(Windows系统,需要git,nodejs,hexo,不需要Nginx)

装git

本地也需安装git,主要负责内容推送,具体过程可参考互联网,本文略

git可视化工具可使用GitExtension(Windows)或SourceTree(mac)

装nodejs

(为避免执行cmd权限不足,最好不要装到C盘,建议路径 D:\nodejs,且放开这个目录的用户访问权限)

https://nodejs.org/en/

在 nodejs 文件夹中新建两个空文件夹node_cache、node_global,执行

npm config set prefix “D:\nodejs\node_global”
npm config set cache “D:\nodejs\node_cache”

装hexo

npm install -g hexo-cli

配置hexo到环境变量PATH中

D:\nodejs\node_global

D盘新建目录D:\cpblog-hexo

在这个目录下执行Git Bash,执行以下命令

npm install -g hexo-cli
hexo g
hexo s

然后在浏览器输入http://localhost:4000/

看能不能看见网页

9.部署自动化

我们要实现的最终效果为:本地写文 -> 上传github -> 云服务器拉新git -> 刷新网站

下划线的部分均通过自动化命令实现

主体思想:本地持有全套hexo工程+hexo环境,服务器有全套hexo工程,本地使用hexo g生成网页,将产生的修改全部推送到git上,再调用服务器的git命令进行拉取

设置本地免密操作服务器git命令

如果使用了宝塔,需要检查一下宝塔的安全中是否允许SSH密码登录和密钥登录

将本地电脑的.ssh/id_rsa.pub的内容粘贴至服务器的/root/.ssh/authorized_keys文件中,这个文件可以粘贴多个key,换行即可

云服务器开放shell目录

在本地操作

在cpblog-hexo的git工程下创建shell文件夹,进入shell文件夹新建两个脚本文件deploy-server.sh和deploy.sh

deploy-server.sh内容如下(网站路径按实际情况调整)

#服务器拉新
cd /www/wwwroot/cpblog-hexo
git reset –hard
git clean -df
git pull

deploy.sh内容如下(网站路径按实际情况调整)

#本地进行hexo发布 -> 上传至git -> 远端服务器拉新

echo “=================== Step1 < hexo generate > ===================”
cd D:\cpblog-hexo
#hexo clean
hexo g

echo “=================== Step2 < local git push > ===================”
git pull
git add -A
git commit -m “conventional update by deploy.sh”
git push

echo “=================== Step3 < server git pull > ===================”
ssh root@服务器ip地址 bash /www/wwwroot/cpblog-hexo/shell/deploy-server.sh

echo “=================== Finished ===================”

deploy.sh的作用:由本地调用,实现网站一键生成和部署

deploy-server.sh的作用:由deploy.sh内部调用,实际发生在服务器端,用于拉新git

因为本地脚本会调用服务器的deploy-server.sh,所以现在要去云服务器,给shell目录赋予777权限

chmod 777 /www/wwwroot/cpblog-hexo/shell

最佳实践

本地写一篇文章,放在D:\cpblog-hexo\source\_posts路径下

双击deploy.sh执行部署

执行完毕后,就会发现网页刷新了

10.写文工具链

文章中的图片/视频等资源文件有两种方式保存:存到自己服务器或第三方图床(比如七牛云,PicGO,GitHub)

写文推荐使用Typora,Typora支持mac和Windows,但要收费(淘宝80元一个激活码)

图床方案

Typora + PicGo + github 实现最舒服的图片引用姿势

PicGo用于上传图片到github,相当于用github当图床

Typora 和PicGo有很好的适性,只要拖拽一张图片到Typora里,就能自动上传到github

https://zhuanlan.zhihu.com/p/280758822

本机存储方案

请注意,只有服务器带宽够高,才建议使用此种方式

修改Typora的偏好设置->图像,按照下图配置

这样配置完成后,当拖拽一张图片进入文章时,会生成一个与博文同名的文件夹,并把文件拷贝到此文件夹内。

最后提供一个飞书云文档转markdown工具
https://feishu2md.onrender.com/

Prev:
解决Unity打包访问google超时问题
Next:
Unity 与 iOS 工程桥接介绍