Ubuntu架設Vpn server

以下為在Ubuntu上架設vpn server的幾個步驟,架設的是pptpd,做點筆記:

sudo apt-get install pptpd

#修改 /etc/pptpd.conf,將以下註解拿掉
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

#修改/etc/ppp/pptpd-options,加入以下
ms-dns 168.95.1.1
ms-dns 8.8.8.8

#修改/etc/ppp/chap-secrets,加入你要連線的帳密
user name password *
以上name可以去pptpd-options裡面找,預設是pptpd,所以可以會變成以下
user pptpd password *

#若要讓vpn連到網際網路,需要再輸入以下設定
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

最後記得開1723這個vpn的port,不然會連不上。
如果有任何連線問題,可以去/var/log/syslog看錯誤訊息

如果出現MPPE required but peer negotiation failed 這個錯誤訊息
表示你Vpn連線時要勾選MPPE加密

接下來如果你要在Ubuntu下連線至Vpn,需要設定一點東西如下
螢幕擷圖存為 2014-05-15 11:47:58
之後點選進階,將MPPE那個選項打勾
螢幕擷圖存為 2014-05-15 11:50:51

最後儲存離開,試著連線看看,應該可以連上了。

只是,我連上遠端設好的Vpn server,發現速度超級超級慢…….
可能是因為遠端機器是放在東京,改天再來想辦法。

參考文件:
1.http://www.netadmin.com.tw/article_content.aspx?sn=1109020002
2.http://gsyan888.blogspot.tw/2009/11/ubuntu-vpn-server.html
3.http://carl830.pixnet.net/blog/post/68143721-ubuntu-%E6%9E%B6%E8%A8%ADvpn-server-with-pptp
4.Ubuntu vpn 設定 (pptp Server)
5.Ubuntu VPN连接失败解决方案

Cakephp:多國語系網站建制

一般網站擴張到國際都要搞多語系, 以下是cakephp多語系建制的步驟。

假設你的兩個Domain分別是:
1.www.your-site.com (英文)
2.zh-tw.your-site.com (繁體中文)

step1.修改你的bootstrap.php,設定你的config language

if($_SERVER['SERVER_NAME'] == 'www.your-site.com'){
Configure::write('Config.language', 'eng');
}elseif($_SERVER['SERVER_NAME'] == 'zh-TW.your-site.com'){
Configure::write('Config.language', 'zh-TW');
}elseif($_SERVER['SERVER_NAME'] == 'xxx'){
#依此類推
}

step2.修改所有你要轉換的字串
例如有一串字 ‘購物車’,將它修改成以下:

<?= __('購物車'); ?>

step3.設定console cake

#先將cake這個command加到.bashrc
export PATH="$PATH:/Users/mark/cakephp/lib/Cake/Console"
#之後你可以進入你的cakephp的app目錄裡面打cake,會發現可以用了,你會得到類似以下訊息
Current Paths:

-app: app
-working: /path/to/cakephp/app
-root: /path/to/cakephp/
-core: /path/to/cakephp/core

Changing Paths:

your working path should be the same as your application path
to change your path use the '-app' param.
Example: -app relative/path/to/cakephp/app or -app /absolute/path/to/cakephp/app

Available Shells:

acl [CORE] i18n [CORE]
api [CORE] import [app]
bake [CORE] schema [CORE]
command_list [CORE] testsuite [CORE]
console [CORE] upgrade [CORE]

To run a command, type 'cake shell_name [args]'
To get help on a specific command, type 'cake shell_name help'

step3.產生pot檔

產生po檔案指令:
cake i18n extract --extract-core no
接下來它會問你What is the path you would like to extract?
輸入你要轉解析的路徑即可。然後按D[Done]
接下來它會問你What is the path your would like to output?
輸入你要放置pot檔的位置,習慣是先放到app/Locale下
接下來它會問你Would you like to merge all domains strings into the default.pot file?
按n,不要即可。

#這樣應該就會在app/Locale產生一個default.pot檔了

step4.將default.po放置到正確路徑&翻譯
如果你的Config.language是eng,它會去找app/Locale目錄下的eng這個目錄。
如果你的Config.language是zh-tw,它會去找app/Locale目錄下的zh-tw這個目錄。
將剛剛的default.pot放到app/Locale/eng/LC_MESSAGES目錄下,檔名改成default.po
接下來編輯default.po

