Ruby&Rails---Rails5在ubuntu16.04配置生產(chǎn)環(huán)境

進入阿里云的服務器
$ ssh root@120.77.45.76
root@120.77.45.76's password: ******

如果你之前ssh過這個服務器,然而服務器重裝后,再次ssh,會出現(xiàn)這個錯誤:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!


圖片.png

需要用下列的命令來解決這個問題

ssh-keygen -R 120.77.45.76
添加用戶

因為用root操作還是不安全,我們需要創(chuàng)建一個用戶
創(chuàng)建用戶并且輸入密碼

root@aliyun-ubuntu-sever1:~# useradd -r -m -s /bin/bash hpd
root@aliyun-ubuntu-sever1:~# passwd hpd

要確保給hpd配置sudo的權(quán)限

root@aliyun-ubuntu-sever1:/home# chmod +w /etc/sudoers
root@aliyun-ubuntu-sever1:/home# vim /etc/sudoers
圖片.png

之后撤銷sudoers文件寫權(quán)限

chmod u-w /etc/sudoers

然后我們ctrl+D退出server,在本地重新以hpd的用戶登錄

安裝rbenv

讓我們安裝rbenv,我們將使用它來安裝和管理我們的Ruby安裝。 首先,更新apt-get:

sudo apt-get update

使用apt-get安裝rbenv和Ruby依賴:

sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev

現(xiàn)在我們準備安裝rbenv。最簡單的方法是運行這些命令,作為將使用Ruby的用戶:

cd
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile

注:在Ubuntu桌面,更換所有出現(xiàn).bash_profile與上面的代碼塊.bashrc 。 這將rbenv安裝到您的主目錄,并設(shè)置相應的環(huán)境變量,允許rbenv到活動版本的Ruby。 現(xiàn)在我們準備安裝Ruby。

安裝Ruby

我這邊是使用2.3.0的ruby版本
rbenv install -v 2.3.0
rbenv global 2.3.0

在global子命令設(shè)置的Ruby的默認版本。如果要安裝和使用其他版本,只需運行帶有不同版本號的rbenv命令。 使用此命令驗證Ruby是否已正確安裝:

ruby -v

很可能你不會希望Rubygems為您安裝的每個gem生成本地文檔,因為這個過程可能很長。要禁用此功能,請運行以下命令:

echo "gem: --no-document" > ~/.gemrc

您還將要安裝bundler gem,以管理您的應用程序依賴關(guān)系:

gem install bundler

現(xiàn)在Ruby已經(jīng)安裝,讓我們安裝Rails。

安裝Rails

相同的用戶,安裝Rails使用此命令(您可以指定與特定版本-v選項):我這邊是使用5.1.4的版本

gem install rails -v 5.1.4

當你安裝Ruby或提供命令的Gem的新版本,您應該運行rehash子命令。 這將安裝shims出于眾所周知的rbenv所有的Ruby可執(zhí)行文件,這將允許您使用可執(zhí)行文件:

rbenv rehash

使用此命令打印其版本,驗證Rails已正確安裝:

rails -v

如果安裝正確,您將看到安裝的Rails版本。

安裝Javascript運行時

一些Rails特性(例如資產(chǎn)管道)取決于Javascript運行時。我們將安裝Node.js以提供此功能。 添加Node.js PPA到apt-get:

sudo add-apt-repository ppa:chris-lea/node.js

注意:如果出現(xiàn)Ubuntu的add-apt-repository: command not found,否則略過下列這個

sudo apt-get install software-properties-common python-software-properties

然后更新apt-get并安裝Node.js包:

sudo apt-get update
sudo apt-get install nodejs

恭喜! Ruby on Rails現(xiàn)在安裝在您的系統(tǒng)上。

安裝PostgreSQL

首先,更新apt-get:

sudo apt-get update

然后安裝PostgreSQL及其開發(fā)庫:

sudo apt-get install postgresql postgresql-contrib libpq-dev

