NO.1購(gòu)買(mǎi)域名并做域名解析
NO.2購(gòu)買(mǎi)主機(jī)
NO.3測(cè)試主機(jī)聯(lián)通
ping x.x.x.x
NO.4登錄到服務(wù)器
ssh root@x.x.x.x
輸入服務(wù)器提供商給你的密碼
NO.5 新建一個(gè)用戶(hù)來(lái)部署
adduser youngi --ingroup sudo
輸入密碼派歌,然后一直回車(chē)
然后切換到你新建的用戶(hù)su youngi,回到y(tǒng)oungi的主目錄 cd ~,就回到了youngi的主目錄
NO.6 安裝ruby
更新一下系統(tǒng)軟件倉(cāng)庫(kù)列表:
sudo apt-get update
安裝一些后面需要的庫(kù)和軟件:
libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 \
libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common````
安裝rbenv
rbenv 是一個(gè)安裝 ruby 和管理控制多個(gè) ruby 版本的工具
```cd
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL```
安裝ruby
先安裝rvm
sudo apt-get install -y curl
curl -sSL https://git.io/vVHhe | bash
MIRROR=1 curl -sSL https://git.io/vVHhJ | bash
curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
rvm -v
RVM安裝好之后,安裝ruby
rvm install 2.1.2
rvm use 2.1.2 --default,設(shè)置默認(rèn)ruby版本的時(shí)候報(bào)錯(cuò)
`RVM is not a function, selecting rubies with 'rvm use ...' will not work.`
bash --login運(yùn)行這條命令后正常
youngi@iZ94qfjktlwZ:~$ rvm user 2.1.2 --default
Unrecognized option '2.1.2'.
Usage: rvm user [[gemsets] [rubies] [hooks] [pkgs] [wrappers] [all] [--skel]|none]報(bào)錯(cuò)
rvm reinstall ruby-2.1.2 --verify-downloads 2 解決
或者rvm use 1.9.2@newgemset --create --default
####NO.7 安裝rails
gem install rails
安裝rails報(bào)錯(cuò)偷俭,修改源
gem sources -r https://rubygems.org/
gem sources -a https://ruby.taobao.org/
gem install rails
####NO.8 安裝數(shù)據(jù)庫(kù)(pgsql)
客戶(hù)端安裝
`sudo apt-get install postgresql-client`
服務(wù)器安裝
`sudo apt-get install postgresql postgresql-contrib`
獲取Installing PostGIS, procedural languages, client interfaces等插件列表
`apt-cache search postgres`
Ruby PG gem安裝焕议,需要生成Native Extension
首先安裝相應(yīng)package
`sudo apt-get install libpq-dev`
找到pg_config所在位置
`sudo find / -name pg_config`
安裝pg gem
`gem install pg -- --with-pg-config=/usr/bin/pg_config`
到這里位置茄菊,數(shù)據(jù)庫(kù)就安裝完成了
####NO.9創(chuàng)建數(shù)據(jù)庫(kù)
pgsql初次安裝后唱捣,默認(rèn)生成一個(gè)名為postgres的數(shù)據(jù)庫(kù)和一個(gè)名為postgres的數(shù)據(jù)庫(kù)用戶(hù)舶胀。這里需要注意的是概说,同時(shí)還生成了一個(gè)名為postgres的Linux系統(tǒng)用戶(hù)。
1首先切換到postgres的Linux系統(tǒng)用戶(hù)
sudo su - postgres
2使用psql登錄數(shù)據(jù)庫(kù)
psql
3使用\password命令嚣伐,為postgres用戶(hù)設(shè)置一個(gè)密碼糖赔。
4.設(shè)置完密碼后創(chuàng)建一個(gè)用戶(hù)
CREATE USER youngi WITH PASSWORD '123345';(分號(hào)不能少)
5.創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE nineseven OWNER youngi;
6.第四件事是將nineseven數(shù)據(jù)庫(kù)的所有權(quán)限都賦予youngi,否則youngi只能登錄控制臺(tái)轩端,沒(méi)有任何數(shù)據(jù)庫(kù)操作權(quán)限挂捻。
GRANT ALL PRIVILEGES ON DATABASE nineseven to youngi;
####NO.10 安裝imagemagick 6.9+版本(如果項(xiàng)目中用了RuCaptcha圖形驗(yàn)證碼gem包):
sudo apt-get install libmagick++-dev
wget http://www.imagemagick.org/download/ImageMagick.tar.gz
tar xzf ImageMagick.tar.gz
cd ImageMagick-6.9.3-7/
./configure
make
sudo make install
convert -list configure
/usr/local/bin/convert: error while loading shared libraries: libMagickCore-6.Q16.so.2: cannot open shared object file: No such file or directory
sudo ldconfig
convert -list configure
convert -version
####NO.11 安裝nginx
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
讓 apt-get 支持 https
````sudo apt-get install apt-transport-https ca-certificates
sudo add-apt-repository 'deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main'
sudo apt-get update
安裝 nginx 和 passenger,注意這樣安裝,就不用執(zhí)行 passenger-install-nginx-module了刻撒,以前的運(yùn)行這個(gè)命令的時(shí)候經(jīng)常會(huì)出現(xiàn)由于內(nèi)存不夠?qū)е聢?zhí)行失敗骨田,很煩人的。
sudo apt-get install nginx-extras passenger
現(xiàn)在瀏覽器中訪問(wèn) happypeter.org 就可以看到 nginx 的默認(rèn)頁(yè)面了声怔,如果你看不到态贤,證明 nginx 沒(méi)有裝好。
NO.12 安裝 javascript 的運(yùn)行環(huán)境醋火,這個(gè)是跑 rails 應(yīng)用必須的悠汽。
sudo apt-get install nodejs
NO.13 通過(guò) scp 或者更為常見(jiàn)的用 git clone 命令用 github.com 上把代碼 clone 到服務(wù)器上。
拉下來(lái)代碼
scp 源碼 youngi@112.74.39.180:/home/youngi
NO.14 安裝 bundler芥驳,并用它來(lái)把項(xiàng)目需要的依賴(lài)包都安裝好
gem install bundler
rbenv rehash
cd meetup/
bundle
NO.15 然后執(zhí)行遷移文件柿冲,因?yàn)閿?shù)據(jù)庫(kù)前面已經(jīng)建好
bundle exec rake db:migrate RAILS_ENV=production
bundle exec rake db:seed RAILS_ENV=production
NO.16 把 js/css 等 asset 文件做預(yù)處理
bundle exec rake assets:precompile RAILS_ENV=production
NO.17 修改nginx配置
打開(kāi) nginx 的配置文件:
sudo vim /etc/nginx/nginx.conf
找到下面的兩行,取消注釋
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/bin/ruby;
并把第二行改為
如果是用.rbenv安裝的ruby
passenger_ruby /home/peter/.rbenv/shims/ruby;
如果是用rvm安裝的ruby
passenger_ruby /home/youngi/.rvm/wrappers/ruby-2.1.2/ruby;
這里有個(gè)小技巧兆旬,就是在輸入路徑時(shí)假抄。按Ctrl+x+f這三個(gè)按鈕,可以自動(dòng)提示
NO.18 然后要來(lái)為項(xiàng)目丽猬,專(zhuān)門(mén)創(chuàng)建一個(gè)服務(wù)器配置文件宿饱。
cd /etc/nginx/sites-enabled
rm default
sudo vim nineseven.conf
寫(xiě)入如下內(nèi)容:
server {
listen 80 default;
server_name 97gun.com;
passenger_enabled on;
gzip on;
root /home/youngi/97gun/public;
}
修改完配置后,重啟服務(wù)器
sudo service nginx restart
NO.19 訪問(wèn)域名脚祟,發(fā)現(xiàn)報(bào)錯(cuò)
"Incomplete response received from application"
查看nginx報(bào)錯(cuò)信息:
發(fā)現(xiàn)信息如下:"from /home/youngi/.rvm/gems/ruby-2.1.2/gems/railties-4.2.5.2/lib/rails/application.rb:534:in `validate_secret_key_config!"
解決辦法:回到項(xiàng)目目錄谬以,執(zhí)行命令 rake secret
然后將生成的一串字符填入vim config/secrets.yml中的production下的secret_key_base中
NO.20 重啟nginx服務(wù)器
sudo service nginx restart
項(xiàng)目部署完成
NO.21 部署完成后新建task以生成管理員賬號(hào)
在lib下的tasks下面新建文件init.rake
namespace :init do
desc "add super admin"
task :super_admin => [:environment] do
User.create!(
name: "超級(jí)管理員",
mobile: "xxxx",
password: "xxxxx",
is_admin: true)
end
end
然后運(yùn)行rake init:super_admin RAILS_ENV=production
其他技巧:
為了安全起見(jiàn),也可以把數(shù)據(jù)庫(kù)密碼和其他參數(shù)放在環(huán)境變量中
編寫(xiě)環(huán)境變量
vim ~/.rails_env
載入環(huán)境變量
source ~/.rails_env
常用命令:
查看生產(chǎn)環(huán)境信息命名
tail -f log/production.log
nginx重啟命令
sudo service nginx restart
查看nginx報(bào)錯(cuò)命令
sudo tail -f /var/log/nginx/error.log
修改pgsql連接參數(shù)
vim /etc/postgresql/9.3/main/pg_hba.conf