2017/6/1 我的第一個博客誕生了渺尘,在選擇博客的框架之前也是經(jīng)過了各種對比,最終選擇了Ghost,因為它很簡潔埃脏,比wordpress更輕量級搪锣,當然并不是說wordpress不好,wordpress功能很全面而且還有各種插件的支持彩掐,很容易上手构舟,但是我個人更喜歡比較簡潔和輕量級的框架,所以最終選擇了Ghost堵幽。下面我就記錄下我是如何搭建我的博客的狗超。
一.博客結(jié)構(gòu)
? ? * CentOS 7
? ? * Docker Ghost
? ? * Let’s Encrypt
? ? * Disqus
? ? * 七牛云
二.搭建流程
? ? * 購買VPS
? ? * 購買域名
? ? * Ghost搭建
? ? * HTTPS證書
a).購買VPS
我選擇的是Linode,在4年前就開始接觸過Linode谐檀,我們公司現(xiàn)在用的也是Linode抡谐,給我的感覺是性價比很高,而且在東京有數(shù)據(jù)中心桐猬,這樣國內(nèi)訪問資源的時候麦撵,網(wǎng)絡(luò)上也能降低些延遲。最主要的是國外的VPS不需要備案溃肪。Linode的注冊很簡單免胃,這里就不再重復了,如果英文不好惫撰,網(wǎng)絡(luò)上有很多的手順羔沙,大家可以參照一下。
Linode的有很多的購買計劃厨钻,因為我還想開發(fā)別的東西扼雏,所以我選擇的是Linode 4GB這個套餐,系統(tǒng)選擇的是CentOS 7夯膀。如果只是單純想搭建博客诗充,那么選擇最低的Linode 1GB計劃就可以,每個月的費用也只有$5诱建,性價比很高蝴蜓。
b).購買域名
我選擇的是Godaddy,這個沒有什么多說的俺猿,根據(jù)個人的喜好去選擇就好茎匠。像萬網(wǎng),Name等等都可以押袍。
c).Ghost搭建
我選擇的是Docker Ghost鏡像诵冒,因為前陣子我們公司服務器升級了,這樣就導致我們內(nèi)部的Git無法使用了谊惭,后來調(diào)查了很久才解決了這個事情造烁。但是如果是用了Docker否过,主機與Docker進程之間互相不影響,這種情況就可以避免了惭蟋。
1.安裝Docker
yum install docker? ? --安裝docker
service docker start? --啟動docker
chkconfig docker on? --開機自動啟動
2.下載鏡像
docker pull ghost? ? --下載ghost
docker images? ? ? ? --查看本地images
3.運行Ghost
docker run --name ghost --restart=always -v /mnt/docker/ghost:/var/lib/ghost -p 8080:2368 -d ghost
--restart=always : docker重啟后苗桂,該進程自動啟動
-v /mnt/docker/ghost:/var/lib/ghost : 將ghost鏡像的/var/lib/ghost目錄映射到主機
的/mnt/docker/ghost目錄(存放數(shù)據(jù)使用)
-p 8080:2368 :將docker鏡像的2368端口映射到主機的8080端口
4.安裝Nginx
yum install nginx? ? ? ? ? ? ? ? --安裝nginx
service nginx restart? ? ? ? ? ? --啟動nginx
vi /etc/nginx/conf.d/ghost.conf? --設(shè)定config file
######ghost.conf######
server {
? ? listen 80;
? ? server_name ishuai.me www.ishuai.me;
? ? location / {
? ? ? ? proxy_set_header? X-Real-IP $remote_addr;
? ? ? ? proxy_set_header? Host? ? ? $http_host;
? ? ? ? proxy_pass? ? ? ? http://127.0.0.1:8080;
? ? }
}
這里需要注意一下,firewall需要開通一下80端口
systemctl start firewalld
systemctl enable firewalld
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
這樣就可以通過domain訪問到Ghost了告组。
四.HTTPS證書
我使用的是Let’s Encrypt煤伟,因為他很方便,執(zhí)行一條命令就可以生成了木缝。
1.下載Let’s Encrypt
yum install git
cd /home/(yourusername)/
git clone https://github.com/certbot/certbot.git
cd certbot
./certbot-auto certonly --standalone --email i.shuai@ishuai.me -d ishuai.me -d www.ishuai.me
2.配置Nginx
######ghost.conf######
server {
? ? listen 80;
? ? server_name? ishuai.me www.ishuai.me;
? ? return? ? ? 301 https://ishuai.me$request_uri;
}
server {
? ? listen 443 ssl;
? ? server_name? ishuai.me;
? ? ssl_certificate /etc/letsencrypt/live/ishuai.me/fullchain.pem;
? ? ssl_certificate_key /etc/letsencrypt/live/ishuai.me/privkey.pem;
? ? ssl_protocols? ? ? TLSv1 TLSv1.1 TLSv1.2;
? ? ssl_ciphers? ? ? ? HIGH:!aNULL:!MD5;
? ? access_log? /var/log/nginx/ghost.log;
? ? error_log? ? /var/log/nginx/ghost_error.log;
? ? location / {
? ? ? ? proxy_set_header X-Real-IP $remote_addr;
? ? ? ? proxy_set_header HOST $http_host;
? ? ? ? proxy_set_header X-NginX-Proxy true;
? ? ? ? proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
? ? ? ? proxy_set_header X-Forwarded-Proto $scheme;
? ? ? ? proxy_pass http://127.0.0.1:8080;
? ? ? ? proxy_redirect off;
? ? }
}
這樣證書就生效了
需要注意的是便锨,letsencrypt生成的證書有效期是2個月,但是它提供接口去更新證書我碟,如果證書沒過期的時候去更新會提示`cert not yet due for renewal`
###證書更新###
./certbot-auto renew
當然大家也可以通過設(shè)置contrab去自動的執(zhí)行更新
最后放案,希望我的這篇文章能夠幫助到大家,如果在搭建的時候遇到了什么問題矫俺,可以給我留言吱殉。