關於如何在阿里雲ECS(Ubuntu16.04)上部署RubyonRails的一些心得,希望分享給更多的rubyist知道;
本文討論的是如何在阿里雲上部署rails生產環境;
首先ECS創建的時候阿里雲會一個root賬號和一個管理員密碼,ssh root@ip_address(公網) 配以密碼不是特別方便,建議在本機電腦上創建一對公鑰私鑰,並且把公鑰上傳到阿里雲的ESC服務器,可以參考我的openssh討論。
在可以實現 ssh server-name
以後,我們會發現現在登陸的是root用戶,root用戶擁有的權限太高,不小心的操作就會對linux系統造成不可逆的破壞,所以一般的建議是新建一個新的用戶,我個人也強烈建議這麼做,除非對linux系統命令非常熟悉知道自己的幹什麼。
創建新的linux用戶
在linux(Ubuntu16.04)系統中, 可以通過下面的命令來創建:
$ adduser rails
在彈出的對話裏面只要提供密碼和密碼驗證,後面的問題都直接回車就行;
$ usermod -aG sudo rails
這個命令是添加新的用戶到sudo這個用戶組。在linux系統中,不可避免的要使用一些只有系統管理員才能使用的命令,sudo前綴可以讓當前用戶暫時獲取root的資格並且以root的身份去運行一些命令,比如services,但是隻有sudo組裏的用戶才能使用這個sudo命令。
$ cat /etc/passwd
可以用來查看本機當前所用的用戶, 新用戶添加以後,/root/rails/
就自動創建,就是當前用戶的默認路徑。
現在我們可以切換到我們新建的用戶了
$ su - rails
可以通過相當的方法上傳過id_rsa.pub到 /home/rails/.ssh,以後都可以通過ssh rails@ip_address來登陸
安裝必要的軟件
現在我們的登陸賬戶是rails了, 現在可以安裝git上傳下載代碼,然後安裝rbenv,rbenv,rails,nodejs。
安裝git
$ sudo apt-get install git
使用git命令以前要先設置全局用戶
$ git config --global user.name = "YOUR NAME"
$ git config --global user.email = "[email protected]"
或者:
$ vim ~/.gitconfig
[color]
ui = true
[user]
name = YOUR NAME
email = [email protected]
[push]
default = current
[pull]
default = current
如果不幸的你和我一樣github激活了多重驗證,你需要在你的服務器端生成一對公鑰私鑰,然後把公鑰添加到你的github賬戶可以參考這個github幫助。
別忘了添加一下這行到你的 ~/.ssh/config文件中;
Host github.com
IdentityFile ~/.ssh/github_rsa # 用你自己的私鑰
這樣你訪問git clone [email protected] ... 的時候就能自動使用你剛剛生成的私鑰作爲ssh連接了。
安裝rbenv作爲ruby的版本管理
$ sudo apt-get update
$ sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
這麼多必要的包誰也記不住,網上的帖子很多,總歸是前任總結的經驗教訓,發帖的目的不就是廣爲傳播這些記不住的冷知識嘛,好了可以正式下載rbenv了, 我們直接從它的github下載源碼,github上也有他的安裝說明,我就從簡說明了
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
添加路徑是爲了全局的使用rbenv給我們提供的一些ruby和gem的使用工具, 具體的安裝可以參考github。我以前一直使用chruby和ruby-install來作爲輕量級的ruby版本管理,事實證明rbenv提供的路徑工具能非常方便幫助我們通過systemD腳本來運行railsAPP,所以我建議大家直接使
用rbenv,如果有人爲爲什麼不用rvm,都是累啊,太龐大了,相當於僱100人管理只有幾人的公司,我們的小機受不了啊,bug多什麼的也就是聽說,我也就用了一年就換chruby了。
安裝ruby
rbenv安裝好了以後,我們可以通過他的插件ruby-build來安裝ruby
$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
這樣我們就能直接安裝使用rbenv install命令了。
$ rbenv install 2.5.0
你也可以安裝自己需要的版本
$ rbenv global 2.5.0
設置全局ruby版本,然後就是安裝rails和nodejs,安裝nodejs是因爲rails的assets管理需要用到。
$ gem install rails --no-ri --no-rdoc
$ sudo apt-get install nodejs
$ rails -v
$ node -v
檢測安裝的rails版本和nodejs版本;
下載rails APP代碼
不知不覺寫了這麼多了,我最恨最怕就是tl;dr(too long, don't read); 所以後一半的內容下回再發表吧,¯_(ツ)_/¯