1. 程式人生 > 其它 >部署之在阿里雲 ubuntu 主機上安裝 Ruby on Rails 環境 (六)

部署之在阿里雲 ubuntu 主機上安裝 Ruby on Rails 環境 (六)

技術標籤:文章分享node.jshtml5htmlvue.js

原文連結:https://www.qiuzhi99.com/articles/fu-wu-qi-bu-shu/5.html

1. 為何選擇阿里雲

假如你開發了一個網站,或者想開發一個網站,開發完之後,你得讓人訪問吧。別人能訪問,就得把你的網站放到英特網上。那就得把程式碼和資料都放到英特網上,這樣別人才能訪問。存放這些程式碼或資料的就是叫主機或空間。它們有什麼區別呢。主機包括雲主機,vps等。具體是啥,我們先不管,反正你先想成是一臺臺計算機就好了,而且有ip,通過ip,上網能訪問到。空間就是在主機上切出一部分給你使用,這種限制多多,例如容量大小的限制,安裝環境的限制等。知名的雲空間提供商你可能聽過的有heroku

sinaapp等 。heroku我使用過,在國內訪問慢,而且收費,使用這種類似的東西很受heroku原始安裝環境的限制,例如你要新增一些服務的話,不能自己手動安裝,只能用heroku提供的服務,而且有些還是收費的,這就缺少自由和靈活了。以我使用過的經驗來說,這種東西我是不會考慮的。接著考慮一下vps,國內好像沒聽過太出名的vps產商,國外的就有,不過選擇主機我是優先選擇國內的,第一速度快,第二,國外的,萬一哪天被隔絕了(你懂的),那就得哭死。相對而言,vps還比較貴。所以不考慮。那就選擇雲主機。國內的雲主機也有蠻多家產商的。例如阿里騰訊uclond青雲。我只用過阿里,第一它是大公司出品,第二在國內。其他的我沒用過,就不評論了。阿里的價格我不說貴還是便宜,但在我的接受範圍內。不過用阿里的主機,你的網站得備案。其實,現在備案也是蠻簡單的,我說的是個人備案,你只要填寫資料,到時候拍些照片,然後再寄些資料,快的話,大約一個星期就搞定了。這點不用擔心。

2. 安裝和注意事項

阿里雲有很多linux發行版本,我選擇的是ubuntu 14.04。在這裡我會指出一些安裝方法,或者提一些注意事項。並不會從頭到尾安裝一次,具體方法不懂的google就好了。大部分安裝就是用apt-get install,相信只要懂ubuntu的人都會知道。如果不知道具體的安裝,類似搜尋google ubuntu install mysql就好了。相似google到的答案比別人給的更好。

既然是安裝ruby on rails部署環境,我們來列出要安裝的內容。

  • web伺服器nginx
  • 資料庫mysql或postgresql
  • redis
  • imagemagick
  • nodejs
  • git

具體安裝啥就取決於你自己。至於ruby的版本工具我選擇的是rbenv,生產環境一般都用這個,開發環境才用rvm。web應用容器我選擇的是unicorn或puma。

我們來開始安裝了。

假如你已經在阿里雲上建立好主機,並設定了root的賬號和密碼。假設你能用ssh [email protected]登入了。

首先,按照傳統的習慣或者一種安全的規定來說,你總不能老是用root賬號來操作。你要給自己建立一個賬號。以後就要這個賬號來操作。這樣才安全點。

2.1 新增操作賬號

你可以用google搜一下如何在linux下新增使用者,一般是用useradd這個指令。

例如

useradd hfpp2012
# 設定密碼
passwd hfpp2012

要給它新增加目錄的。如果沒有,就手動加好了。

mkdir /home/hfpp2012
chown -R hfpp2012:hfpp2012 /home/hfpp2012/

或許有更好的方法。具體就不深究了。

再驗證一下那個賬號是否被新增到系統,可以檢視/etc/passwd檔案

要確保它能登入,最後的shell,要是/bin/bash,不然的話是登入不了的。

新增的使用者需要用sudo指令,也就是具有root許可權。

$ sudo visudo
# 把下面這行
%sudo   ALL=(ALL:ALL) ALL
# 改成
%sudo   ALL=(ALL) NOPASSWD:ALL

# 新增到sudo組
usermod -a -G sudo hfpp2012

具體的自己google

2.2 安裝nginx

首先更新一下軟體源

sudo apt-get update

在ubuntu下安裝nginx一條命令就夠了

sudo apt-get install nginx

在ubuntu源中裝到的nginx版本可能並不高,如果你需要用websocket等功能,可能需要1.4以上,這個時候可以選擇編譯安裝。

如果要編譯安裝,可以看這篇文章nginx的安裝

2.3 安裝git

版本控制工具git,下載程式碼用,必須安裝

也只是一條命令就夠了

sudo apt-get install git
2.4 安裝redis

redis可以作為cache用,也可以用於訊息佇列。總之,好處多多。

由於ubuntu源中的redis版本不夠新,我選擇的是編譯安裝。如果要手動安裝也只需要一條命令。

sudo apt-get install redis-server

