說在前面
本地使用macOS,vps系統爲debian 8;
雖然說是跳坑指南,可是這篇文章本意也僅僅自用,總結一下本身遇到的問題和解決方法,僅供參考,若有其餘問題請百度(google)html
總體思路:
本地調試完的hexo項目文件經過git推送給vps,而後直接部署在vps上使用域名來訪問,這樣一個屬於本身的blog就能夠完成了java
Git是一個免費的開源分佈式版本控制系統,旨在快速,高效地處理從小型到大型項目的全部事務。這原是普遍用在代碼的版本控制,在hexo建站裏面的主要做用是推送渲染好的靜態網頁文件到部署的倉庫。node
由於原本我就有,因此這裏就很少介紹;
網上其餘大佬也有不少教程nginx
同上,本地環境也有;git
Hexo是一個快速、簡潔且高效的靜態博客框架。安裝簡單,雖然網上教程一大堆,建議參考官方文檔。重要!官方文檔有中文 😃。github
官方文檔
https://hexo.io/zh-cn/shell
首先確保本地安裝好git和node.js,在終端中輸入npm install -g hexo-cli
npm
hexo init <folder> // 初始化項目文件夾;<folder>爲自定義hexo項目名稱 cd <folder> // 打開項目文件夾 npm install // 安裝依賴
完成上述步驟,查看本身的項目文件夾內,目錄應爲:json
. ├── node_modules //依賴包 ├── scaffolds // 模版 ├── source // 文章資源 | ├── _drafts //草稿 | └── _posts //發佈文章 ├── themes //主題 | └── landscape //默認主題 ├── package.json // npm配置文件(能夠不用管它) └── _config.yml //hexo配置文件
配置hexo
既然生成了博客了,那天然須要本身來配置一下本身的博客的信息,打開_config.yml文件進行配置;
具體配置參考官方文檔:https://hexo.io/zh-cn/docs/co...vim
下載主題
主題我挑了好久,最後選擇綜合症的我只有選了好多人推薦的next主題
next官方文檔:
https://github.com/theme-next...
下載
根據文檔給的方式使用git clonegit clone https://github.com/theme-next/hexo-theme-next themes/next
試了幾回,我一直報錯 'RPC failed; curl 18 transfer closed with outstanding read data remaining'
解決方案:git config http.postBuffer 524288000
固然啦,依舊報錯,並無解決個人問題
參考:https://www.cnblogs.com/zjfja...
因此我將git clone裏的https地址換成了ssh地址,完美解決,雖然網速依然很慢,可是不報錯啊!git clone git@github.com/theme-next/hexo-theme-next themes/next
主題配置
直接在項目文檔裏clone或者單獨clone後將next文件夾複製進項目的themes文件夾裏
. ├── themes //主題 | ├── landscape //默認主題 | └── next //新clone的next主題
並在hexo配置文件中更改主題
... theme: next //更改主題 ...
其餘配置暫時就不說了,之後會再次具體寫
如何購買vps不在本文詳細敘述,不論在阿里雲仍是騰訊雲仍是海外譬如搬瓦工之類購買,都是差很少的,vps大同小異,不過好像是國內的服務器配置域名是須要實名認證的,可是海外的就不須要;
從新說明個人vps安裝的系統是debian 8,若是有和我同樣的小夥伴那麼個人接下里的配置就頗有參考價值了,固然其餘版本的系統原理和流程其實也是大同小異;
再多說一句,系統不一樣,安裝包的命令也是不一樣的:rpm
/yum
適用於Redhat、CentOS、Suse等平臺;apt-get
/dpkg
適用於Debian、Ubuntu等平臺;
請你們本身尋找對應的安裝包,我這邊用的是apt-get
;
本地hexo文本編輯後,使用git遠程部署到vps的git倉庫。hexo d
只deploy本地打包後的public
文件夾;
在vps的git倉庫裏使用git hooks,當git倉庫收到最新的push時,將git倉庫接受到的內容複製到VPS上的網站根目錄內;至關於完成了手動將public
文件夾複製到vps的網站根目錄內
鏈接vps
我以爲若是看到這篇文章了,用ssh鏈接vps應該是都會的吧,那我就不說了;不會的請百度(谷歌) 😂
😤 算了,我稍微提一下,打開終端輸入ssh 用戶名(通常是root)@vps的ip地址 -p 端口號
按照提示輸入密碼,出現[root@主機名~]#
,登錄成功 😀
apt-get install git
查看版本號,用以確認安裝成功git -version
爲何要建立git用戶?
老實說,若是是本身一我的用的vps,那麼不用git用戶其實也沒啥,可是建立的意義就是用git用戶來管理git和代碼,而不用root,這樣更安全;
建立git用戶adduser git
按照提示設置密碼
賦予git用戶sudo權限chmod 740 /etc/sudoers #修改權限
vim /etc/sudoers #編輯該文件
安裝vimapt-get install vim
chmod: cannot access ‘/etc/sudoers’: No such file or directory
因該是沒有安裝sudo模塊
安裝sudoapt-get install sudo
再次執行上述操做,成功 😃
修改以下內容
# User privilege specification root ALL=(ALL:ALL) ALL
修改後
# User privilege specification root ALL=(ALL:ALL) ALL git ALL=(ALL:ALL) ALL #添加此行內容
修改迴文件的權限chmod 440 /etc/sudoers
切換git用戶,配置ssh
下載和上傳代碼的都是使用git這個用戶,但咱們又不想要每次都輸入密碼,怎麼辦?
因此咱們使用ssh證書,本地生成公鑰複製至服務端,每次登錄只要服務器自動覈對公鑰是否匹配便可
切換git用戶su git
建立.ssh文件夾mkdir ~/.ssh
建立authorized_keys文件並編輯,將公鑰複製進去便可vim ~/.ssh/authorized_keys
保存退出
先在本地電腦中獲取公鑰,再將公鑰複製粘貼到authorized_keys
(本地)查看公鑰cat ~/.ssh/id_rsa.pub | pbcopy
修改公鑰文件相應權限chmod 600 ~/.ssh/authorzied_keys
#只有擁有者有讀寫權限chmod 700 ~/.ssh
#只有擁有者有讀、寫、執行權限
返回本地客戶端,測試是否能夠鏈接上服務器(此時應該免密登錄成功) 😃ssh -v git@$ip -p $port
若是不成功請重試以上配置ssh步驟
先肯定本身想將項目的根目錄放在哪裏?
個人是這樣的:/home/git/blog/blog.git #git倉庫
/home/git/blog/hexo #項目根目錄
初始化git倉庫git init --bare blog.git
參數 --bare ,建立一個裸倉庫,不包含工做區
配置git hooks
咱們這裏要使用的是 post-receive 的 hook,這個 hook 會在整個 git 操做過程完結之後被運行。hook詳情
在blog.git/hooks目錄下新建一個post-receive文件:vim post-receive
文件中寫入:
#!/bin/sh git --work-tree=/home/git/blog/hexo --git-dir=/home/git/blog/blog.git checkout -f
--work-tree 對應項目部署根目錄
--git-dir 對應版本庫目錄
保存退出
添加post-receive文件的可執行權限chmod +x post-receive
blog.git的擁有者爲git用戶chown -R git:git blog.git
禁用git用戶的shell登陸權限vim /etc/passwd
找到git:x:1001:1001:,,,:/home/git:/bin/bash
改成git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
保存退出
這樣git用戶沒法使用shell登錄,但能夠經過ssh正常使用git推送
參考:https://www.cnblogs.com/navys...
多說一句
執行ll
命令,確保以上blog.git、.ssh、blog目錄的用戶組權限爲git:gitll /home/git
若是不是,執行chown git:git -R /home/git/blog
安裝 Ngnixapt-get install nginx
查看版本號(確認安裝成功)nginx -v
關於nginx的配置,這裏要說明一下
/etc/nginx/nginx.config
是nginx的默認配置文件;/etc/nginx/site-avalible
裏修改,這是官方推薦的方法,然而此時還必須往/etc/nginx/sites-enabled
裏添加 site-avalible
的軟鏈接;/etc/nginx/config.d
(用戶自定義配置文件夾)裏添加不一樣server的config文件,最後在nginx.config
裏 include 就能夠了;cd /etc/nginx/sites-available //切換目錄 cp default default.bak //備份默認配置 vim default //修改配置
找到server,修改裏面全部的location和root
server { # 默認80端口 listen 80 default_server; listen [::]:80 default_server; # 修改server_name爲本身以前註冊好的域名 server_name www.xksblog.top xksblog.top; # 修改網站根目錄,在這裏存放你的Hexo靜態文件,請自行選擇或建立目錄 root /home/git/blog/hexo; location / { root /home/git/blog/hexo; #部署的blog根目錄 index index.html index.htm } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
這裏我修改了default文件,若是須要添加其餘文件,須要在site-enabled裏增長相應軟鏈接ln -s /etc/nginx/sites-available/dotcom /etc/nginx/sites-enabled/dotcom
配置文件路徑/etc/nginx/nginx.conf
我看了看,不一樣vps版本系統的文件路徑不太同樣,請你們本身尋找對應系統的教程或者本身在系統裏尋找文件路徑
打開nginx.conf文件所在目錄cd /etc/nginx
# 修改前先備份一下 cp nginx.conf nginx.conf.bak # 修改配置文件 vim nginx.conf
修改配置文件中的http部分:
http { ... include /etc/nginx/conf.d/*.conf # 引入自定義sconfig文件 include /etc/nginx/site-enabled/*.conf # site-enabled(site-avalible)的server的配置 ... }
保存退出,使用nginx -t
查看配置是否有錯誤
啓動ngnixservice nginx start
瀏覽器打開服務器public IP,檢查ngnix是否啓動成功
中止ngnixnginx -s stop
重啓nginxnginx -s reload
查看運行狀態systemctl status nginx
顯示running表示成功運行
參考:
VPS搭建我的Hexo博客
Hexo搭建我的博客並使用Git部署到VPS
Nginx 使用及配置
如今距離成功還有一步之遙
npm install hexo-deployer-git --save
打開hexo配置文件_config.yml, 找到deploy
# Deployment ## Docs: https://hexo.io/docs/deployment.html deploy: type: git repo: git@VPS的IP:blog.git目錄 branch: master
通常到這邊就能夠直接hexo d
了, 可是我報錯了,發現默認端口22是沒法鏈接上的,由於vps的默認端口不是22;
此時有兩種解決方法
我選擇第二種,方法以下:repo: ssh://git@ip:port/blog.git目錄
推送部署hexo d
此時用域名或者vps ip鏈接,本身的blog就完成了!😃