摘要:設(shè)置密碼將用戶加入群組退出登錄,使用新用戶登錄。所幸,提供直連,在配置里面只限定本地連接基本上還是可以保證數(shù)據(jù)安全的,所以目前就采用直連的方式。決定轉(zhuǎn)戰(zhàn)其他的服務(wù)器。
本文中我將描述在 DigitalOcean 上配置 Rails 生產(chǎn)環(huán)境的過(guò)程,希望對(duì)有相同需求的人一定的幫助
0x01. 創(chuàng)建服務(wù)器如果你剛剛購(gòu)買(mǎi)了 DigitalOcean 的服務(wù),先添加一臺(tái)機(jī)器,小應(yīng)用的話 $5/Y 的即可,操作系統(tǒng)選擇Ubuntu 14.04,基本純前端操作,這里就不在贅述。
0x02. 添加用戶開(kāi)始我們會(huì)使用 root 賬號(hào)登錄服務(wù)器,但是出于安全考慮,一般我們的 web 應(yīng)用不能使用 root 用戶運(yùn)行,所以我們先需要添加一個(gè)專門(mén)的部署用戶。名字隨便起,這里就是 rails-deploy。
adduser rails-deploy
設(shè)置密碼
passwd rails-deploy
將用戶加入 sudo 群組
adduser rails-deploy sudo
退出 ssh 登錄,使用新用戶登錄。
0x03. 安裝 Ruby為了安裝和本地開(kāi)發(fā)環(huán)境相同的 Ruby 這里選擇從源碼編譯安裝,先安裝一些必要的庫(kù):
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
開(kāi)始編譯
./configure make sudo make install
查看安裝結(jié)果
ruby -v $ ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
最后刪除源碼
rm -rf ~/ruby0x04. 安裝 Passenger 和 Nginx
Passenger 是一個(gè)比較好的 Rails 服務(wù)器,我們選擇用它來(lái)運(yùn)行 rails 并使用 Nginx 做反向代理。
我們選擇使用 apt 來(lái)安裝 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
修改此文件所屬用戶和權(quán)限
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
此操作將有可能會(huì)覆蓋我們新安裝的 ruby ,可做如下操作修復(fù):
sudo rm /usr/bin/ruby sudo ln -s /usr/local/bin/ruby /usr/bin/ruby0x05. 設(shè)置 Web 服務(wù)器
打開(kāi) 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 項(xiàng)目代碼
cd ~ git clone https://github.com/YOURNAME/REPO.git current cd project/ bundle install
安裝數(shù)據(jù)庫(kù)(根據(jù)你的項(xiàng)目需求)
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ù)庫(kù)
從安全的角度考慮,應(yīng)該是為每個(gè)web 應(yīng)用創(chuàng)建一個(gè)用戶并且給予最小權(quán)限的,但是在這個(gè)過(guò)程中遇到的mongoid 的bug:
SegmentFault
最終沒(méi)有成功,希望有經(jīng)驗(yàn)的朋友可以給予幫助。
所幸,momgo提供直連,在配置里面只限定本地連接基本上還是可以保證數(shù)據(jù)安全的,所以目前就采用直連的方式。
0x07. 啟動(dòng)服務(wù)器rake assets:precompile # 編譯靜態(tài)文件 # passenger start -e production # 上面這個(gè)命令可選執(zhí)行,主要是為了測(cè)試是否配置成功0x08. 修改 Nginx 配置
刪除原有的默認(rèn)網(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
寫(xiě)在最后:按照道理來(lái)講,這樣的配置應(yīng)該已經(jīng)好了,開(kāi)始很奇怪我的80端口訪問(wèn)報(bào)錯(cuò) 403,然后查了nginx 的日志發(fā)現(xiàn)報(bào)了下面的錯(cuò)誤:
[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"
在這里拖了整整兩天之后,我看到了這里的一段討論,然后就默默的打算放棄了。決定轉(zhuǎn)戰(zhàn)其他的ruby 服務(wù)器。
這里的問(wèn)題貌似是passenger的問(wèn)題,之前在 StackOverflow上看到這個(gè)問(wèn)題但沒(méi)解決。
順便說(shuō)一下就是我遇到的情況和上面Ruby china 上的那位一樣,在項(xiàng)目目錄下面放個(gè)index.html就可以訪問(wèn)了,也就是說(shuō)項(xiàng)目目錄的權(quán)限是沒(méi)有問(wèn)題的。
==== update ====
此刻我內(nèi)心無(wú)比激動(dòng)啊,這個(gè)問(wèn)題終于解決了,原來(lái)是網(wǎng)站跟目錄配置的問(wèn)題應(yīng)該root到項(xiàng)目的public目錄下面。
不過(guò)又遇到了另一個(gè)問(wèn)題,他說(shuō)我的 gem 沒(méi)安裝,需要運(yùn)行bundle install,可能是安裝過(guò)程中權(quán)限問(wèn)題,用sudo bundle install 就好了 : http://stackoverflow.com/questions/22663498/rails-phusion-passenger-er...
總之算是跑起來(lái)了,謝天謝地啊!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/39146.html
摘要:是一個(gè)能快速搭建環(huán)境的工具,它能快速的將和部署到你的服務(wù)器中,是部署環(huán)境就如同環(huán)境那樣簡(jiǎn)單快速,讓人愉悅。在上跑一般只有在生產(chǎn)環(huán)境下才會(huì)使用,因而默認(rèn)下就是環(huán)境設(shè)置為生產(chǎn)環(huán)境,而初始化時(shí)默認(rèn)沒(méi)有對(duì)生產(chǎn)環(huán)境進(jìn)行密鑰配置。 passenger passenger是一個(gè)能快速搭建web環(huán)境的工具,它能快速的將nginx和passenger部署到你的服務(wù)器中,是部署ruby環(huán)境就如同php環(huán)...
摘要:最近總是在配置阿里云的服務(wù)器,遇到不少問(wèn)題,現(xiàn)小結(jié)一下,供大家參考阿里云的一鍵安裝全環(huán)境下載一鍵安裝全環(huán)境壓縮包上傳至服務(wù)器,解壓執(zhí)行腳本,具體步驟詳見(jiàn)這里任意選擇一種方法執(zhí)行腳本方法一方法二安裝與指定的版本安裝與指定的版本注意安 最近總是在配置阿里云的服務(wù)器,遇到不少問(wèn)題,現(xiàn)小結(jié)一下,供大家參考~~ 1、阿里云的一鍵安裝web全環(huán)境 下載一鍵安裝web全環(huán)境 sh.zip 壓縮...
摘要:原文鏈接隨著前端越來(lái)越火,越來(lái)越多的人推崇前后端分離,后端只提供,前端只負(fù)責(zé)消費(fèi)。這樣我們就能更加專注自己的事情了,比如前端可以使用任何想要的工具等等,后端也不用因?yàn)榧汕岸说拇a而苦逼加班了。 原文鏈接 隨著前端越來(lái)越火,越來(lái)越多的人推崇前后端分離,后端只提供API,前端只負(fù)責(zé)消費(fèi)API。這樣我們就能更加專注自己的事情了,比如前端可以使用任何想要的工具(Webpack、Gulp等等)...
閱讀 3259·2021-11-18 10:02
閱讀 1960·2021-09-22 10:54
閱讀 2998·2019-08-30 15:43
閱讀 2588·2019-08-30 13:22
閱讀 1586·2019-08-29 13:57
閱讀 1056·2019-08-29 13:27
閱讀 747·2019-08-26 14:05
閱讀 2534·2019-08-26 13:30