部署之在阿里雲 ubuntu 主機上安裝 Ruby on Rails 環境 (六)
技術標籤:文章分享node.jshtml5htmlvue.js
原文連結:https://www.qiuzhi99.com/articles/fu-wu-qi-bu-shu/5.html
1. 為何選擇阿里雲
假如你開發了一個網站,或者想開發一個網站,開發完之後,你得讓人訪問吧。別人能訪問,就得把你的網站放到英特網上。那就得把程式碼和資料都放到英特網上,這樣別人才能訪問。存放這些程式碼或資料的就是叫主機或空間。它們有什麼區別呢。主機包括雲主機,vps等。具體是啥,我們先不管,反正你先想成是一臺臺計算機就好了,而且有ip,通過ip,上網能訪問到。空間就是在主機上切出一部分給你使用,這種限制多多,例如容量大小的限制,安裝環境的限制等。知名的雲空間提供商你可能聽過的有heroku
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。遇到一些問題也別急,不要放棄,總有辦法解決的。安裝和運維問題最需要耐心的,越急事兒越做不好,也不能亂安裝,不然出現的問題更多,儘量搜尋到最新的文章,最好的辦法或最正規的方法來安裝。