您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何通過gitee管理hexo管理發布內容”,在日常操作中,相信很多人在如何通過gitee管理hexo管理發布內容問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何通過gitee管理hexo管理發布內容”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
最原始的辦法是通過ftp或者winscp這樣的工具能實現內容上傳,但是不夠簡化,首先你要登錄服務器,然后找到相應文件夾進行更新。
第二種方法是先更新gitee倉庫,然后通過ssh登錄服務器,然后從倉庫pull下所有代碼
第三種方法是不需要gitee倉庫,直接在服務器建一個空倉庫,然后把本地發布文件push到服務器倉庫上
上面3種方法,第1種最原始,第2種比較繁瑣,第3種簡單可操作,但是第3種有一個問題,就是代碼管理全部在服務器上,可視性比較差,能不能通過gitee管理代碼,包括原始文件,然后一旦用戶push,通過鉤子函數,觸發服務器主動拉取,這樣,所有操作都簡化為了本地的一個git push指令。說干就干,問了一圈度娘,果然高手在民間,幾個關鍵步驟都有相應的帖子介紹。
本地把項目文件統統push上去,除了node_module文件夾。這樣,項目文件也不會丟失,便于以后復用。
參看 https://gitee.com/help/articles/4181#article-header0
none
ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # Generating public/private rsa key pair...
產生兩個文件:id_rsa id_rsa.pub
切換到 ~/.ssh目錄,cat id_rsa.pub 文件,復制,這個就是gitee需要的公鑰,注意最后的用戶信息不要復制
gitee倉庫上操作后,服務器就能免登錄操作倉庫了
gitee倉庫管理上添加公鑰
gitee倉庫管理上添加公鑰
gitee倉庫管理上添加公鑰
分兩步,一是gitee上進行添加webhooks鉤子,不懂得可以參照官方文檔 https://gitee.com/help/categories/40
第二步,在服務器上添加地址監聽,對上一步填寫的post地址進行維護,大意就是一旦收到post請求,就執行一個sh命令,這個命令可以pull下倉庫代碼。
gitee上添加wenhooks
我這里用的是nodejs的express模塊監聽某個端口,文件名為wenhooks.js,具體代碼如下
none
var http = require('http') var createHandler = require('gitee-webhook-handler') var handler = createHandler({ path: '/webhooks_push', secret: 'cqmygysdssjtwmydtsgx'}); 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) }); } handler.on('error', function (err) { console.error('Error:', err.message) }) handler.on('Push Hook', function (event) { // # 這個地方就是GitHub 和 Gitee 不一樣的地方,需要注意 console.log('Received a push event for %s to %s', event.payload.repository.name, event.payload.ref); run_cmd('sh', ['/*/*/deploy.sh'], function(text){ console.log("sh deploy success");console.log(text) });//# 需要執行的腳本位置,需要自行修改成自己的,這行代碼比較重要,是要讓系統去執行一個腳本命令 }) try { http.createServer(function (req, res) { handler(req, res, function (err) { res.statusCode = 404 res.end('no such location') }) }).listen(1999) // # 服務監聽的端口,自行修改 }catch(err){ console.error('Error:', err.message) }
然后編輯一下腳本文件deploy.sh,大概內容如下:
none
cd /hexo項目路徑 #需要改成自己的項目地址,這行比較重要,當時因為這個問題折騰了好久,所有的都對,就是pull失敗 git pull git@gitee.com:zdong22/hexo.git
node下的pm2工具啟動進程,非常方便
pm2 start webhooks.js --name wenhook
pm2
需要使用ssl,這樣傳輸更安全
首先監聽80端口和443端口,然后80端口重定向到443端口
修改nginx.conf文件內容如下:
none
//80端口配置 server { listen 80; server_name zhangdong.site; index index.html index.htm index.php; root /hexo項目路徑; error_page 404 /404.html; include enable-php.conf; #將 http 重定向 https return 301 https://$server_name$request_uri; } //443端口配置 #https zhagndong.site server { listen 443 ssl; server_name zhangdong.site; root /項目路徑; index index.php index.html index.htm; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { try_files $uri /index.php =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # ssl證書地址 ssl_certificate /網站證書.pem; # pem文件的路徑 ssl_certificate_key /網站證書.key; # key文件的路徑 # ssl驗證相關配置 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; #使用服務器端的首選算法 }
pull只拉取public文件夾就行了,其它的不需要
具體方法是:
打開.git文件夾
none
[root@iZbp13m488196desr77aezZ .git]# ls branches config description FETCH_HEAD HEAD hooks index info logs objects ORIG_HEAD refs
修改config文件,sparesecheckout 從false改為true
none
[root@iZbp13m488196desr77aezZ .git]# cat config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true sparsecheckout = true [remote "origin"] url = git@gitee.com:zdong22/hexo.git fetch = +refs/heads/*:refs/remotes/origin/*
修改config文件
修改
.git/info
下的
sparse-checkout
文件,添加一行,
public/
none
[root@iZbp13m488196desr77aezZ info]# ls exclude sparse-checkout [root@iZbp13m488196desr77aezZ info]# cat sparse-checkout public/ [root@iZbp13m488196desr77aezZ info]#
修改sparse-checkout文件
現在發文邏輯就是
hexo new ->編輯 ->hexo clean -> hexo g -> git push ,幾個指令,然后網站就更好了。
ps:還有幾個重要的點
一是端口要確保能訪問,系統防火墻打開端口之后,云服務器控制臺還有一道防火墻
二是文件權限一定要確定,拿一個普通用戶去執行root操作肯定失敗
三是發布之后檢查一下,是不是內容存在問題,訪問是否正常
到此,關于“如何通過gitee管理hexo管理發布內容”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。