摘要:設置密碼將用戶加入群組退出登錄,使用新用戶登錄。所幸,提供直連,在配置里面只限定本地連接基本上還是可以保證數(shù)據(jù)安全的,所以目前就采用直連的方式。決定轉戰(zhàn)其他的服務器。
本文中我將描述在 DigitalOcean 上配置 Rails 生產(chǎn)環(huán)境的過程,希望對有相同需求的人一定的幫助
0x01. 創(chuàng)建服務器如果你剛剛購買了 DigitalOcean 的服務,先添加一臺機器,小應用的話 $5/Y 的即可,操作系統(tǒng)選擇Ubuntu 14.04,基本純前端操作,這里就不在贅述。
0x02. 添加用戶開始我們會使用 root 賬號登錄服務器,但是出于安全考慮,一般我們的 web 應用不能使用 root 用戶運行,所以我們先需要添加一個專門的部署用戶。名字隨便起,這里就是 rails-deploy。
adduser rails-deploy
設置密碼
passwd rails-deploy
將用戶加入 sudo 群組
adduser rails-deploy sudo
退出 ssh 登錄,使用新用戶登錄。
0x03. 安裝 Ruby為了安裝和本地開發(fā)環(huán)境相同的 Ruby 這里選擇從源碼編譯安裝,先安裝一些必要的庫:
sudo apt-get install build-essential libssl-dev libyaml-dev libreadline-dev openssl curl git-core zlib1g-dev bison libxml2-dev libxslt1-dev libcurl4-openssl-dev nodejs
然后創(chuàng)建目錄并下載ruby源碼:
mkdir ~/ruby cd ~/ruby wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz tar -xzf ruby-2.1.2.tar.gz cd ruby-2.1.2
開始編譯
./configure make sudo make install
查看安裝結果
ruby -v $ ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
最后刪除源碼
rm -rf ~/ruby0x04. 安裝 Passenger 和 Nginx
Passenger 是一個比較好的 Rails 服務器,我們選擇用它來運行 rails 并使用 Nginx 做反向代理。
我們選擇使用 apt 來安裝 Passenger,先安裝 PGP key
bashsudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
創(chuàng)建 apt 源文件
sudo vim /etc/apt/sources.list.d/passenger.list
加入下面這行,并保存退出
deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main
修改此文件所屬用戶和權限
sudo chown root: /etc/apt/sources.list.d/passenger.list sudo chmod 600 /etc/apt/sources.list.d/passenger.list
更新 apt 緩存
sudo apt-get update
安裝 Nginx
sudo apt-get install nginx-extras passenger
此操作將有可能會覆蓋我們新安裝的 ruby ,可做如下操作修復:
sudo rm /usr/bin/ruby sudo ln -s /usr/local/bin/ruby /usr/bin/ruby0x05. 設置 Web 服務器
打開 nginx 配置文件:
sudo vim /etc/nginx/nginx.conf
在 http 塊找到下面兩行
# passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; # passenger_ruby /usr/bin/ruby;
取消這兩行的注釋并修改第二行路徑,如下
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; passenger_ruby /usr/local/bin/ruby;0x06. Clone 代碼
安裝 Rails
bashsudo gem install --no-rdoc --no-ri rails
clone 項目代碼
cd ~ git clone https://github.com/YOURNAME/REPO.git current cd project/ bundle install
安裝數(shù)據(jù)庫(根據(jù)你的項目需求)
bashsudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list sudo apt-get update sudo apt-get install -y mongodb-org0x07. 配置數(shù)據(jù)庫
從安全的角度考慮,應該是為每個web 應用創(chuàng)建一個用戶并且給予最小權限的,但是在這個過程中遇到的mongoid 的bug:
SegmentFault
最終沒有成功,希望有經(jīng)驗的朋友可以給予幫助。
所幸,momgo提供直連,在配置里面只限定本地連接基本上還是可以保證數(shù)據(jù)安全的,所以目前就采用直連的方式。
0x07. 啟動服務器rake assets:precompile # 編譯靜態(tài)文件 # passenger start -e production # 上面這個命令可選執(zhí)行,主要是為了測試是否配置成功0x08. 修改 Nginx 配置
刪除原有的默認網(wǎng)站配置:
sudo rm /etc/nginx/sites-enabled/default sudo vim /etc/nginx/sites-enabled/example.com.conf
加入如下代碼:
server { listen 80 default; server_name example.com; root /home/rails-deploy/project; passenger_enabled on; rails_env production; }
然后重啟nginx
sudo service nginx restart
寫在最后:按照道理來講,這樣的配置應該已經(jīng)好了,開始很奇怪我的80端口訪問報錯 403,然后查了nginx 的日志發(fā)現(xiàn)報了下面的錯誤:
[error] 2269#0: *1 directory index of "/home/rails-deploy/project/" is forbidden, client: xxx.xxx.xxx.xxx, server: example.cn, request: "GET / HTTP/1.1", host: "example.cn"
在這里拖了整整兩天之后,我看到了這里的一段討論,然后就默默的打算放棄了。決定轉戰(zhàn)其他的ruby 服務器。
這里的問題貌似是passenger的問題,之前在 StackOverflow上看到這個問題但沒解決。
順便說一下就是我遇到的情況和上面Ruby china 上的那位一樣,在項目目錄下面放個index.html就可以訪問了,也就是說項目目錄的權限是沒有問題的。
==== update ====
此刻我內(nèi)心無比激動啊,這個問題終于解決了,原來是網(wǎng)站跟目錄配置的問題應該root到項目的public目錄下面。
不過又遇到了另一個問題,他說我的 gem 沒安裝,需要運行bundle install,可能是安裝過程中權限問題,用sudo bundle install 就好了 : http://stackoverflow.com/questions/22663498/rails-phusion-passenger-er...
總之算是跑起來了,謝天謝地??!
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/39146.html
摘要:是一個能快速搭建環(huán)境的工具,它能快速的將和部署到你的服務器中,是部署環(huán)境就如同環(huán)境那樣簡單快速,讓人愉悅。在上跑一般只有在生產(chǎn)環(huán)境下才會使用,因而默認下就是環(huán)境設置為生產(chǎn)環(huán)境,而初始化時默認沒有對生產(chǎn)環(huán)境進行密鑰配置。 passenger passenger是一個能快速搭建web環(huán)境的工具,它能快速的將nginx和passenger部署到你的服務器中,是部署ruby環(huán)境就如同php環(huán)...
摘要:最近總是在配置阿里云的服務器,遇到不少問題,現(xiàn)小結一下,供大家參考阿里云的一鍵安裝全環(huán)境下載一鍵安裝全環(huán)境壓縮包上傳至服務器,解壓執(zhí)行腳本,具體步驟詳見這里任意選擇一種方法執(zhí)行腳本方法一方法二安裝與指定的版本安裝與指定的版本注意安 最近總是在配置阿里云的服務器,遇到不少問題,現(xiàn)小結一下,供大家參考~~ 1、阿里云的一鍵安裝web全環(huán)境 下載一鍵安裝web全環(huán)境 sh.zip 壓縮...
摘要:原文鏈接隨著前端越來越火,越來越多的人推崇前后端分離,后端只提供,前端只負責消費。這樣我們就能更加專注自己的事情了,比如前端可以使用任何想要的工具等等,后端也不用因為集成前端的代碼而苦逼加班了。 原文鏈接 隨著前端越來越火,越來越多的人推崇前后端分離,后端只提供API,前端只負責消費API。這樣我們就能更加專注自己的事情了,比如前端可以使用任何想要的工具(Webpack、Gulp等等)...
閱讀 3340·2021-11-18 10:02
閱讀 2089·2021-09-22 10:54
閱讀 3040·2019-08-30 15:43
閱讀 2649·2019-08-30 13:22
閱讀 1632·2019-08-29 13:57
閱讀 1118·2019-08-29 13:27
閱讀 806·2019-08-26 14:05
閱讀 2597·2019-08-26 13:30