国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

程序員如何搭建自己的個人博客

luzhuqun / 3416人閱讀

摘要:使用自己的服務(wù)器部署博客使用搭建個人博客簡單快捷方便,但是在國外啊,網(wǎng)絡(luò)極其不穩(wěn)定,訪問速度慢,讓人抓狂,這時可以將自己的博客部署在阿里云的上。

原文發(fā)布于https://www.fangzhipeng.com/life/2018/10/14/how-to-build-blog/

我從2016年開始寫博客,陸陸續(xù)續(xù)寫了大概兩百篇博客。寫博客有很多好處,其一是它能夠迫使你總結(jié)你學(xué)習(xí)的知識,你需不但的消化自己的知識點,使你對知識有了更深刻的認(rèn)識;其二是你的博客如同你的個人簡歷,記錄了你的學(xué)習(xí)歷程,通過寫博客,可以讓別人認(rèn)識你,可以結(jié)交更多的行業(yè)朋友;其三,博客起到了傳播知識的作用,特別是技術(shù)類的博客能夠幫助別人解決技術(shù)問題,幫助人是一件快樂的事,何樂而不為。所以寫博客對于程序員來說至關(guān)重要,在我之前的文章,我已經(jīng)講述過了,寫博客給我?guī)砹耸裁矗俅尾辉谫樖觥?/p>

我一開始寫博客是從簡書開始的,當(dāng)時被簡書優(yōu)雅的markdown寫作方式所吸引。剛開始寫文章網(wǎng)的閱讀量,一篇能夠達(dá)到幾百的閱讀量是非常開心的事情,如果能夠被簡書推薦到首頁能夠開心好幾天。在簡書我認(rèn)識了木東居士、仗劍走天涯,并在那時建立了簡書圈,并保持了非常好的友誼關(guān)系,非常的珍貴。

大概17年初我將自己的寫博客主要陣地轉(zhuǎn)移到了CSDN,原因是CSDN在百度搜索引擎中占據(jù)了最高的權(quán)重。后面證明我的判斷是正確的,我的CSDN博文閱讀量一路飆升,讓更多的人可以的閱讀我的博客。

就在上個月我閱讀了純潔的微笑的博文 技術(shù)人如何搭建自己的技術(shù)博客這篇文章,我決定折騰一下搭建一下自己的個人博客。

其實在17年,我就開始搭建了自己的個人博客,采用Jekyll靜態(tài)博客,托管在github上面的,并且買了自己的域名fangzhipeng.com,cname到github上。由于github網(wǎng)絡(luò)不穩(wěn)定,體驗實在是太差,一直沒有怎么打理,處于一種無人管理的狀態(tài)。

就在月初,我將個人的博客遷移到了自己的服務(wù)器,并在群里放出來,有人就讓我寫篇博文,讓他參考下如何搭建屬于自己的個人博客。于是我抽空寫出了這篇文章。

這篇文章詳細(xì)的介紹了如何搭建我的個人博客。

使用Github托管博客

在github上托管博客上非常簡單的一件事,只需要fork一個你喜歡的博客的主題,并將fork的工程名修改為{github-username}.github.io,并將原博主的文章刪除,并放上自己的博文,就可以了。

比如我的博客使用的是https://github.com/Huxpro/hux...,首先我將這個項目fork一下,并將fork后的項目改名字為forezp.github.io,讀者需要將forezp替換成自己的github用戶名。

然后打開網(wǎng)頁forezp.github.com就可以訪問該主題的博客了。將修改后項目git clone下來,按照主題說明進行配置的修改,將原博主的文章刪除,替換成自己的博文,git push修改后的工程到github上面,github pages就會自動構(gòu)建,根據(jù)你的修改內(nèi)容生成頁面,訪問{github-username}.github.io就可以看到修改后的內(nèi)容。

如果你需要自己的域名,可以在阿里云上申請自己的域名,比如的我的域名為fangzhipeng.com。在阿里云的控制臺的域名解析配置以下的內(nèi)容:

