国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Passenger + Nginx + Rails 生產(chǎn)環(huán)境配置

kid143 / 1535人閱讀

摘要:設(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 ~/ruby
0x04. 安裝 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/ruby
0x05. 設(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-org
0x07. 配置數(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

相關(guān)文章

  • 使用passenger在Centos7部署nginx+Ruby on Rails

    摘要:是一個(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)...

    UsherChen 評(píng)論0 收藏0
  • 在阿里云 (aliyun) 服務(wù)器上搭建Ruby On Rails生產(chǎn)環(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 壓縮...

    Snailclimb 評(píng)論0 收藏0
  • 前后端分離實(shí)踐 — 如何解決跨域問(wèn)題

    摘要:原文鏈接隨著前端越來(lái)越火,越來(lái)越多的人推崇前后端分離,后端只提供,前端只負(fù)責(zé)消費(fèi)。這樣我們就能更加專注自己的事情了,比如前端可以使用任何想要的工具等等,后端也不用因?yàn)榧汕岸说拇a而苦逼加班了。 原文鏈接 隨著前端越來(lái)越火,越來(lái)越多的人推崇前后端分離,后端只提供API,前端只負(fù)責(zé)消費(fèi)API。這樣我們就能更加專注自己的事情了,比如前端可以使用任何想要的工具(Webpack、Gulp等等)...

    Enlightenment 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<