复制一下,免得下次翻越围墙
时间:2010-07-15 来源:ywencn





在Ubuntu9.10下安裝REE + Passenger + Rails + MySql + Phpmyadmin + Nginx
從Ubuntu 9.10剛裝好的狀態開始進行。
安 裝環境:
Ubuntu Desktop 9.10 32-bit
在開始之前請先透過更新程式將Ubuntu升級到最新 版。
建議可以安裝chkconfig檢查常駐程式狀態,在命令列下:
sudo apt-get install chkconfig
開機服務啟動管理套件:
sudo apt-get install sysv-rc-conf
將 vim的連結建立起來:
sudo ln -s /usr/bin/vim.tiny /bin/vim
最好一開始就先安裝好mysql-server與 mysql-client
sudo apt-get install mysql-server
sudo apt-get install mysql-client
1. 到REE官方網站下載,特別注意的是Ubuntu的使用者務必下載Ubuntu的專屬版本
連結在此:http://rubyforge.org /frs/download.php/66164/ruby-enterprise_1.8.7-2009.10_i386.deb
使用 wget指令下載REE
例如在家目錄:
sudo wget http://rubyforge.org/frs/download.php/66164/ruby-enterprise_1.8.7-2009.10_i386.deb
2. 因為下載下來的是壓縮檔,因此下載完畢後執行安裝動作:
sudo dpkg -i ruby-enterprise_1.8.7-2009.10_i386.deb
3. 安裝的檔案會放置在/usr/local/bin/中,請檢查是否有以下指令程式:
REE所安裝的程式都在此,因此未來如果需要移除,將這個目錄/usr/local/bin砍掉就好了。
4. 接下來把沒有裝完的程式都裝進去吧,例如最重要的rails,在/usr/local/bin的目錄下執行:
sudo gem install rails
5. 再來安裝ruby的mysql套件。在使用gem安裝mysql時可能會遇到缺乏檔案的問題。例如以下畫面:
因為欠缺mysql的開發版本,因此我們需要下載libmysqlclient15-dev這個套件
sudo apt-get install libmysqlclient15-dev
用以上的指令把他安裝下來吧。
然後再一次安裝mysql:
sudo gem install mysql
成功了!
6.(訂正 此步驟可省略)
下一步來建立指令的軟連結,使用ln指令來進行。首先到/bin的目錄下,這邊指 的是根目錄下的bin。
開始建立ruby的連結
sudo ln -s /usr/local/bin/ruby /bin/ruby
馬上測試:ruby -v 這樣會跑出ruby的版本。
一 口氣把常用的幾個連結都建立起來吧。
sudo ln -s /usr/local/bin/gem /bin/gem
sudo ln -s /usr/local/bin/rake /bin/rake
sudo ln -s /usr/local/bin/irb /bin/irb
7. 安裝網頁伺服器nginx與passenger
為什麼不直接透過passenger-install-ngnix-module來安裝 nginx?因為直接安裝系統會欠缺部分檔案,例如PCRE,還有自動安裝也非最新版本,未來可能會出現一些奇怪的現象。
目前採用手動下載 nginx的方式來進行。首先下載nginx的原始碼,先到官方首頁的下載頁面http://nginx.org/en/download.html
下 載最新版本。在此使用nginx-0.8.32
在想存放檔案的目錄下輸入以下指令:
sudo wget http://nginx.org/download/nginx-0.8.32.tar.gz
然 後對此檔案進行解壓縮:
sudo tar zxvf nginx-0.8.32.tar.gz
解壓縮後會產生一個同名的目錄。把這個目錄的路徑記住然後進行下一步。
8. 安裝nginx
在安裝nginx之前先要安裝nginx中會用到的PCRE套件
在PCRE的官網下載最新的PCRE套 件:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz
下 載到家目錄指令
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz
然 後解壓縮
tar zxvf pcre-8.00.tar.gz
但 是因為現在還欠缺一些套件,所以無法順利的安裝PCRE,先進行下一步。
回到/usr/local/bin目錄中執行以下指令:
sudo passenger-install-nginx-module
這 時候程式會開始檢查所需要的套件,如果有缺少需要的套件時會出現以下畫面:
別擔心,安裝程式在這邊會告訴你怎麼做:
例如在這邊只要依序輸入以下順序:
sudo apt-get install build-essential
sudo apt-get install libssl-dev
sudo apt-get install zlib1g-dev
在這邊先不急著回 去執行passenger-install-nginx-module的安裝;因為以上安裝的套件正好可以讓PCRE安裝起來。所以現在回到PCRE的目 錄中執行以下指令:
然後開始進行配置與安裝:
./configure
make
sudo make install
這樣就能把PCRE給安裝起來了。
套件安裝安畢後可以開始進行nginx與 passenger的安裝了。回到passenger-install-nginx-module的目錄上。
再次輸入以下指令(這次應該沒問題 了):
sudo passenger-install-nginx-module
安裝程式會詢問安裝nginx的方式,選擇1是全自動安裝,選擇2 是手動安裝;在這邊我們選擇2手動安裝。
程式會要求nginx的原始目錄,請輸入之前放置nginx的位置,例如/home/user /nginx-0.8.32。
接下來一切照預設的步驟,按下yes或enter進行。
然後等待nginx安裝完畢,然後參考以下步驟建立 nginx的script管理檔案,方便管理ngnix:
(參考以下資料:http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/ )
sudo vim /etc/init.d/nginx
貼上以 下的程式:
#! /bin/sh ### BEGIN INIT INFO # Provides: nginx # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the nginx web server # Description: starts nginx using start-stop-daemon ### END INIT INFO PATH=/opt/nginx/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/opt/nginx/sbin/nginx NAME=nginx DESC=nginx test -x $DAEMON || exit 0 # Include nginx defaults if available if [ -f /etc/default/nginx ] ; then . /etc/default/nginx fi set -e . /lib/lsb/init-functions case "$1" in start) echo -n "Starting $DESC: " start-stop-daemon --start --quiet --pidfile /opt/nginx/logs/$NAME.pid \ --exec $DAEMON -- $DAEMON_OPTS || true echo "$NAME." ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --pidfile /opt/nginx/logs/$NAME.pid \ --exec $DAEMON || true echo "$NAME." ;; restart|force-reload) echo -n "Restarting $DESC: " start-stop-daemon --stop --quiet --pidfile \ /opt/nginx/logs/$NAME.pid --exec $DAEMON || true sleep 1 start-stop-daemon --start --quiet --pidfile \ /opt/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true echo "$NAME." ;; reload) echo -n "Reloading $DESC configuration: " start-stop-daemon --stop --signal HUP --quiet --pidfile /opt/nginx/logs/$NAME.pid \ --exec $DAEMON || true echo "$NAME." ;; status) status_of_proc -p /opt/nginx/logs/$NAME.pid "$DAEMON" nginx && exit 0 || exit $? ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|reload|force-reload|status}" >&2 exit 1 ;; esac exit 0 |
然後改變檔案屬性:
sudo chmod +x /etc/init.d/nginx
設定開機時啟動,可以從畫面中看到主要的幾個啟動模式被設定。
sudo /usr/sbin/update-rc.d -f nginx defaults
9. 使用以下指令安裝phpmyadmin。安裝時請記得輸入的mysql管理密碼。
sudo apt-get install phpmyadmin
安 裝成功後到瀏覽器列輸入以下網址查看是否成功:
localhost/phpmyadmin
首先用sudo service apache2 stop 關閉Apache
然 後啟動sudo sysv-rc-conf 關閉 apache2在開機時的服務
10. 接下來把phpmyadmin的網頁伺服器改成nginx;這需要完成以下步驟:
安 裝php5-cgi:
sudo apt-get install php5-cgi
sudo apt-get install spawn-fcgi
建立pcgi檔到家目錄,然後更改權 限:
sudo vim pcgi
#!/bin/sh PROVIDES=php-cgi FCGI=/usr/bin/spawn-fcgi SERVER_IP=127.0.0.1 SERVER_POST01=9000 SERVER_POST02=9001 SERVER_POST03=9002 SERVER_POST04=9003 SERVER_POST05=9004 SERVER_USER=www-data SERVER_GROUP=www-data PHP_CGI=/usr/bin/php-cgi PGREP=/usr/bin/pgrep KILLALL=/usr/bin/killall CHILDREN=6 cmd=$1 pcgi_start() { echo "Starting $PROVIDES..." $FCGI -a $SERVER_IP -p $SERVER_POST01 -u $SERVER_USER -g $SERVER_GROUP -f $PHP_CGI -C $CHILDREN $FCGI -a $SERVER_IP -p $SERVER_POST02 -u $SERVER_USER -g $SERVER_GROUP -f $PHP_CGI -C $CHILDREN $FCGI -a $SERVER_IP -p $SERVER_POST03 -u $SERVER_USER -g $SERVER_GROUP -f $PHP_CGI -C $CHILDREN $FCGI -a $SERVER_IP -p $SERVER_POST04 -u $SERVER_USER -g $SERVER_GROUP -f $PHP_CGI -C $CHILDREN $FCGI -a $SERVER_IP -p $SERVER_POST05 -u $SERVER_USER -g $SERVER_GROUP -f $PHP_CGI -C $CHILDREN } pcgi_stop() { echo "Killing $PROVIDES..." $KILLALL $PROVIDES } pcgi_restart() { pcgi_stop pcgi_start } pcgi_status() { $PGREP $PROVIDES > /dev/null [ $? -eq 0 ] && echo "$PROVIDES running." || echo "$PROVIDES not running." } pcgi_help() { echo "Usage: $0 {start|stop|restart|status}" } case ${cmd} in [Ss][Tt][Aa][Rr][Tt]) pcgi_start;; [Ss][Tt][Oo][Pp]) pcgi_stop;; [Rr][Ee][Ss][Tt][Aa][Rr][Tt]) pcgi_restart;; [Ss][Tt][Aa][Tt][Uu][Ss]) pcgi_status;; *) pcgi_help;; esac |
sudo chmod +x pcgi
sudo ./pcgi start 啟動php-cgi
(對應php程式的port是寫在php-cgi中,如果需要變動必須改寫 pcgi)
用ps aux檢查程序的php-cgi是否已啟動
然後編輯/opt/nginx/conf/nginx.conf:
sudo vim /opt/nginx/conf/nginx.conf
把 user從nobody改成www-data www-data,如下圖:
然後將http{}裡的log_format區塊的註解拿掉。
在http {}底下插入以下設定:
include "/opt/nginx/conf/extra/*";
代表將extra目錄內的設定一次帶入,但目前 還未建立extra目錄。
新增一個資料夾在/opt/nginx/conf底下,例如extra:
sudo mkdir extra
目前用 phpmyadmin.conf管理phpmyadmin的設定,upstream-fair.conf管理fcgi與nginx之間的連結。
修 改phpmyadmin.conf
server { listen 80; server_name sqladmin; charset utf-8; access_log /var/log/nginx/sqladmin.access.log main; error_page 404 /404.html; location = /404.html { root /usr/local/nginx/html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/nginx/html; } location ~ ^/(images|javascripts|stylesheets)/ { root /usr/share/phpmyadmin; expires 30d; } location / { # allow 121.162.231.64; # allow 117.89.223.67; #deny all; root /usr/share/phpmyadmin; index index.php; } location ~ \.php$ { root /usr/share/phpmyadmin; fastcgi_pass phpcgi; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } |
phpmyadmin.conf
修改 server_name的參數以符合需求,另外不能限制能夠進入的ip,例如:
location / {
# allow 121.162.231.64;
# allow 117.89.223.67;
# deny all;
}
允許則用 allow,拒絕則用deny all;
新增/var/log/ngnix目錄以符合phpmyadmin.conf裡的設定
修改 upstream.conf,需要符合pcgi內所設定的port
upstream phpcgi { server 127.0.0.1:9000; server 127.0.0.1:9001; server 127.0.0.1:9002; server 127.0.0.1:9003; server 127.0.0.1:9004; } |
upstream-fair.conf
下一步就是新增一個 rails應用程式,首先到欲建立應用程式的目錄中執行:
rails app_name
app_name就是應用程式的名稱。
在extra下面新增一個 檔案:rails.conf
然後在 rails.conf檔案中輸入以下:
server { listen 80; server_name app_name; root /home/user/rails/app_name/public; passenger_enabled on; rails_spawn_method smart; rails_env development; } |
rails.conf
其中要注 意的是如果要改成產品模式,記得將rails_env developement;這行給註解掉
然後重新啟動ngnix:
sudo service nginx restart
11. 最後到根目錄下的/etc找到hosts這個檔案,進入編輯修改以符合上一個步驟中的server_name
127.0.0.1 app_name
12. 進入瀏覽器,在網址列輸入在hosts中設定的server_name,例如以上的app_name美妙的rails應用程式開啟成功畫面映入眼簾。而輸 入sqladmin也可以看到phpmyadmin了。
http://newbieror.pixnet.net/blog/post/4158023