Hexo搭建個人博客并使用Git部署到VPS

前言

在去年河咽,心血來潮去買了個阿里云的服務(wù)器田柔,幾番折騰下,用WordPress第一次搭建了自己的博客網(wǎng)站,然后過了幾天因為網(wǎng)站備案的問題太麻煩懶得弄粪牲,加上用國外的服務(wù)器還可以用來上上油管古瓤、谷歌什么的,就買了個搬瓦工的VPS腺阳,把自己的博客重新在搬瓦工上面建立起來落君,然后博客就處于荒廢狀態(tài)至今。
  今日又有了寫博客記錄的念頭亭引,就開始寫了起來绎速,但是WordPress上用MarkDown十分不方便,找了很多插件焙蚓,想了很多辦法也沒能完美解決寫作和發(fā)布的問題纹冤,再加上數(shù)據(jù)庫老是出錯...干脆就用Hexo了洒宝,反正個人網(wǎng)站又小,也沒什么人看萌京。然后就開始谷歌搜索用Hexo建博客雁歌,搜出來的大多數(shù)都是Hexo+Github Pages,跟著教程和Hexo文檔一步一步?jīng)]花多少時間就弄好了知残,直接用MarkDown寫靠瞎,幾個命令就能部署完畢,可以說是十分的方便了求妹。
  但是乏盐,自己有個VPS只用來跑ss感覺太浪費,GitHub上放著網(wǎng)站的文件也始終覺得不舒服制恍,還是放在自己的服務(wù)器上比較好父能。所以又開始折騰著把博客搬到自己的VPS上。在VPS部署時還因為權(quán)限問題一直403...弄了很久才弄好...菜是原罪...
  本文主要記錄在Windows端安裝Hexo吧趣,使用Hexo搭建博客并實現(xiàn)Git自動部署到VPS(Ubuntu)法竞。

本地安裝Hexo建站

Hexo是一個快速、簡潔且高效的博客框架强挫。Hexo使用Markdown(或其他渲染引擎)解析文章岔霸,在幾秒內(nèi),即可利用靚麗的主題生成靜態(tài)網(wǎng)頁俯渤。

安裝前的準備

  • Git
    下載對應(yīng)的系統(tǒng)版本的Git安裝好呆细,使用git --version查看Git版本,若顯示版本信息則說明安裝成功八匠。
    git

    安裝好后絮爷,進行一些初始化的操作,打開Git Bash設(shè)置用戶名和郵箱:
    git config --global user.name "用戶名"
    git config --global user.email "郵箱地址"
    
    設(shè)置SSH Key梨树,Git Bash內(nèi)執(zhí)行:ssh-keygen -t rsa -C "郵箱地址"
    根據(jù)提示輸入密碼等完成設(shè)置坑夯。
    查看公開密鑰:cat ~/.ssh/id_rsa.pub復(fù)制顯示的內(nèi)容,待會有用抡四。
  • Node.js
    下載對應(yīng)的系統(tǒng)版本的Node.js安裝好柜蜈,使用node --version查看Node.js版本,若顯示版本信息則說明安裝成功指巡。
    nodejs

使用npm安裝Hexo

執(zhí)行:npm install -g hexo-cli

建站

安裝完畢后淑履,在適當?shù)奈恢眯陆ㄒ粋€文件夾(以hexo為例),并在文件夾內(nèi)打開終端執(zhí)行:

hexo init
npm install
init

npm

  執(zhí)行完后藻雪,文件夾目錄結(jié)構(gòu)如圖所示:


doc

  至此秘噪,本地Hexo博客搭建完成。

Git Hooks自動部署

部署前的準備

部署原理

通過在本地編輯文本字逗,然后使用Git遠程部署到VPS的Git倉庫。hexo d命令實際上只deploy了本地的public文件夾宅广,Git Hooks實際上就是當Git倉庫收到最新的push時葫掉,將Git倉庫接受到的內(nèi)容復(fù)制到VPS上的網(wǎng)站目錄內(nèi)。相當于完成了手動將public文件夾復(fù)制到VPS的網(wǎng)站根目錄里跟狱。

