将Jekyll博客从Github Pages上搬家到VPS
1.搬家原因:
- 在Github上所有原码全部公开,存在安全隐患。已经多次收到其消息通知。
- Github服务器在国外,访问速度不够理想,尤其是上传图片后,打开速度更慢。
- 另外,在腾讯云上买了一个VPS历经重重困难完成了备案,一直没有使用,打算把它用起来。
2.搬家过程:
a. 安装Jeklly
- 配置 ruby 环境和安装依赖
sudo apt-get install ruby ruby-dev build-essential -y
- 添加环境变量
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.bashrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
- 安装jekyll
gem install jekyll bundler
- 检测jekyll版本,返回版本则安装成功
jekyll --version
-
切换到home目录,新进blog目录
-
然后将Github上备份的博客文件放入blog目录。在切换到blog目录,并生成博客
bundle install
bundle exec jekyll server
-
完成上面的步骤如果顺利的话,应该能正常浏览了,但是现在都流行https了我们还用http显得很Low,而且Google已经将http网站定义为不安全网站,因此我们也必须使用SSL,让网站升级为https开头的。
b.申请SSL证书
- 在腾讯云中搜索SSL
- 选择免费版
- 一般几个小时就能通过,之后下载证书
c.安装Nginx
-
使用apt安装Nginx
sudo apt-get install nginx -y
-
移除Nginx默认配置文件
sudo rm -rf /etc/nginx/sites-enabled/default
-
编辑/etc/nginx/nginx.conf,进入 nginx 配置文件在 http 代码块中添加以下配置
server { listen 443; server_name 5616760.com; #填写绑定证书的域名 ssl on; ssl_certificate 1_5616760.com_bundle.crt; ssl_certificate_key 2_5616760.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置 ssl_prefer_server_ciphers on; location / { root /home/ubuntu/blog/_site; #站点目录 index index.html index.htm; } }
-
重启Nginx
sudo nginx -s reload
-
打开浏览器浏览发现http和https都能正常访问,如何才能使得用http访问时自动跳转到https能,继续修改nginx.conf
server{ rewrite ^(.*) https://$host$1 permanent; }
-
至此之前的问题基本上都解决了,但还有两个小问题:如何使用Git自动上传?图片如果一同保存的话,相对路径的问题如何解决?
常用命令:
先切换至blog目录:cd 5616760 重启Nginx:sodu nginx -s reload 更改目录权限:sudo chmod 777 /目录绝对地址 后台运行:bundle exec jekyll server --detach 自动增量重生成:bundle exec jekyll build --incremental --watch& [我是超链接](http://www.example.com:_blank)