并在項目中的根目錄上加CNAME文件,寫上自己申請的域名,比如的我的:

www.fangzhipeng.com

大概過10-20分鐘之后,就可以通過域名訪問你的個人博客了,通過{github-username}.github.io訪問個人博客也會顯示你申請的域名。

需要注意的是,域名需要備案哦。

使用自己的服務(wù)器部署博客

使用Gthub搭建個人博客簡單、快捷、方便,但是Github在國外啊,網(wǎng)絡(luò)極其不穩(wěn)定,訪問速度慢,讓人抓狂,這時可以將自己的博客部署在阿里云的ECS上。ECS需要購買哦,需要購買的同學(xué)點擊這里,領(lǐng)取代金券。

本人使用Jekyll進行搭建的博客,所以需要在服務(wù)中安裝Jekyll環(huán)境,我的服務(wù)器系統(tǒng)版本為entOS 7.2,安裝的jekyll版本為3.8.4。

安裝jekyll主要參考了https://jekyllcn.com/docs/ins...,因為安裝過程比較繁瑣和報的錯比較多,現(xiàn)在詳細(xì)講解下,在我安裝jekyll的過程和所遇到的坑。

安裝Node

安裝Node環(huán)境,執(zhí)行以下命令:

wget https://nodejs.org/dist/v8.12.0/node-v8.12.0-linux-x64.tar.xz
xz -d node-v8.12.0-linux-x64.tar.xz
tar -xf node-v8.12.0-linux-x64.tar 
ln -s ~/node-v8.12.0-linux-x64/bin/node /usr/bin/node
ln -s ~/node-v8.12.0-linux-x64/bin/npm /usr/bin/npm
node -v 
npm
安裝ruby

Jekyll依賴于Ruby環(huán)境,需要安裝Ruby,執(zhí)行以下命令即可:

 wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.tar.gz
 mkdir  -p /usr/local/ruby
 tar -zxvf ruby-2.4.4.tar.gz 
 cd ruby-2.4.4
 ./configure --prefix=/usr/local/ruby
 make && make install
 cd ~
 vim .bash_profile 
 source .bash_profile
安裝gcc

安裝gcc執(zhí)行以下命令:

yum -y update gcc
yum -y install gcc+ gcc-c++
安裝jekyll

最后安裝Jekyll,執(zhí)行以下命令

gem install jekyll
jekyll --version
gem update --system

可以通過jekyll --version查看版本來驗證是否安裝成功,如果安裝成功,則會顯示正確的版本號。

安裝過程中可能存在的問題

使用jekyll創(chuàng)建一個博客模板,并啟Server服務(wù),執(zhí)行以下的命令:

jekyll new myblog
cd myblog/
jekyll serve

當(dāng)執(zhí)行jekyll serve命令,我服務(wù)器環(huán)境報來以下的錯誤:

`block in verify_gemfile_dependencies_are_found!": Could not find gem "minima (~> 2.0)" in any of the gem sources listed in your Gemfile. (Bundler::GemNotFound)
    from /usr/local/ruby/lib/ruby/site_ruby/2.4.0/bundler/resolver.rb:257:in `each"

查了相關(guān)的資料,需要安裝bundler和minima插件,安裝命令如下:

gem install bundler
gem install minima
部署我的博客

部署博客需要在服務(wù)器中編譯博客,然后編譯后的博客放在Nginx服務(wù)的靜態(tài)路徑上

編譯博客

需要git工具,下載在github上面的代碼,執(zhí)行以下命令:

git clone https://github.com/forezp/forezp.github.io
cd forezp.github.io
jekyll serve

jekyll serve命令會編譯我從github上下載的源碼,在這一步,第一次執(zhí)行會報以下的錯誤:

Deprecation: The "gems" configuration option has been renamed to "plugins". Please update your config file accordingly.
  Dependency Error: Yikes! It looks like you don"t have jekyll-paginate or one of its dependencies installed. 

是因為博客需要用到sitemap和paginate插件,安裝下即可。

gem install jekyll-sitemap
gem install jekyll-paginate

