進入阿里云的服務器
$ ssh root@120.77.45.76
root@120.77.45.76's password: ******
如果你之前ssh過這個服務器,然而服務器重裝后,再次ssh,會出現(xiàn)這個錯誤:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
需要用下列的命令來解決這個問題
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
之后撤銷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
修改保存,重新啟動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的訪問,如果沒有配置的話,以上的是不能訪問的
安裝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 可以參考這篇文章
接下來,我們還要開啟 PostgreSQL 允許通過 TCP/IP 進行連接的特性。這主要通過 postgresql.conf 配置文件控制,該文件和 pg_hba.conf 處于同一目錄下。
sudo vi /etc/postgresql/9.5/main/postgresql.conf
修改保存后,重啟pg數(shù)據(jù)庫
sudo service postgresql restart
然后連接
配置rails在后臺運行
配置config/puma.rb
daemonize true