msgid "購物車"
msgstr "Cart"

#以下依此類推

如果你還有更多語言,跟上面步驟一樣,放到Locale對應的目錄下即可。

另外還有其他方式可用,例如__d(‘domain’,’購物車’)
domain可以讓妳指定,如果你用__d,生出來的就會是domain.pot,給你要指定的domain做轉換生成pot檔案。

以上是多國語系建制簡略說明。

參考文件:
1.http://book.cakephp.org/2.0/en/core-libraries/internationalization-and-localization.html
2.http://book.cakephp.org/2.0/en/console-and-shells.html
3.http://book.cakephp.org/2.0/en/console-and-shells/i18n-shell.html

WordPress的scroll triggered plugin

當我們用wordpress架好內容網站之後,有時候我們需要當使用者滑動到下方才顯示一些訊息的plugin。它可以用來放你想顯示給使用者的文章,或是放facebook的social plugin。

個人是用Qoate Scroll Triggered Box這個plugin,還有其它的也不錯,自行google。

WordPress部落格網站增加電子報功能

比較大型的部落格可能會想要電子報的功能,這可以使用google的feedburner,
另外wordpress可以搭配下載Feedburner Email Widget這個外掛。
螢幕擷圖存為 2014-05-10 01:46:25

別忘了google feedburner弄好之後進去裡面的publicize的email subscriptions裡面把code複製下來,貼到wordpress的feedburner email widget裡面,這樣就可以了。

另外你還可以自己設定電子報的一些樣式,feedburner會自動每天幫妳寄送電子報,你也可以設定發送時段。

Amazon EC2 T1.micro:自己建制swap

Ec2 T1.micro是amazon 最小規格的機器,記憶體只有6xxM而已,而且預設不會幫你開swap,需要自己建制。

今天愈到了cannot allocate memory for the buffer pool的問題,所以就需要自己弄swap虛擬記憶體空間,步驟如下:

dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /swapfile
swapon /swapfile

之後可以下一些command line看看狀態

top
swapon -s
free -k
swapoff -a
swapon -a

如果不開swap ,在t1.micro規格下遇到流量大點,mysql很容易就crash了,但是如果打開swap,估計在t1.micro的機器下,至少可以撐同時在線人數100~200左右的流量。

以上僅供參考。

參考文章:
1.http://linux.vbird.org/linux_basic/0230filesystem.php#swap
2.在Linux系統中動態增加swap檔案空間的方法
3.linux mkswap命令参数及用法详解—linux设置swap交换分区命令
4.Amazon EC2 Micro Instance Swap Space – Linux
5.MySQL 效能優化之參數配置修改(innodb_buffer_pool_size)

Ubuntu12.04:升級php至php5.4後imagemagick的問題

最近將php升級至5.4後,發生了找不到imagemagick extension的問題,以下是解法:

apt-get install imagemagick libmagick9-dev php5-imagick

如果遇到以下error message:

Package ‘libmagick9-dev’ has no installation candidate

那就試試這個:

apt-get install imagemagick libmagickwand-dev php5-imagick

最後再重新安裝:

pecl install imagick

記得修改php.ini

extension=imagick.so

參考文章:
http://devilsworkshop.org/tutorial/php54-imagemagick-pecl-installation/61444/

cakephp3.*安裝步驟

自從cakephp3.*增加了最主要的feature->ORM後,連安裝方式都不太一樣,
3.*以後改用composer安裝,而不是原先只要把github上的repo clone一份到local端的目錄即可:

安裝composer
請參考:php composer 安裝步驟

接下來執行以下:

php create-project -s dev cakephp/app

之後會在目錄下新增一個app專案目錄,你可以改成你自己要的專案名稱:
接著進去該目錄打:composer install即可。

安裝指南可參考cakephp官方網站:
http://book.cakephp.org/3.0/en/installation.html

ubuntu12.04LTS:升級php5.3至5.4

最近想將cakephp2.x升級至3.x,其中php要求為5.4.19,以下是ubuntu12.04升級php5.3至5.4步驟:

sudo add-apt-repository ppa:ondrej/php5-oldstable
sudo apt-get update
sudo apt-get install python-software-properties
sudo apt-get update
php -v #check version
sudo apt-get install php5