个人网站搭建过程

我最开始的个人博客是用 GitHub Pages 搭建的,后来在搬瓦工租了一个每年 20 刀的 VPS,就把博客转移到这上面了,前段时间因为没有及时续费被删除了,今天重新配置了一下,把过程记录下来以便以后参考。

配置 SSH 访问

比起密码,使用 ssh 秘钥访问服务器更方便和安全,需要把本地的公钥添加到服务器的 authorized_keys 文件中,我本地的 ~/.ssh/config 文件里面有如下配置:

Host matrix
User root
Port 29609
HostName 67.216.215.111

Host git-server
User git
Port 29609
HostName 67.216.215.111

通过 scp 命令(需要输入密码)直接把 ~/.ssh/id_rsa.pub 文件上传到服务器上,然后登陆服务器将文件重命名为 authorized_keys:

# local
scp ~/.ssh/id_rsa.pub matrix:~
ssh matrix
# remote
mkdir .ssh && chmod 700 .ssh
mv id_rsa.pub .ssh/authorized_keys

搭建 Git 服务器

我的博客是用 Hexo 引擎生成的静态网站,所以想到如果在 VPS 上面搭建一个 Git 服务器,每次在本地生成静态文件后提交到 Git 仓库,就能完成更新了,就能和 GitHub Pages 一样方便,配置方法参考了廖雪峰的文章搭建 Git 服务器

# remote
## 创建账户
sudo adduser git
mkdir /home/git/.ssh && cp /root/.ssh/authorized_keys /home/git/.ssh
chmod 700 /home/git/.ssh && chown -R git:git /home/git/.ssh

## 创建仓库
sudo su - git
git init --bare hexo.git
git clone hexo.git

## 设置 hook
cd /home/git/hexo.git/hooks
mv post-receive.sample post-receive
### 在 post-receive 文件中添加两条命令
unset $(git rev-parse --local-env-vars)
cd /home/git/hexo && git pull

# local
hexo clean
hexo deploy

安装 Web 服务器

要能够访问网站的静态页面,还需要一个 Web 服务器,我使用的是 Nginx,按照官方教程安装即可,安装后在 nginx.conf 配置访问根路径到 /home/git/hexo 然后启动 Nginx 就可以了:

vim /etc/yum.repos.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

yum install nginx
service nginx start

配置 HTTPS 访问

现在 Chrome 浏览器默认会强制跳转 HTTPS 域名,可以申请 Let’s Encrypt 提供的 HTTPS 证书,这需要使用一个叫做 certbot 的工具,这个工具的运行需要依赖 Python3,所以首先安装下 Python3:

yum install gcc openssl-devel
wget https://www.python.org/ftp/python/3.4.10/Python-3.4.10.tgz
tar xzvf Python-3.4.10.tgz && cd Python-3.4.10
./configure
make -j 4
make install

安装完 Python3 之后,就可以按照官方教程下载和运行 certbot 了:

# 安装
yum install wget
wget https://dl.eff.org/certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo chown root /usr/local/bin/certbot-auto
sudo chmod 0755 /usr/local/bin/certbot-auto

# 运行:申请证书
cd /usr/local/bin
sudo certbot-auto --nginx --no-bootstrap

# 运行:更新证书
cd /usr/local/bin
sudo certbot-auto renew --no-bootstrap

运行后按照提示填写必要的信息,cerbot 会帮你把 HTTPS 证书下载到本地,并在 nginx.conf 中添加必要的语句,最后重启下 Nginx 就大功告成了,下面是我的 nginx.conf 文件的核心配置部分:

http {
...
server {
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/wind4869.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/wind4869.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

server_name wind4869.com;
location / {
root /home/git/hexo;
index index.html index.htm;
}
}
}
0%