PostgreSQL現(xiàn)在已經(jīng)安裝,但你應該創(chuàng)建一個新的數(shù)據(jù)庫用戶,你的Rails應用程序?qū)⑹褂谩?br> 使用此命令創(chuàng)建一個PostgreSQL超級用戶用戶(用您自己的用戶名替換高亮顯示的單詞):

sudo -u postgres createuser -s pguser

如果要為數(shù)據(jù)庫用戶設(shè)置密碼,請使用以下命令輸入PostgreSQL控制臺:

sudo -u postgres psql

PostgreSQL的控制臺被顯示postgres=#提示符。 在PostgreSQL提示符處,輸入此命令以設(shè)置您創(chuàng)建的數(shù)據(jù)庫用戶的密碼:

\password pguser

在提示符處輸入所需的密碼,然后進行確認。

現(xiàn)在您可以通過輸入以下命令退出PostgreSQL控制臺:

\q
把項目傳到服務器

我是想把項目傳到github上,然后在服務器上用git clone把項目拷貝下來

配置數(shù)據(jù)庫連接

請確保你在你的應用程序的根目錄( cd ~/ appname )。

在您喜歡的文本編輯器中打開應用程序的數(shù)據(jù)庫配置文件。 我們將使用vi:

vi config/database.yml

更新production部分,所以它看起來是這樣的:

production:
  <<: *default
  host: localhost
  adapter: postgresql
  encoding: utf8
  database: appname_production
  pool: 5
  username: <%= ENV['APPNAME_DATABASE_USER'] %>
  password: <%= ENV['APPNAME_DATABASE_PASSWORD'] %>

注意,數(shù)據(jù)庫的用戶名和密碼,被配置為通過環(huán)境變量,被讀取APPNAME _DATABASE_USER和APPNAME _DATABASE_PASSWORD 。 將生產(chǎn)密碼和秘密保留在應用程序代碼庫之外是最佳做法,因為如果您使用的是分布式版本控制系統(tǒng)(如Git),它們可以輕松暴露出來。 我們將討論如何使用環(huán)境變量設(shè)置數(shù)據(jù)庫認證。

保存并退出

安裝rbenv-vars插件

在部署生產(chǎn)Rails應用程序之前,應該使用環(huán)境變量設(shè)置生產(chǎn)密鑰和數(shù)據(jù)庫密碼。 一個簡單的方法來管理環(huán)境變量,我們可以在運行時使用密碼和秘密加載到我們的應用程序,是使用rbenv -瓦爾插件。

要安裝rbenv -瓦爾插件,只需切換到.rbenv/plugins目錄,并從GitHub克隆。 例如,如果rbenv安裝在您的主目錄中,請運行以下命令:

cd ~/.rbenv/plugins
git clone https://github.com/sstephenson/rbenv-vars.git

設(shè)置環(huán)境變量

現(xiàn)在安裝了rbenv-vars插件,讓我們設(shè)置所需的環(huán)境變量。

首先,生成秘密密鑰,將用于驗證簽名的cookie的完整性:

cd ~/appname
rake secret

復制生成的密鑰,然后打開.rbenv-vars用你喜歡的編輯器文件。 我們將使用vi:

vi .rbenv-vars

您在此設(shè)置的任何環(huán)境變量都可以由Rails應用程序讀取。

首先,設(shè)置SECRET_KEY_BASE這樣的變量(替換您剛才生成和復制的秘密高亮文本):

SECRET_KEY_BASE=your_generated_secret

接下來,設(shè)置APPNAME _DATABASE_USER這樣的變量(與你的應用程序名稱替換突出了“APPNAME”和“應用程序名稱”與您的生產(chǎn)數(shù)據(jù)庫的用戶名):

APPNAME_DATABASE_USER=appname

最后,設(shè)置APPNAME _DATABASE_PASSWORD這樣的變量(與你的應用程序名稱替換突出了“APPNAME”和“prod_db_pass”與您的生產(chǎn)數(shù)據(jù)庫的用戶密碼):

