前言
阿里云到期了,本来学生计划答题还可以再白嫖 6 个月,结果基础太差,80 分白嫖失败。这就很尴尬了,于是咬咬牙,自费购买阿里云轻量应用服务器。开始以为区别挺大的,后来发现其实也还行。
买完后,可以选装系统的选项有很多,有应用镜像和系统镜像。我个人选择的是系统镜像中的 Ubuntu16,可以按照自己的喜好来购买。网上应该也有 wordpress 搭建博客的。应用镜像的系统应该是 CentOS7。
进入阿里云控制台,控制台部分没有轻量应用服务器,我进习惯了 ECS,进去找了半天愣是没找到,还以为被钓鱼网站骗了,囧~
搭建
接下来就一步步对新的服务器进行搭建。
在阿里云控制台中选择产品与服务,找到轻量应用服务器即可,进入服务器详情,在服务器概览中点击重置密码,通过手机确认后,就可以使用 ssh 进行远程连接了。
我的域名备案什么的都是之前做好的。所以直接绑定域名即可。具体要备案啥的,官网都有相关说明备案中心
我最开始服务器在阿里云上,后来转移到 GithubPages 上,后来又转回到阿里云上,本地写完的博客,推的时候进行修改,在博客文件下修改_config.yml 文件中 deploy 块如下:
1 | deploy: |
剩下的就是对服务器的搭建了。
服务器准备工作
首先通过 ssh 连接服务器,如果你的系统是 windows,要提前安装 Xshell 或者 putty。我个人用的是 Xshell。
运行以下命令更新软件:
sudo apt-get upgrade # 更新源
sudo apt-get update # 更新软件
sudo apt-get autoclean # 然后清除一下不用的软件
接下来我们分别安装 git 和 nginx 并进行相关配置。
安装 nginx 服务器
hexo 本质上是一个静态网站,所以选择 nginx 做静态 http 服务器还是很合适的,加上轻量级这个服务器吧,我还不保准抗不抗压,所以就先运行 nginx 吧。
安装 nginx:
sudo apt-get install nginx # 安装 nginx
nginx -v # 查看 nginx 版本
nginx -t # 查看 nginx 是否成功
配置 nginx 服务器
对 nginx 服务器的配置网上教程很多,主要是/etc/nginx 目录下 nginx.conf 文件起作用。
我们看下 nginx.conf 文件,可以看到,最后有写:
1 | include /etc/nginx/conf.d/_.conf; |
其中 /etc/nginx 目录下包含 sites-available 和 sites-enabled 目录,sites-enabled 只是 sites-available 的一个软链接。我最后选择的就是直接改 sites-enabled 中的 default 文件。默认 index.html 位置在 /var/www/html 文件夹下。
此时访问http://www.xudongpo.cn 就可以看到 Welcome Nginx 了。
安装和配置 git
最后文章需要通过 git 进行提交。
首先通过 sudo apt-get install git 安装 git 命令,并配置好全局 git 的用户名和邮箱,如下:
git config –global user.name “your name”
git config –global user.email “your email”
配置密钥
由于本地 Git 仓库和 GitHub 仓库之间的传输是通过 SSH 加密的,所以,需要一点设置:
创建 SSH Key。在用户主目录下,看看有没有.ssh 目录,如果有,再看看这个目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开 Shell(Windows 下打开 Git Bash),创建 SSH Key:
ssh-keygen -t rsa -C “youremail@example.com“
一路回车即可。
然后在 ~/.ssh 目录中,找到 id_rsa 和 id_rsa.pub 两个文件,其中 id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥,可以放心地告诉任何人。再 Github 中添加公钥就可以 push 和 pull 了。
测试环境
现在我们进入 /var/www/html 中,clone 下之前托管在 GitHub 或 Coding 上的博客源代码。
git clone git@github.com:DongpoXu/DongpoXu.github.io.git
修改 /etc/nginx/sites-enabled/default,将 server 下的 root 字段值修改为 clone 后的博客目录路径。
修改后,重启 nginx 服务,否则看不到效果:
sudo nginx -s reload
集成部署
我想要的情况是,只要我在电脑上写好博客,hexo d,会自动将网站内容更新到阿里云和树莓派的 Git 仓库中,并自动同步到/var/www//html/DongpoXu.github.io 中去,
具体做法是,创建 git 用户:
sudo adduser git
在 /home/git 目录下创建裸仓 hexo.git:
cd /home/git
sudo git init –bare hexo.git
修改 hexo.git 的所有者和组权限:
sudo chown -R git:git hexo.git
获取本地机器 SSH 的公钥:
cat ~/.ssh/id_rsa.pub
复制公钥,将公钥写入 github 机器的 /home/git/.ssh/authorized_keys 文件中
这一步之前做过了,就不重复了。
在 /home/git/hexo.git/hooks/post-receive 文件中写入如下内容,没有的话需要自己创建(touch)一下。
1 | #!/bin/bash -l # 此处要依据当前的shell填写 bash 或 sh |
文件权限
www 文件夹必须要可读写
chmod -R 777 /var/www
hooks 中新建的 post-receive 文件的权限也必须注意。
新建的 post-receive 文件不显示高亮的原因,touch 文件后,所有权是 root 用户,需要将文件所有者修改为 git 用户,并且提高权限:
sudo chown git:git post-receive
sudo chmod +x post-receive 即可。
之后提交博客,就会触发这个脚本,将提交到 git 库中的文件在复制一份到 DongpoXu.github.io 文件夹中。
此时访问 IP 或者域名,就可以看到博客文章了,但是不支持 https 访问。
所以我们还需要开启 ssl,需要给 nginx 配置 ssl 证书,这个证书我之前已经申请过免费的了,应该是到 2021 年。所以直接在阿里云 ssl 证书管理界面,下载相应的即可。有需要可以看我之前这篇文章nginx 配置 https
将 ssl 证书下载下来,俩文件,一个 pem 一个 key,在/etc/nginx 文件夹下创建 cert 文件夹,将 ssl 证书文件放入到 cert 中。
在 nginx 配置文件中,加入如下
1 | listen 443 ssl; |
此时 https 即可访问,重定向啥的就先不做了。没啥意思,之后有需要再搞。
http跳转
这个吧,之前文章有些,直接放链接就行了,很简单。
太久不写前端,基本功都没了,人的精力果然是有限的。
补充
ssh添加眼色
ssh 连接后,进入的是 root 用户,其实也可以一直用 root,不过很多人喜欢创建一个个人用户,避免出现误操作导致的整个系统崩溃情况出现。
大部分 root 用户在 ssh 连接时候是没有颜色的。需要在 ~/.bashrc 中修改。
vim ~/.bashrc
找到 force_color_prompt = yes,将之前的#删除。
:wq 即可。
source ~/.bashrc 使配置文件生效即可。
修改主机名
ssh 连接后,root@后面有一长串 ID 号,这个是主机的名称。
看着很不爽,通过命令 hostnamectl set-hostname 主机名 修改即可:
hostnamectl set-hostname AelousDP
然后重启服务器。
自动运行命令
修改 /etc/profile 文件,在文件末尾加上,sl / cmatrix / screenfetch 等命令即可。