VPS操作

安裝配置Git

  • 安裝Git
    通過SSH連接VPS俭厚,執(zhí)行:apt-get install git,完成后通過git --version查看Git版本驶臊,若顯示版本信息則說明安裝成功挪挤。
    vpsgit
  • 創(chuàng)建git用戶
    執(zhí)行:adduser git,根據(jù)提示設(shè)置密碼关翎。
  • 賦予git用戶sudo權(quán)限
    執(zhí)行:
    chmod 740 /etc/sudoers
    vim /etc/sudoers
    
    找到以下內(nèi)容:
    # User privilege specification
    root    ALL=(ALL:ALL) ALL
    
    root ALL=(ALL:ALL) ALL這一行下面添加git ALL=(ALL:ALL) ALL
    git

    保存退出后扛门,修改回文件權(quán)限chmod 440 /etc/sudoers
  • 關(guān)閉git用戶shell權(quán)限
    執(zhí)行:vim /etc/passwd
    將最后一行的git:x:1001:1001:,,,:/home/git:/bin/bash修改為git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
    gitshell
  • 初始化git倉庫
    切換到git用戶su git
    然后:
    cd /home/git                //切換到git用戶目錄
    mkdir blog.git              //創(chuàng)建git倉庫文件夾,以blog.git為例
    cd blog.git             //進入倉庫目錄
    git init --bare             //使用--bare參數(shù)初始化為裸倉庫纵寝,這樣創(chuàng)建的倉庫不包含工作區(qū)
    
  • 創(chuàng)建網(wǎng)站目錄
    cd /var/www/                //切換目錄
    mkdir blog              //創(chuàng)建網(wǎng)站目錄论寨,以blog為例
    
  • 配置SSH
    cd /home/git                //切換到git用戶目錄
    mkdir .ssh              //創(chuàng)建.ssh目錄
    cd .ssh
    vim authorized_keys
    
    然后將本地的公鑰復(fù)制到authorized_keys文件里(公鑰即上文中本地執(zhí)行cat ~/.ssh/id_rsa.pub查看的內(nèi)容)
  • 用戶組管理
    執(zhí)行:
    ll /home/git/
    ll /var/www/
    

    確保blog.git、.ssh爽茴、blog目錄的用戶組權(quán)限為git:git


    user

    若不是葬凳,執(zhí)行下列命令后再查看:

    sudo chown git:git -R /var/www/blog
    sudo chown git:git -R /home/git/blog.git
    

安裝配置nginx

  • 安裝nginx
    執(zhí)行:apt-get install nginx,若輸入nginx -V可以看到nginx版本信息室奏,則安裝成功火焰。
  • 配置nginx
    執(zhí)行:
    cd /etc/nginx/sites-available               //切換目錄
    cp default default.bak                  //備份默認配置
    vim default                     //修改配置
    
    參靠我的本人配置文件內(nèi)容:
    server {
        listen 80 default;              //默認監(jiān)聽80端口
        root /var/www/blog;             //網(wǎng)站根目錄
        server_name leihungjyu.com www.leihungjyu.com;  //網(wǎng)址
        access_log  /var/log/nginx/blog_access.log;
        error_log   /var/log/nginx/blog_error.log;
        error_page 404 =  /404.html;
    
        location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
            root /var/www/blog;
            access_log   off;
            expires      1d;
        }
    
        location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
            root /var/www/blog;
            access_log   off;
            expires      10m;
        }
    
        location / {
            root /var/www/blog;
            if (-f $request_filename) {
            rewrite ^/(.*)$  /$1 break;
            }
        }
    
        location /nginx_status {
            stub_status on;
            access_log off;
        }
    }
    
    保存退出后,啟動nginx:systemctl start nginx
    設(shè)置開機自動啟動:systemctl enable nginx
    查看運行狀態(tài):systemctl status nginx,顯示running表示成功運行胧沫。
    nginx

