緣起
更新了 hexo 之後一執行就噴下面這三行訊息
1 | [Error: Module version mismatch. Expected 46, got 14.] |
解決方法
用以下這兩行就可以解決1
2$ npm install hexo --no-optional
$ npm install --unsafe-perm --verbose -g hexo
更新了 hexo 之後一執行就噴下面這三行訊息
1 | [Error: Module version mismatch. Expected 46, got 14.] |
用以下這兩行就可以解決1
2$ npm install hexo --no-optional
$ npm install --unsafe-perm --verbose -g hexo
談到 web server 大家第一個想到的大概是老大哥 apache,而且 mac osx 裡面其實已經內建了,方便性不用多說。
但近年來 nginx 不論是效能上或是體積上基本上都已經取代 apache 的地位,當然就成為大家的新寵,頂多在使用上有一點點的不方便,這篇文章記錄一下在 mac osx 上面安裝 nginx 的步驟。
首先你要將 homebrew 裝起來,使用 mac 同時又有在做開發的人應該都有裝吧?
好吧,沒有的話先去 homebrew 網站看看。
1 | $ brew update |
裝好的 nginx 會在路徑 /usr/local/etc/nginx/
所謂的設定檔也在這 /usr/local/etc/nginx/nginx.conf
打開之後大致上跟一般的 nginx 沒什麼兩樣
但是最需要注意的就是在 FastCGI pass 那段
這裡先放上我的給大家參考一下
1 | location ~ \.php$ { |
註解掉的第四行是原本預設的內容,必須改成第三行才能運作,不然你會跑不起來然後在 log 裡面看到1
fastcgi sent in stderr: "primary script unknown"
既然說到 log,順便提一下 log 的位置在 /usr/local/var/log/nginx/ 裡面
預設網頁目錄在 /usr/local/nginx/html
最後這邊簡單列一下可能比較會用到的 nginx 相關指令
1 | $ sudo nginx // 啟動 nginx |
Enjoy it!
在 linux 中要以 shell 指令取得系統日期、時間算是基本語法(大概是像下面這樣)1
2$ date
Fri Nov 20 15:28:05 CST 2015
如果想要擷取部份或是自己的型式可以用1
2
3
4$ date '+%Y%m%d%H%M%S'
20151120152959
$ date '+%Y%m%d'
20151120
但如果要擷取的非今天的日期,在傳統 unix 上面可就有點麻煩了,可能必須用些工具或是自己寫程式來運算。而在 linux 版本的 date 中可以運用一些指令來對於結果做一些簡單的運算
1 | #取得昨天的日期時間 |
1 | # 取得昨天的自訂格式日期 |
其他的依此類推囉
其實使用 GitLab 也是有好一段時間了,但是早期的 GitLab 安裝麻煩又囉唆,使用起來也常常聽說有不穩定的問題,但發展也好一段時間了。
目前在規模上面也是到達一定程度,而且已經被包成一個 deb 檔案,所以只要一個 dpkg -i 就可以把所有需要的套件裝完,簡便性大增。
在 7.9.2 之後 GitLab 也進行版本切割,一般人會用到的比較多應該還是社群版(CE版),這邊來稍微紀錄一下我的整個安裝過程。
而這篇主要是參考了 Gaod 大神的大作
GitLab on Ubuntu 12.04 LTS,在 Ubuntu 12.04 上安裝 GitLab
1 | sudo wget <檔案連結url> # 連結在 https://www.gitlab.com/downloads/ |
假設要重跑 GitLab 相關的所有服務
1 | sudo gitlab-ctl restart |
當然,也可以重跑特定服務就好,例如只想單純重跑 nginx1
sudo gitlab-ctl restart nginx
這邊是假設備份檔放在 /net/gitlab_backup,檔名是 ${timestamp}_gitlab_backup.tar
1 | sudo gitlab-rake gitlab:backup:restore RAILS_ENV=production gitlab:backup:restore BACKUP=/net/gitlab_backup/${timestamp}_gitlab_backup.tar |
假設要從舊版封裝升到 GitLab 新版本(請注意,未來可能會有些版本需要額外的手動介入,更新前最好還是看一下官方文件並且先備份)
1 | $ sudo wget <檔案連結> |
其他設定可以參考一下原文
最近為了發揮 laravel 5.1 完整的功能,而在研究裡面包好的各種阿里布達套件,弄著弄著弄到了 phpunit 但在安裝 phpunit 遇到了一個問題,就是 mac 不知道跟 php 有仇還是怎樣,幾乎各種版本 cli 都更新了就是 php 還停留在 5.5 不知道是哪招(老闆聽說 php7 都已經 RC2 啦~),導致於新版 phpunit 無法執行(目前穩定版需要配合 php 5.6),於是乎很多人會想到了使用 homebrew 來作安裝,但無奈的是 homebrew 也沒有把 php 納入,所以要安裝的話必須另外用一些方法。
在安裝的部分可以參考 homebrew-php 的說明
這裡使用的是 homebrew 的隱藏指令 tap,據悉是用來安裝擴充套件的
1 | $ brew tap homebrew/dupes |
前置做完之後就可以進行安裝
1 | // 安裝 php5.6 , 如果你想安裝 7.0 也可以改成 php70 |
裝好之後應該就搞定啦!
這裡有一點很詭異的地方是,Mac OSX 10.11(EI Capitan)裡面的 whereis 根本是錯的,不管你怎麼設定,他幫你找到的位置永遠是 /usr/bin/*
1 | $ whereis php |
可見 whereis 在現在這版本根本壞了
下次更新不知道會不會修回來
另外關於隱藏指令可以稍微參考一下這篇
隱藏指令
最近遇到了一個因為在 db 運作時 磁碟容量寫滿了,然後 db 直接 crash 後自動重開而且失敗,造成大量存取中的 table 毀損,稍微研究了一下如何把那些壞掉的 table 修復起來,以下做個分享
1 | $ myisamchk <table_name> |
1 | $ myisamchk -r <table_name> |
1 | $ myisamchk -r -q <table_name> |
1 | $ myisamchk -o <table_name> |
全部修完之後可以再做一次 chk,另外如果要進行 mysqldump 遇到 LOCK TABLES 的情形可以使用–skip-lock-tables1
$ mysqldump -uroot -p$PASSWORD -q --skip-lock-tables <db_name> > xxxx.sql