APPNAME_DATABASE_PASSWORD=prod_db_pass

保存并退出。

您可以通過運行以下命令,使用rbenv-vars插件查看為應用程序設(shè)置的環(huán)境變量:

rbenv vars

如果你改變你的秘密,數(shù)據(jù)庫密碼,更新.rbenv-vars文件。 請小心保持此文件為私有,并且不要包含任何公共代碼存儲庫。

創(chuàng)建生產(chǎn)數(shù)據(jù)庫

現(xiàn)在您的應用程序配置為與您的PostgreSQL數(shù)據(jù)庫通信,讓我們創(chuàng)建生產(chǎn)數(shù)據(jù)庫:

RAILS_ENV=production rake db:create

注意:如果出現(xiàn)PG::ConnectionBad: FATAL: Peer authentication failed for user "user1",需要修改下配置:
修改 /etc/postgresql/9.5/main/pg_hba.conf

sudo vim /etc/postgresql/9.5/main/pg_hba.conf
圖片.png

修改保存,重新啟動pg

sudo service postgresql restart

后繼續(xù)執(zhí)行上面的創(chuàng)建生產(chǎn)數(shù)據(jù)庫命令

現(xiàn)在運行此命令來更新生產(chǎn)數(shù)據(jù)庫:

RAILS_ENV=production rake db:migrate

您還應預先編譯資產(chǎn):

RAILS_ENV=production rake assets:precompile

注意:如果出現(xiàn)Yarn executable was not detected in the system.

配置config/environments/prouction.rb
因為默認開發(fā)環(huán)境資源編譯是關(guān)閉,所以要開啟

  config.assets.compile = true

要測試應用程序是否工作,可以運行生產(chǎn)環(huán)境,并將其綁定到服務器的公共IP地址(替換服務器的公共IP地址):

RAILS_ENV=production rails server --binding=120.77.45.76

配置安全組

阿里云上有個安全組設(shè)置,可以控制ip的訪問,如果沒有配置的話,以上的是不能訪問的


圖片.png
安裝redis

step1:下載

wget http://download.redis.io/releases/redis-4.0.8.tar.gz

step2:解壓

tar zxvf redis-4.0.8.tar.gz

step3:復制,放到usr/local/redis目錄下(先創(chuàng)建redis目錄)

sudo mv redis-4.0.8/* /usr/local/redis/

step4:進入redis目錄

cd /usr/local/redis/

step5:生成

sudo make

step6:測試,這段運行時間會較長

sudo make test

注意:如果make test不過,運行

sudo apt-get install tcl

step7:安裝,將redis的命令安裝到/usr/bin/目錄

sudo make install

step8:配置文件,移動到/etc/目錄下
配置文件目錄為/usr/local/redis/redis.conf

sudo cp /usr/local/redis/redis.conf /etc/redis/

setp9:修改/etc/redis/中的配置文件
是否以守護進程運行
如果以守護進程運行,則不會在命令行阻塞,類似于服務
如果以非守護進程運行,則當前終端被阻塞
設(shè)置為yes表示守護進程,設(shè)置為no表示非守護進程
推薦設(shè)置為yes

daemonize yes
配置 navicat premium 能連接到服務器的pg數(shù)據(jù)庫

https://www.qcloud.com/community/article/499397 可以參考這篇文章

圖片.png

接下來,我們還要開啟 PostgreSQL 允許通過 TCP/IP 進行連接的特性。這主要通過 postgresql.conf 配置文件控制,該文件和 pg_hba.conf 處于同一目錄下。

sudo vi /etc/postgresql/9.5/main/postgresql.conf
圖片.png

修改保存后,重啟pg數(shù)據(jù)庫

sudo service postgresql restart

然后連接


圖片.png

配置rails在后臺運行

配置config/puma.rb

daemonize true
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,071評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,409評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,360評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,895評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,123評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,643評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,559評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,742評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 43,981評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,354評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,707評論 2 370