配置Git Hooks

  • 創(chuàng)建post-receive文件
    git用戶下執(zhí)行:
    cd /home/git/blog.git/hooks     //切換到hooks目錄下
    vim post-receive            //創(chuàng)建文件
    
    復(fù)制下面的內(nèi)容到post-receive文件中:
    #!/bin/bash
    GIT_REPO=/home/git/blog.git
    TMP_GIT_CLONE=/tmp/blog
    PUBLIC_WWW=/var/www/blog
    rm -rf ${TMP_GIT_CLONE}
    git clone $GIT_REPO $TMP_GIT_CLONE
    rm -rf ${PUBLIC_WWW}/*
    cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
    
    保存退出后昌简,執(zhí)行:chmod +x post-receive賦予可執(zhí)行權(quán)限。

本地操作

  • 嘗試連接
    在本地打開Git Bash:
    ssh git@VPS的ip
    image

    如圖所示則連接成功琳袄,若默認端口不是22江场,則需要在后面加上-p 端口號纺酸,或者在.ssh文件夾下創(chuàng)建一個config文件窖逗,內(nèi)容如下:
    Host 服務(wù)器IP
    HostName 服務(wù)器IP
    User git
    Port 端口號
    IdentityFile ~/.ssh/id_rsa
    
  • 配置Hexo
    打開本地博客根目錄下的_config.yml文件,找到最后的deploy配置餐蔬,修改為:
    # Deployment
    ## Docs: https://hexo.io/docs/deployment.html
    deploy:
        type: git
        repo: git@VPS的IP:blog.git
        branch: master
    

到此碎紊,Hexo建站就全部配置部署完畢了佑附。

第一篇文章

新建文章:hexo n "文章名"或者hexo new "文章名",然后使用Markdown編輯文章內(nèi)容仗考。
  生成:hexo g或者hexo generate
  部署:hexo d或者hexo deploy
  生成部署執(zhí)行完后音同,訪問自己的網(wǎng)址就可以看到文章了。
  其他有用的命令:

hexo clean      //清理緩存
hexo s          //本地預(yù)覽
hexo server     //本地預(yù)覽

一般來說秃嗜,寫文章時一般先使用hexo s打開本地預(yù)覽权均,一邊寫一邊預(yù)覽修改,完成之后再通過hexo g -d生成上傳锅锨。

更多文章:

Hongyu996的博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叽赊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子必搞,更是在濱河造成了極大的恐慌必指,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恕洲,死亡現(xiàn)場離奇詭異塔橡,居然都是意外死亡,警方通過查閱死者的電腦和手機霜第,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門葛家,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人庶诡,你說我怎么就攤上這事惦银。” “怎么了末誓?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵扯俱,是天一觀的道長。 經(jīng)常有香客問我喇澡,道長迅栅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任晴玖,我火速辦了婚禮读存,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘呕屎。我一直安慰自己让簿,他們只是感情好,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布秀睛。 她就那樣靜靜地躺著尔当,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蹂安。 梳的紋絲不亂的頭發(fā)上椭迎,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天锐帜,我揣著相機與錄音,去河邊找鬼畜号。 笑死缴阎,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的简软。 我是一名探鬼主播蛮拔,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼痹升!你這毒婦竟也來了语泽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤视卢,失蹤者是張志新(化名)和其女友劉穎踱卵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體据过,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡惋砂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绳锅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片西饵。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鳞芙,靈堂內(nèi)的尸體忽然破棺而出眷柔,到底是詐尸還是另有隱情,我是刑警寧澤原朝,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布驯嘱,位于F島的核電站,受9級特大地震影響喳坠,放射性物質(zhì)發(fā)生泄漏鞠评。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一壕鹉、第九天 我趴在偏房一處隱蔽的房頂上張望剃幌。 院中可真熱鬧,春花似錦晾浴、人聲如沸负乡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抖棘。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钉答,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工杈抢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留数尿,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓惶楼,卻偏偏與公主長得像右蹦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子歼捐,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容