阿里云服务器ECS
参考链接:
官方链接:
学生机
如果是学生/新用户,一定要去看看有哪些优惠,比如阿里云开发者成长计划。此刻阿里云提供的学生优惠是免费使用2个月的服务器资源。如果购买的话,一个1核2G的服务器就足够了
设置安全组
进入控制台开启端口,否则外部无法访问。除了默认的三个端口,通过“快速添加”,我再添加了 http(80) & https(443) 两个端口。由于现在我对计算机网络一窍不通,所以先就这样吧
重置实例密码
修改密码之后实例就会自动重启
然后就可以通过 ssh root@ip
连接到服务器,其中 ip 是你服务器的公网 ip
Enjoy
之后就可以像操作 Linux 一样,操作自己的服务器啦!
将博客部署到服务器上
几个参考教程:阿里云教程 csdn 教程 腾讯云教程 知乎教程
在开始之前,先根据之前的 Linux 安装教程简单设置一下自己的服务器:添加新用户,更改主机名
现在本地配置好 hexo 环境,具体配置过程在之前的博客有详细记录
在服务器上安装 git
sudo yum install -y git
# 安装成功后查看 git version
git --version
git version 2.27.0
因为之前在 Ubuntu 上使用的是 apt 包管理,在 CentOS 上则换为 yum 包管理。我试验了一下,如果不加 sudo 是不能下载成功的
Error: This command has to be run under the root user.
所以我认为 yum 和 apt 一样需要 sudo 权限
安装 nginx
什么是 nginx?下面是官网描述
NGINX is a high‑performance, highly scalable, highly available web server, reverse proxy server, and web accelerator (combining the features of an HTTP load balancer, content cache, and more).
在我理解看来,部署网站的过程中 nginx 就是用来提供网页服务的服务器。这里就要更进一步理解什么是广义上的服务器
从广义上讲,服务器是指网络中能对其它机器提供某些服务的计算机系统。从狭义上讲,服务器是专指某些高性能计算机,能通过网络,对外提供服务。
使用以下命令安装
sudo yum install -y nginx
建立 git 仓库
Hexo 可以使用 git 来部署,这样每次写完之后就都可以使用git来一键部署了,比较方便。我们先为系统添加一个 git 用户
useradd -m git # 添加一个新用户
passwd git # 设置git用户密码
su git # 切换用户进行后续操作
cd /home/git/
mkdir -p projects/blog # 把项目目录建立起来
mkdir repos && cd repos
git init --bare blog.git # 创建仓库
cd blog.git/hooks
vim post-receive # 创建一个钩子
post-receive文件的内容如下:
#!/bin/sh
git --work-tree=/home/git/projects/blog --git-dir=/home/git/repos/blog.git checkout -f
给 post-receive 添加执行权限
chmod +x post-receive
git init —bare 和 git init 有什么区别? csdn 链接
hooks有什么作用? csdn 链接
该钩子的意思是当本地有提交到服务器时,会将文件放在/home/hexo下
-f
这个参数如果在多人协作的博客中可能会引发不好的结果,因为他是强制更新的意思,会将本地版本覆盖掉远程服务器的版本,但是是个人的博客系统就无所谓了
将公钥配置到服务器上
可以通过建立SSH信任关系,来免去登陆服务器时输入密码的步骤
ssh-copy-id -i ~/.ssh/id_rsa.pub git@server_ip
我尝试了一下自己手动复制 id_rsa.pub 到 authorized_keys 文件中,但是不能实现免密登陆,可能时复制时的字符串出现了问题,之前在 github 时也遇到了类似问题,直接复制公钥无法识别的情况
更改 git 用户默认 shell
为了安全,我们最好禁用 git 用户的 shell 登录权限。从而只能用 git clone,git push 等 git 操作访问服务器
cat /etc/shells # 查看 git-shell 是否在登录方式里面
which git-shell # 找到git-shell的路径,记下来
sudo vim /etc/shells # 把 git-shell 路径添加到文件末尾
然后更改 git 用户 shell
sudo vim /etc/passwd
# 将原来的 /bin/bash 改为 /usr/bin/git-shell
# git:x:1001:1001::/home/git:/usr/bin/git-shell
这样当你再次用 ssh 连接 git 用户时就会出现以下信息
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to your_ip closed.
部署上线
我们修改本地 hexo 配置文件 _config.yml
deploy:
type: git
repo: git@your_ip:/home/git/repos/blog.git
# repo: git@github.com:name/name.github.io.git
branch: master
配置好后就是 hexo 三连一键部署:hexo clean && hexo g && hexo d
配置 nginx
cd /etc/nginx
cp nginx.conf nginx_backup.conf # 备份配置文件
vim nginx.conf
有两个需要修改的地方:
开头的
user nginx
要改为user root
server 部分
server{ listen 80; #监听80端口 server_name 139.159.245.212; #你的服务器名,通常是域名,如果是域名,你就需要监听80端口 root /home/git/projects/blog; #网站的根目录 location / { }
配置好后 nginx -s reload
重新加载配置信息,如果是第一次进行加载,则还需要先运行命令 nginx -c /etc/nginx/nginx.conf
现在你就可以通过 ip 地址访问你的网页啦!
我发现由于我的网站封面太大(有6M),打开时加载比较慢。所以我需要压缩一下封面图片的大小,推荐两个压缩图片网站
域名
什么是域名?参考链接:CodeSheep bilibili
建议阅读官方文档:阿里云域名服务 什么是阿里云域名服务
根据官方文档 注册通用域名,花费79元巨资注册了3年域名 hongkun.space
完成购买过后还需要进行:
注意需要先进行实名认证,然后才能完成备案
这里我还遇到一个问题,我通过学生优惠免费领取的服务器不能进行域名备案,因为至少需要有3个月的服务器使用权才能备案。看来还是得自己购买一个服务器,我再次花费巨资96元(新用户优惠)购买了一年的轻量应用服务器
轻量应用服务器
轻量应用服务器有单独的控制台,用来部署网站性价比非常不错,配置过程和上面的云服务器一样
在轻量应用服务器的控制台中,域名解析和备案就在概览页面当中,根据流程进行即可
部署 SSL 证书 (https)
网站现在可以访问了,但是如下图可见,登陆网站会提示 Not Secure!!!
这可不能忍,于是我根据 CSDN 教程 给阿里云服务器配置 SSL 证书,使用的是 FreeSSL 一个提供免费 https 证书申请的网站
使用 FreeSSL 申请证书
老规矩,先看看 官网教程
生成 CSR 什么是 CSR ? 腾讯云文档
教程中推荐使用 Keymanager 生成
在阿里云服务器中配置 DNS 解析,并对配置进行检测和验证
验证成功后可以在 FreeSSL 控制台中查看证书
在“更多操作”中可以下载证书,一个 pem 文件,一个 private.key
然后将证书 .pem 文件导入到 keymanager 中
进行一键部署。基于你自己的框架,选择不同的部署方法,我选择部署到 Nginx 上。这里的“一键部署”实质上就是上传你的证书到服务器上
部署成功过后,使用 myssl.com 检查网站的安全性。但是如果你的 Nginx 配置不对的话,
配置 Nginx
现在我们希望通过 https 443 端口来打开网站,与之前监听 http 80 端口,我们监听 443 端口,然后将 80 端口重定向
server { #listen 80; listen 443; ssl on; ssl_certificate /etc/ssl/cert.pem; ssl_certificate_key /etc/ssl/key.pem; server_name hongkun.space; root /home/git/blog; ... } server { listen 80; server_name hongkun.space # permenant redirect to https return 301 https://hongkun.space$request_uri; }
配置好过后重启
nginx -s reload
现在访问网站,旁边就有高贵的🔒
部署成功过后,还可以使用 myssl.com 检查网站的安全性