重新配了一个服务器,分享一下部署过程。 很多东西都不是从源码安装,寻求最短的部署时间。
原文地址: http://hisea.me/p/rails31-ubuntu-passenger-nginx-quick-deploy
sudo apt-get install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libxml2-dev libxslt-dev autoconf libc6-dev zlib1g-dev libssl-dev build-essential curl git-core libc6-dev g++ gcc
sudo adduser railsu
sudo usermod -G passenger,www-data,sudo railsu
su - railsu
bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
加载 rvm (只需第一次安装时加载)
source .bashrc
安装 ruby
rvm install 1.9.2
rvm 高阶应用可以参考这里的指南
rvm use 1.9.2 default
gem install passenger
rvmsudo passenger-install-nginx-module
所有都选默认,包括 nginx 安装目录业选择默认 /opt/nginx/
wget https://gist.github.com/hisea/1548664/raw/53f6d7ccb9dfc82a50c95e9f6e2e60dc59e4c2fb/nginx
sudo cp nginx /etc/init.d/
sudo chmod +x /etc/init.d/nginx
sudo update-rc.d nginx defaults
配置文件在 /opt/nginx/config/nginx.conf
server {
listen 80;
server_name www.yourhost.com;
root /home/railsu/project/public; # <--- 这里是你项目的public目录
passenger_enabled on;
}
用来 precompile rails assets
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
cd ~/project
rake assets:precompile
sudo /etc/init.d/nginx start
https://github.com/raecoo/rails-stack 用这个就更简单了,一条命令安装,完事儿后就差具体配置了,如果有现成的文件,直接丢到相关位置,重启服务即可。
写得很好。 但我有些问题,railsu 这个用户的用途具体是什么?
谢谢!
railsu@li85-215:~$ rvm use 1.9.2 default
RVM is not a function, selecting rubies with 'rvm use ...' will not work.
railsu@li85-215:~$ exit
logout
root@li85-215:~# rvm use 1.9.3 default
The program 'rvm' is current
currently not installed. You can install it by typing:apt-get install ruby-rvm 你好。没有办法安装啊.请问是什么问题呢?
根据你上面的配置
sudo /etc/init.d/nginx start
启动nginx会出现无法将它stop的情况
就算执行sudo /etc/init.d/nginx stop显示已经停止
但是在次开启的时候,会出现80端口占用
railsu@li85-215:~$ sudo /opt/nginx/sbin/nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
需要通过 sudo /opt/nginx/sbin/nginx -s stop
来让 nginx 停止
请问是什么原因呢?
@hisea 有点疑问!配置 nginx 的时候
server {
listen 80;
server_name www.yourhost.com;
root /home/railsu/project/public; # <--- 这里是你项目的public目录
passenger_enabled on;
}
这个server_name
是域名还是 localhost?
其他配置好了,是不是要进入 project 的文件夹里启动服务器rails s
???
server {
listen 80;
server_name localhost;
root /home/railsu/project/public; # <--- 这里是你项目的public目录
passenger_enabled on;
}
只要这样就行了?
@hisea 出现这种 railsu is not in the sudoers file. This incident will be reported. 怎么办?
新版的 passenger 配置,需要这样设置:(切记) server { location /{ ...... passenger_enabled on; #只有放在这里才会启动 passenger ...... } }
passenger_root /usr/local/rvm/gems/ruby-1.9.3-p286/gems/passenger-3.0.17; passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.3-p286/ruby;
这两就加上之后,在动 nginx 老是报错,找不到 passenger_root,我单独安装了 1.3.7,./configure --add-module=,指定了 passenger/ext/nginx,也会出现上面的错误。 但是我在 passenger-install-nginx-module 命令中选择第一个选项,它帮我下载编译安装 nginx1.2.3 之后,启动这个 1.2.3 就没有问题,还自动帮我添加了上面的两行,请问知道的帮忙解释一下,谢谢!!!
@hisea 执行sudo usermod -G passenger,www-data,sudo railsu
出现usermod: group 'passenger' does not exist
错误了,是哪一步错了?
#68 楼 @badboy 两个应用,用不同的 ruby 版本的 passnger 需要运行 standalone passenger,然后在 apache 里面配置反向代理。
具体的配置方法可以看这里: http://blog.phusion.nl/2010/09/21/phusion-passenger-running-multiple-ruby-versions/
UPDATE February 27 2013: this article has been obsolete. Phusion Passenger supports multiple Ruby interpreters as of version 4.0.0. The PassengerRuby config option has been made a per-virtual host option, so you can customize your Ruby interpreter on a per-application basis.
就是如果你用 Passenger 4 的话,PassengerRuby配置不再是全局的了,可以用在 VirtualHost 里面,不同的 VirtualHost 用不同的 Ruby
非常有帮助的教程。希望 hisea 能够给指导下 thin、passenger、puma(http://puma.io/,各自的部署。特别是puma,尝试很多次都部署不好。)
#75 楼 @hisea 是 github url 改进了 已经找到原来的脚本,建议修改下原文https://gist.github.com/hisea/1548664/raw/53f6d7ccb9dfc82a50c95e9f6e2e60dc59e4c2fb/nginx
lz 有没有研究一下怎么卸载 nginx 啊,我 passenger 装了一次 nginx,配置文件被我改坏了,想重新装一次 nginx,搞的现在 nginx 启动不起来了,我直接删除了 nginx 相关的文件夹,有没有什么方法,可以卸载的干净一些?