因為最近要架一個系統,想說從來沒有自己 host server ,就把流程都記錄一下吧。
目錄
- 一、環境設定 Linux + Rails
- 二、環境設定 Nginx (via passenger RubyGems)
- 三、環境設定 mysql(for Mac Hombrew)
- 四、部署設定 mina
- 五、資安處理
一、環境設定 Linux + Rails
1
| $ ssh evenchange4@hostip
|
- os: Ubuntu 12.04.2 LTS (GNU/Linux 3.2.0-23-generic x86_64)
- rvm install:
1
| $ \curl -L https://get.rvm.io | bash -s stable --rails # Or, --ruby=1.9.3
|
1 2 3 4 5 6 7 8 9
| $ rails -v Rails 4.0.0 $ ruby -v ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-linux] $ rvm list rvm rubies =* ruby-2.0.0-p195 [ x86_64 ]
|
1
| sudo apt-get install git
|
1 2
| $ gem install therubyracer $ sudo apt-get install nodejs
|
二、環境設定 Nginx (via passenger RubyGems)
Nginx (pronounced engine-x) is a free, open-source, high-performance HTTP server and reverse proxy.
-
1 2 3 4 5 6 7 8 9 10 11
| $ gem install passenger $ chmod o+x /home/evenchange4/.rvm/gems/ruby-2.0.0-p195/gems/passenger-4.0.5/ $ chmod o+x /home/evenchange4/.rvm/gems/ruby-2.0.0-p195/gems $ chmod o+x /home/evenchange4/.rvm/gems/ruby-2.0.0-p195 $ chmod o+x /home/evenchange4/.rvm/gems $ chmod o+x /home/evenchange4/.rvm $ chmod o+x /home/evenchange4 $ sudo apt-get install libcurl4-openssl-dev $ rvmsudo passenger-install-nginx-module
|
- 設定 Nginx:
$ sudo vi /opt/nginx/conf/nginx.conf
,Add a server block inside http
block
1 2 3 4 5 6 7 8 9 10
| ... server { listen 80; server_name 127.0.0.1; root /home/evenchange4/test123/public; passenger_enabled on; rails_env development; } ...
|
1 2 3 4
| $ wget -O init-deb.sh http: $ sudo mv init-deb.sh /etc/init.d/nginx $ chmod +x /etc/init.d/nginx $ sudo /usr/sbin/update-rc.d -f nginx defaults
|
1
| $ sudo /etc/init.d/nginx start/stop/restart
|
1
| $ passenger-memory-stats
|
三、環境設定 mysql
1
| $ sudo apt-get install mysql-server mysql-common mysql-client libmysqlclient-dev
|
1 2 3 4 5
| $ mysql.server start/stop $ sudo service mysql start
|
1 2
| mysql> CREATE DATABASE ass_development; mysql> show databases;
|
檢查 mysql 是否支援中文 utf8
- 更改 /etc/mysql/my.cnf 詳細教學
- 砍掉 db
匯入 (必須需要有database name)
1
| $ mysql -uroot -pmcc2012 NTUMB_development < code/2013-04-24_10_45.NTUMB_development
|
1 2 3 4 5
| $ rake db:drop RAILS_ENV=production $ rake db:create RAILS_ENV=production $ rake db:migrate RAILS_ENV=production $ rake db:seed RAILS_ENV=production $ sudo /etc/init.d/nginx restart
|
- 因為 capistrano 非常缺乏文檔資料,加上不太支援 Rails4 ,所以挑選 mina 來幫助部署。
- 透過 mina 的輔助,可以將 source code(須先 commit 到 github上) 透過 ssh 連線自動部署到 hosting server 上。並且可以直接寫
rake
script 的指令來隨心所欲的執行指令。
- 自行到 server 編輯
database.yml
1 2 3
| $ git commit -a -m "deploy" $ git push $ mina deploy
|
五、資安處理
Reference
- rvmsudo passenger-install-nginx-module
- YamlDb