重新執(zhí)行jekyll serve,運行成功,此時可以通過curl命令查看服務(wù)器里部署的博客。

部署到Nginx服務(wù)器上:

通過Jekyll編譯后的靜態(tài)文件需要掛載到Nginx服務(wù)器,需要安裝Nginx服務(wù)器。 安裝過程參考了http://nginx.org/en/linux_pac...

按照文檔,新建文件/etc/yum.repos.d/nginx.repo,在文件中編輯以下內(nèi)容并保存:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

然后執(zhí)行安裝nginx命令,如下:

yum install nginx

Nginx配置成功后,需要設(shè)置Nginx的配置,配置文件路徑為/etc/nginx/conf.d/default.conf,配置的內(nèi)容如下:

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page  404              /404.html;

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
   
   }

安裝Nginx服務(wù)器成功后,將Jekyll編譯的博客靜態(tài)html文件輸出到Nginx服務(wù)器上,執(zhí)行以下的命令:

jekyll build --destination=/root/blog/html

啟動Nginx服務(wù)器,就可以正常的博客網(wǎng)頁了,如果需要在瀏覽器上訪問,需要在阿里云ECS控制臺的安全組件暴露80端口。如果想通過域名訪問,需要將域名解析設(shè)置指向你的服務(wù)器。

非www域名的重定向到www

比如我想訪問http://fangzhipeng.com重定向...://www.fangzhipeng.com上,需要在Nginx的配置文件/etc/nginx/conf.d/default.conf,修改配置以下內(nèi)容:

listen       80;
    server_name  fangzhipeng.com www.fangzhipeng.com;


    if ( $host != "www.fangzhipeng.com" ) {
          rewrite "^/(.*)$" http://www.fangzhipeng.com/$1 permanent;
         }
自動化部署

通過設(shè)置github的webhook可以實現(xiàn)自動化構(gòu)建和部署。過程是,提交博文或者配置到github倉庫,倉庫會觸發(fā)你設(shè)置的webhook,會向你設(shè)置的webhook地址發(fā)送一個post請求,比如我設(shè)置的請求是在服務(wù)器的跑的一個Nodejs程序,監(jiān)聽gitub webhook的請求,接受到請求后,會執(zhí)行shell命令。

首先設(shè)置github倉庫的webhook,在github倉庫的項目界面,比我的我的項目界面https://github.com/forezp/for...,點擊Setting->Webhooks->Add Webhook,在添加Webhooks的配置信息,我的配置信息如下:

Payload URL: http://www.fangzhipeng.com/in...

Content type: application/json

Secret: a123456

這樣Webhook就設(shè)置成功了,現(xiàn)在在博客所在的服務(wù)端去監(jiān)聽Github Webhook發(fā)送的請求,我采用的開源組件去監(jiān)聽github-webhook-handler,項目地址為:https://github.com/rvagg/gith...,首先安裝:

npm install -g github-webhook-handle

安裝成功后,在/root/node-v8.12.0-linux-x64/lib/node_modules/github-webhook-handler下新建deploy.js文件:

var http = require("http")
var createHandler = require("github-webhook-handler")
var handler = createHandler({ path: "/incoming", secret: "a123456" }) 
 
function run_cmd(cmd, args, callback) {
  var spawn = require("child_process").spawn;
  var child = spawn(cmd, args);
  var resp = "";
 
  child.stdout.on("data", function(buffer) { resp += buffer.toString(); });
  child.stdout.on("end", function() { callback (resp) });
}
 
http.createServer(function (req, res) {
  handler(req, res, function (err) {
    res.statusCode = 404
    res.end("no such location")
  })
}).listen(3001)
 
handler.on("error", function (err) {
  console.error("Error:", err.message)
})
 
handler.on("push", function (event) {
  console.log("Received a push event for %s to %s",
    event.payload.repository.name,
    event.payload.ref);
  run_cmd("sh", ["./start_blog.sh"], function(text){ console.log(text) });
})

