0%

緣起

更新了 hexo 之後一執行就噴下面這三行訊息

1
2
3
[Error: Module version mismatch. Expected 46, got 14.]
{ [Error: Cannot find module './build/default/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
{ [Error: Cannot find module './build/Debug/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }

解決方法

用以下這兩行就可以解決

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
2
$ brew update
$ brew install nginx

裝好的 nginx 會在路徑 /usr/local/etc/nginx/
所謂的設定檔也在這 /usr/local/etc/nginx/nginx.conf
打開之後大致上跟一般的 nginx 沒什麼兩樣

但是最需要注意的就是在 FastCGI pass 那段
這裡先放上我的給大家參考一下

1
2
3
4
5
6
7
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include /usr/local/etc/nginx/fastcgi_params;
}

註解掉的第四行是原本預設的內容,必須改成第三行才能運作,不然你會跑不起來然後在 log 裡面看到

1
fastcgi sent in stderr: "primary script unknown"

既然說到 log,順便提一下 log 的位置在 /usr/local/var/log/nginx/ 裡面
預設網頁目錄在 /usr/local/nginx/html

運行與 nginx 指令

最後這邊簡單列一下可能比較會用到的 nginx 相關指令

1
2
3
4
$ sudo nginx // 啟動 nginx
$ sudo nginx -s reload // 重新載入設定
$ sudo nginx -s restart // 重新啟動 nginx
$ sudo php-fpm // 啟動 php-fpm

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#取得昨天的日期時間
$ date -d'-1 day' #或 date -d'1 day ago'
Thu Nov 19 15:35:26 CST 2015

#取得明天的日期
$ date -d'1 day'
Sat Nov 21 15:36:59 CST 2015

#取得上個月的日期
$ date -d'-1 month'
Tue Oct 20 15:37:41 CST 2015

#取得上星期的日期
$ date -d'-1 week'
Fri Nov 13 15:37:56 CST 2015

但這時候如果想要移動同時又要自訂格式

1
2
3
# 取得昨天的自訂格式日期
$ date -d '-1 day' '+%Y%m%d'
20151119

其他的依此類推囉

本篇參考

http://eit.tw/IomMPP

緣起

其實使用 GitLab 也是有好一段時間了,但是早期的 GitLab 安裝麻煩又囉唆,使用起來也常常聽說有不穩定的問題,但發展也好一段時間了。
目前在規模上面也是到達一定程度,而且已經被包成一個 deb 檔案,所以只要一個 dpkg -i 就可以把所有需要的套件裝完,簡便性大增。
在 7.9.2 之後 GitLab 也進行版本切割,一般人會用到的比較多應該還是社群版(CE版),這邊來稍微紀錄一下我的整個安裝過程。

而這篇主要是參考了 Gaod 大神的大作
GitLab on Ubuntu 12.04 LTS,在 Ubuntu 12.04 上安裝 GitLab

Installation

1
2
3
sudo wget <檔案連結url> # 連結在 https://www.gitlab.com/downloads/
sudo dpkg -i <檔案名稱>
sudo apt-get install python-docutils

如何重跑 GitLab 服務

假設要重跑 GitLab 相關的所有服務

1
sudo gitlab-ctl restart

當然,也可以重跑特定服務就好,例如只想單純重跑 nginx

1
sudo gitlab-ctl restart nginx

如何從備份還原 GitLab 資料

這邊是假設備份檔放在 /net/gitlab_backup,檔名是 ${timestamp}_gitlab_backup.tar

1
2
3
sudo gitlab-rake gitlab:backup:restore RAILS_ENV=production gitlab:backup:restore BACKUP=/net/gitlab_backup/${timestamp}_gitlab_backup.tar
or
sudo gitlab-rake gitlab:backup:restore BACKUP=${timestamp} force=yes

如何更新 GitLab 版本

假設要從舊版封裝升到 GitLab 新版本(請注意,未來可能會有些版本需要額外的手動介入,更新前最好還是看一下官方文件並且先備份)

1
2
3
4
5
6
$ sudo wget <檔案連結>
$ sudo gitlab-ctl stop unicorn
$ sudo gitlab-ctl stop sidekiq
$ sudo dpkg -i <檔案名稱>
$ sudo gitlab-ctl reconfigure
$ sudo gitlab-ctl start

備註

其他設定可以參考一下原文

緣起

最近為了發揮 laravel 5.1 完整的功能,而在研究裡面包好的各種阿里布達套件,弄著弄著弄到了 phpunit 但在安裝 phpunit 遇到了一個問題,就是 mac 不知道跟 php 有仇還是怎樣,幾乎各種版本 cli 都更新了就是 php 還停留在 5.5 不知道是哪招(老闆聽說 php7 都已經 RC2 啦~),導致於新版 phpunit 無法執行(目前穩定版需要配合 php 5.6),於是乎很多人會想到了使用 homebrew 來作安裝,但無奈的是 homebrew 也沒有把 php 納入,所以要安裝的話必須另外用一些方法。

Installation

在安裝的部分可以參考 homebrew-php 的說明
這裡使用的是 homebrew 的隱藏指令 tap,據悉是用來安裝擴充套件的

1
2
3
$ brew tap homebrew/dupes
$ brew tap homebrew/versions
$ brew tap homebrew/homebrew-php

前置做完之後就可以進行安裝

1
2
// 安裝 php5.6 , 如果你想安裝 7.0 也可以改成 php70
$ brew install php56

裝好之後應該就搞定啦!

後記

這裡有一點很詭異的地方是,Mac OSX 10.11(EI Capitan)裡面的 whereis 根本是錯的,不管你怎麼設定,他幫你找到的位置永遠是 /usr/bin/*

1
2
3
4
5
6
7
8
$ whereis php
/usr/bin/php

$ php --version
PHP 5.6.14 (cli)

$ /usr/bin/php --version
PHP 5.5.27 (cli)

可見 whereis 在現在這版本根本壞了
下次更新不知道會不會修回來

另外關於隱藏指令可以稍微參考一下這篇
隱藏指令

緣起

當你在終端機想要找尋你所插在電腦的裝置的真實路徑的時候
你可能無從下手,okay 現在把下面這個指令勇敢地敲下去

1
$ ls -1 /dev/tty.*

緣起

因為多人進行開發的時候會有版本控管問題,因此大多人會使用一些版本控制工具,時下最熱門的當然屬 git 為主流
有時候因為我們改了些東西而別人也改了同樣的東西導致有些衝突在,最後亂成一團的時候一發不可收拾,於是乎我們會想乾脆 reset 至現在 server 上面的最新版本重來,這個時候我們可以用下面這兩行來進行 reset

直接指令下去就不多解釋了

1
2
$ git fetch --all  
$ git reset --hard origin/master

這個時候再重新 git pull 就大功告成了

緣起

最近遇到了一個因為在 db 運作時 磁碟容量寫滿了,然後 db 直接 crash 後自動重開而且失敗,造成大量存取中的 table 毀損,稍微研究了一下如何把那些壞掉的 table 修復起來,以下做個分享

首先先用以下指令檢查壞掉的情況

1
$ myisamchk <table_name>

若要修復的話加上參數 -r

1
$ myisamchk -r <table_name>

若要修的數量太多太大可以再加上 -q (快速模式)

1
$ myisamchk -r -q <table_name>

若修復過程遇到問題可以改成 -o (安全模式),但是更慢

1
$ myisamchk -o <table_name>

全部修完之後可以再做一次 chk,另外如果要進行 mysqldump 遇到 LOCK TABLES 的情形可以使用–skip-lock-tables

1
$ mysqldump -uroot -p$PASSWORD -q --skip-lock-tables <db_name> > xxxx.sql

緣起

有時候或許會發現 OS 作業系統的時間不準的情況,如果是在 ubuntu 上面,其實只需要兩個指令就能夠更新設定

1
2
$ sudo ntpdate time.stdtime.gov.tw // 更新系統時間
$ sudo hwclock -w // 將新的時間寫入 blos

緣起

localhost 對於有在做任何網頁開發的朋友一定不陌生,但最近突然發現一個一直以來被我忽略掉的問題,那就是在 mac 上面的時候我竟然只能使用 127.0.0.1 來當網址,而不能使用 localhost,這想當然爾是因為 hostname 沒有設定將 localhost 對應到 127.0.0.1,所以找了一下設定的方法,分享一下。

直接指令下去就不多解釋了

1
$ sudo vim /private/etc/hosts

找到裡面有一行是

1
#127.0.0.1 localhost

把註解拿掉存檔離開就大功告成了