不過可能裝到的是2.8版本的。我需要新來redis的穩定版3.0及以上的。從官網下載最新的安裝包。其中複製那個下載地址就好了。然後到阿里雲主機上。用wget url,url就是你複製的下載網址。這樣就下載到阿里雲了。

# 解壓
tar xvf redis-3.0.3.tar.gz
cd redis-3.0.3
# 編譯
make
# 安裝,需要加sudo,因為要複製檔案到系統目錄中
sudo make install

安裝完是沒有給你自動啟動redis服務的,這點跟apt-get安裝不太一樣。你需要處理一下。

cd utils/
# 安裝和複製指令碼
sudo ./install_server.sh

啟動和停止服務用下面的指令。

sudo service redis_6379 start
sudo service redis_6379 stop

你自己可以ps -ef | grep redis看一下是否啟動了服務。

如果你要設定開機即啟動的話就這樣

sudo update-rc.d redis_6379 defaults

還有重要的一個安全問題。

預設安裝完畢後,redis是不用密碼就能使用的。也就是說,無論是本地(阿里雲主機),或者遠端,你都可以訪問redis。這樣很不安全。

解決方法當然可以是設一個密碼啊。用CONFIG set requirepass這個指令或者AUTH指令就好了。當然另一個更簡單的方法。只要是本地訪問不要密碼,因為是信任的,如果是遠端就不能訪問。那也很簡單。開啟/etc/redis/redis.conf檔案。

設定這一行就好了。

bind 127.0.0.1

讓它繫結本機。

作為快取伺服器,如果不加以限制記憶體的話,就很有可能出現將整臺伺服器記憶體都耗光的情況,可以在redis的配置檔案裡面設定。

# 限定最多使用1.5GB記憶體
maxmemory 1536mb
2.5 安裝nodejs

使用ruby on rails都知道要安裝這個的啦。編譯coffeescript也是靠它。

也就一條命令

sudo apt-get install nodejs
2.6 安裝mysql

也就是一條命令,中間需要你設定使用者名稱和密碼。

sudo apt-get install mysql-server

ruby的mysql2 gem在編譯時需要安裝上相應的mysql標頭檔案開發包。也就是類似lib dev這樣的包。

有個技巧是這樣

sudo apt-cache search mysql | grep dev

找到類似libmysql+±dev這樣的來安裝就好,如果實在不知道,在安裝ruby mysql2 gem時找到報錯那一行往google上一貼,一般就能找到答案了。因為這種問題很常見。

我們要掌握的是方法,是規律,而不是內容,內容是記不住的,是無窮盡,規律或簡單的內容卻能記住。

2.7 安裝imagemagick

圖形處理,例如上傳圖片的裁減,驗證碼等都需要這個軟體。

sudo apt-get install imagemagick
2.8 安裝postgresql

作為資料庫,postgresql是我比較喜歡的,它支援很多類nosql的特性,例如hstore擴充套件,還支援較為強大的全文檢索,還有window function等等。

sudo apt-get install postgresql libpq-dev

需要設定一下postgres的密碼,以後就能用這賬號postgres和密碼訪問資料庫了。

sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'postgres';
2.9 生成ssh key

這個是非對稱加密的key,用於加密連線或部署等。

ssh-keygen -t rsa -C "[email protected]"

這個指令會生成兩個檔案 ,放在家目錄的.ssh目錄下。一個叫id_rsa.pub,另一個叫id_rsa。

部署github、coding等都需要用它的。

id_rsa.pub是公鑰,id_rsa是私鑰,簡單地說,它們是對應的,是成對出現的,用公鑰加密的只能用私鑰解密,用私鑰加密的只有用公鑰解密。公鑰是可以給他人的,私鑰是要自己保管的,不能洩露,就簡單說下,具體地,以後會有單獨的文章來介紹非對稱加密。

還有一個問題是這樣的。每次用ssh進入阿里雲主機需要輸入密碼,好麻煩。其實可以這樣的。

.ssh下有個檔案叫authorized_keys,只要複製你本機上的id_rsa.pub的內容作為一行新增到authorized_keys中就可以了。

以後不用再輸入密碼了。

2.10 安裝rbenv和ruby

關於rbenv的安裝可以先用google搜一下,進入其官方的github看readme文件更為詳細些。

# 安裝一些必要的庫
sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

安裝ruby-build,它提供install指令。

git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

選擇你要安裝的版本,安裝ruby。

rbenv install 2.3.0
rbenv global 2.3.0

這樣只要能使用ruby -v檢視到你期待的版本就算成功了。整個安裝過程就結束了。

3. 總結

整個安裝過程,因個人的環境或能力所限,會遇到各種各樣的問題,只要耐心地查google,一般都能解決的,要不斷地總結。要確定你要裝什麼就去裝就好了,不懂的,不明白的就google。遇到一些問題也別急,不要放棄,總有辦法解決的。安裝和運維問題最需要耐心的,越急事兒越做不好,也不能亂安裝,不然出現的問題更多,儘量搜尋到最新的文章,最好的辦法或最正規的方法來安裝。