上述代碼中,指定了nodejs服務(wù)的踐踏端口為3001,監(jiān)聽了path/incoming,Secret為a123456,這和之前Github Webhook設(shè)置的要保持一致。代碼run_cmd("sh", ["./start_blog.sh"],指定了接受到請求后執(zhí)行./start_blog.sh,start_blog.sh文件的代碼如下,首先進入到博客的代碼文件,拉代碼,編譯。

echo `date`
cd /root/forezp.github.io
echo start pull from github 
git pull
echo start build..
jekyll build --destination=/usr/share/nginx/html

然后需要使用forever來啟動deploy.js的服務(wù),執(zhí)行命令如下:

sudo npm install forever -g   #安裝
$ forever start deploy.js          #啟動
$ forever stop deploy.js           #關(guān)閉
$ forever start -l forever.log -o out.log -e err.log deploy.js   #輸出日志和錯誤
/root/node-v8.12.0-linux-x64/lib/node_modules/forever/bin/forever start -l forever.log -o out.log -e err.log deploy.js

如果報錯:
/root/node-v8.12.0-linux-x64/lib/node_modules/forever/bin/forever start -a -l forever.log -o out.log -e err.log deploy.js

最后一步,需要在nginx服務(wù)器的配置文件,需要將監(jiān)聽的/incoming請求轉(zhuǎn)發(fā)到nodejs服務(wù)上,配置代碼如下:

location = /incoming {
     proxy_pass http://127.0.0.1:3001/incoming;
}

這樣,當(dāng)你提交了文章或者修改的配置到gitub上,github通過webhook向你所在的服務(wù)器發(fā)送請求,服務(wù)器接收到請求后執(zhí)行 sh命令,sh命令包括了重新pull代碼和編譯代碼的過程,這樣自動化部署就完成了,你只需提交代碼,服務(wù)器就觸發(fā)pull代碼和重新編譯的動作。

補充

博客可以設(shè)置百度統(tǒng)計、谷歌分析、不蒜子統(tǒng)計、Gittalk留言板等功能,這些功能需要自己申請賬號,實現(xiàn)起來比較簡單,具體自己百度。

另外,如果博客需要上https協(xié)議,需要在阿里云申請免費的SSL證書,申請完之后,可以在阿里云上查看Nginx安裝SSL證書的教程,并做配置,按照它的提示來,比較簡單。最后涉及到了涉一個重定向的問題,比如我的網(wǎng)站,我需要將 http://fangzhipeng.com、http://www.fangzhipeng.com 、https://fangzhipeng.com 全部重定向到https://www.fangzhipeng.com,這時需要修改nginx的配置文件default.conf,現(xiàn)在我貼出我的完整的配置如下:

server {
        listen       80;
        server_name  fangzhipeng.com www.fangzhipeng.com;
        return 301 https://www.fangzhipeng.com$request_uri;
    }
server {
        listen 443;
        server_name fangzhipeng.com;
        return 301 https://www.fangzhipeng.com$request_uri;
    }

server {
    listen 443 default_server ssl;
    server_name  www.fangzhipeng.com;
    #if ( $host != "www.fangzhipeng.com" ) {
    #      rewrite "^/(.*)$" http://www.fangzhipeng.com/$1 permanent;
    #  }

    ssl on;
    root html;
    index index.html index.htm;
    ssl_certificate   cert/215042476190582.pem;
    ssl_certificate_key  cert/215042476190582.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
     location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

到此,我的博客搭建過程全部講解完畢,如果有任何問題歡迎加我微信miles02(備注博客疑問)和我討論,如果問的人多,我考慮建一個交流群,大家一起討論答疑。大家也可以在留言版上留下自己的博客,讓大家互相訪問。

寫博客貴在堅持,貴在有一顆分享的心。我是看了純潔的微笑的博文,才有動力折騰了一下自己的博客,希望你看了我的這篇博文,會有自己搭建博客的沖動,然后自己動手完整的搭建,謝謝大家。

關(guān)注我:

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71843.html

相關(guān)文章

  • 如何利用GitHub GraphQL API開發(fā)個人博客

    摘要:獲取標(biāo)簽及相關(guān)通常,我們會在博客首頁設(shè)計一個有分類的文章列表,這就要求在發(fā)布時需要選擇對應(yīng)的。這里我用的是的和的庫,核心代碼如下結(jié)合開發(fā)個人博客的核心內(nèi)容基本就這么多了,具體代碼歡迎查看,一起踩坑。 作為一個程序員,搭建一個個人博客幾乎是所有人的需求,一來比較酷,二來也可以記錄自己的學(xué)習(xí)和生活總結(jié)。但如果你不是全棧工程師,實現(xiàn)這個需求還是有點麻煩。后端搭建一套現(xiàn)有的前端框架及前端寫AP...

    fireflow 評論0 收藏0
  • Django搭建個人博客:結(jié)束和開始

    摘要:教程看到這里,你已經(jīng)學(xué)會如下內(nèi)容搭建開發(fā)環(huán)境博文管理用戶管理發(fā)表評論若干小功能搭建簡單的小博客,以上的功能夠用了。教程為了起步平緩,沒有展開這方面的內(nèi)容。陌生人,祝你學(xué)業(yè)進步事業(yè)有成歡迎常到杜賽的個人網(wǎng)站做客 教程看到這里,你已經(jīng)學(xué)會如下內(nèi)容: 搭建開發(fā)環(huán)境 博文管理 用戶管理 發(fā)表評論 若干小功能 搭建簡單的小博客,以上的功能夠用了。 相信你的志向不止于此。畢竟程序員面試個個造火...

    zqhxuyuan 評論0 收藏0
  • 免費自建個人網(wǎng)站-Gridea+GitHub+Vercel傻瓜式搭建靜態(tài)博客評論SSL多主題

    很多人想要搭建自己的博客網(wǎng)站,但是又苦于沒有什么代碼基礎(chǔ),部分同學(xué)可能覺得申請?zhí)摂M主機管理空間等操作繁瑣,于是苦苦尋找那種單純的寫作平臺,例如早期的新浪博客,現(xiàn)在的簡書、國外的WP等也就成為了不少人的選擇。但是使用第三方的博客平臺有一個最大的問題:不穩(wěn)定。可能有的人會說大廠商不怕倒閉,縱觀互聯(lián)網(wǎng)這十幾年的發(fā)展,再大的大牌服務(wù)如果沒有贏利支撐,該倒閉的倒閉,該關(guān)停的關(guān)停。用戶的利益對于商家來說不是高...

    番茄西紅柿 評論0 收藏2638
  • 手把手教你基于WordPress搭建自己個人博客

    摘要:一步一步教你基于搭建自己的個人博客,作為成熟的框架,美觀,方便,插件多,更新頻繁,非常適合個人博客與網(wǎng)站的搭建,適合新手,無需太多的代碼基礎(chǔ)。原文鏈接手把手教你搭建自己的網(wǎng)站購買購買云服務(wù)器為了搭建個人網(wǎng)站,首先肯定需要一個云服務(wù)器。 一步一步教你基于WordPress搭建自己的個人博客,WordPress作為成熟的CMS框架,美觀,方便,插件多,更新頻繁,非常適合個人博客與網(wǎng)站的搭建...

    vpants 評論0 收藏0
  • 強大hexo--如何利用hexo平臺搭建個人博客

    摘要:前一陣子一直在想怎么搗鼓出自己的博客來,直到發(fā)現(xiàn)了是什么是一個開源的靜態(tài)博客生成器用開發(fā)作者是臺灣大學(xué)生同樣是大學(xué)生,我和他的差距怎么這么大她是一個快速簡潔且高效的博客框架。本人用的主題是然后對其進行定制,簡直不能再棒。 前一陣子一直在想怎么搗鼓出自己的博客來,直到發(fā)現(xiàn)了hexo hexo是什么 Hexo是一個開源的靜態(tài)博客生成器,用node.js開發(fā),作者是臺灣大學(xué)生tommy351...

    Ilikewhite 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<