`
mlzboy
  • 浏览: 726487 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

ruby1.9.2+rails3+nginx+passenger+postgresql

阅读更多
服务器部署之 ruby1.9.2+rails3+nginx+passenger+postgresql

*2 次投票

jerry 分享于 3 个月 前, 5 条回复, 569 次浏览

Share |

服务器系统: ubuntu server 10.04 64bit 案例服务器: Linode VPS 512系列.

服务器系统: ubuntu server 10.04 64bit
案例服务器: Linode VPS 512系列.

租下vps,安装好所要的系统, 为了方便起见,我将ruby 编译到了 sudo组下的一个用户中,所有首先要创建一个用户,以jerry为例:

$  useradd jerry  # 添加用户  
$  passwd jerry  # 设置密码  
$  gpasswd -a jerry sudo  #将用户jerry添加进sudo组(sudo组是默认就存在的,所以不用创建)  
$  cd /home && mkdir jerry   #为jerry创建目录  
$  chown jerry /home/jerry  #设置权限  

添加你的证书到jerry用户目录下,这样以后就ssh登录就无需输入密码了(老是输入密码,这点很烦人).

$  cd ~  
$  mkdir .ssh  && cd .ssh  
$  vim authorized_keys   # 贴入你的公钥证书

万事具备,现在可以用rvm来编译ruby 1.9.2了
首先安装curl 和 git-core

$  sudo apt-get install curl  git-core

然后安装rvm

$  bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )  

在~/.bashrc 和 ~/.profile 中加入以下配置:

if [[ -s "$HOME/.rvm/scripts/rvm" ]]  ; then source "$HOME/.rvm/scripts/rvm" ; fi  

退出终端再登录就可以使用rvm了

$  rvm notes  

安装必要的packages

$  sudo apt-get install bison build-essential zlib1g zlib1g-dev libssl-dev libreadline5-dev libxml2-dev subversion autoconf  

安装完以上必须的packages后,正式用rvm编译ruby 1.9.2,rvm会将ruby自动编译到当前用户目录的~/.rvm下(非root用户).

$  rvm install 1.9.2  

安装完ruby 1.9.2后, 我们可以把rvm ruby 1.9.2设置为默认

$  rvm --default ruby-1.9.2-p0  

接下来就可以查看ruby 版本了

$  ruby -v  
    ruby 1.9.2p0 (2010-08-18 revision 29034) [x86_64-linux]

接下来安装rails3(可以不用安装,看实际情况,如果你的项目中已经freeze了rails3)

$  gem install rails  

至此 Ruby 1.9.2编译已经完成

安装 Postgresql 数据库

首先需要确认当前root env的LANG是否为en_US.UTF8,

$  env  

看显示信息是否有 LANG=en_US.UTF8,如果没有,在 /etc/profile中加入以下代码:
LANG=en_US.UTF8

之后退出终端再进入,你的设置就生效了,然后安装postgresql数据库.

$  sudo apt-get install postgresql  

修改 postgres 用户密码

$  su postgres -c psql postgres
$  ALTER USER postgres WITH PASSWORD 'postgres';
$  \q  

其中 ‘postgres’ 为要修改的密码

编辑 /etc/postgresql/8.4/main/pg_hba.conf 最后修改为

# Database administrative login by UNIX sockets
# local   all         postgres                          ident

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               md5 #ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5  

如果不希望允许 postgres 使用密码登入的可以开启第2行 # local all postgres ident 的注释

编辑 /etc/postgresql/8.4/main/postgresql.conf, 搜索 # listen_addresses = 将其修改为

listen_addresses = 'localhost'                  # what IP address(es) to listen on;  

如果允许其他机器访问的请将 localhost 修改成 *

重启数据库

$  /etc/init.d/postgresql-8.4 restart  

安装 postgresql 的 Ruby 驱动

$  sudo apt-get install libpq-dev
$  gem install -V pg  

如果数据库不再本地仅安装此步即可

安装 Phusion Passenger

用 gem 安装 passenger,将会安装到 /home/jerry/.rvm/gems/ruby-1.9.2-p0/gems/passenger-2.2.15,

$  gem install -V passenger   

安装 nginx 服务器

下载最新 stable 版 nginx

$  mkdir -p /home/jerry/opt/src && cd /home/jerry/opt/src
$  wget http://nginx.org/download/nginx-0.7.67.tar.gz
$  tar xvf nginx-0.7.67.tar.gz

安装编译相关类库

$  sudo apt-get install libpcre3-dev  

编译安装 带有 passenger 模块的 nginx

使用 passenger 脚本 passenger-install-nginx-module 编译 nginx

选择 2. No: I want to customize my Nginx installation. (for advanced users)

输入 src: /home/jerry/opt/src/nginx-0.7.67 和 prefix: /home/jerry/opt/nginx

添加 编译参数 并编译

$  --conf-path=/home/jerry/opt/etc/nginx/nginx.conf --with-http_gzip_static_module  

如果还要启动其他编译参数请自行添加

另外: 如果不想使用 passenger 自带脚本编译 nginx, 也可以手工编译 nginx 时加入 –add-module=’/home/jerry//opt/passenger/ext/nginx 参数, 来启用 passenger 模块.

配置 nginx

添加服务器用户(如果直接用jerry来做发布用户可以省略下一步,我就是直接用jerry作为发布用户的)

$  useradd -d /var/www/ -s /bin/bash www-data
$  usermod --shell=/bin/bash  www-data
$  mkdir -p /var/www/vhosts/default/htdocs
$  chown -R www-data:www-data /var/www

整理编译自动生成的配置文件

$  cd /home/jerry/opt/etc/nginx
$  mkdir /home/jerry/opt/etc/nginx/default
$  mv *.default default/
$  mkdir conf.d
$  mkdir sites-enabled

将 /home/jerry/opt/etc/nginx/nginx.conf 替换为

user  jerry jerry;
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    
    sendfile        on;
    #tcp_nopush     on;
    
    keepalive_timeout  65;
    gzip  on;
    
    include conf.d/*.conf;
    include sites-enabled/*;
}  

添加 gzip_static 模块配置, 编辑 /opt/etc/nginx/conf.d/gzip_static.conf

gzip_static on;
gzip_types text/css application/x-javascript;

添加 Passneger 模块配置, 编辑 /home/jerry/opt/etc/nginx/conf.d/passenger.conf

passenger_root /home/jerry/.rvm/gems/ruby-1.9.2-p0/gems/passenger-2.2.15;
passenger_ruby /home/jerry/.rvm/bin/ruby-1.9.2-p0;

添加 /home/jerry/opt/etc/nginx/sites-enabled/defaul, 这个default 最好是从别的文件link过来, $ ln -s /home/jerry/apps/conf/nginx.conf /home/jerry/opt/etc/nginx/sites-enabled/default

编辑 /home/jerry/apps/conf/nginx.conf:

server{
  listen 80;
  server_name  demo.com www.demo.com;
  root /home/jerry/apps/demo/current/public;  #just for example
  passenger_enabled on;

  location ~ ^/(images|javascripts|stylesheets)/  {
      root /home/jerry/apps/demo/current/public;
      expires 30d;
  }
}

如果需要配置 详细的配置信息, 请参考 Nginx 文档

添加启动脚本 /home/jerry/opt/etc/init.d/nginx 内容为

#! /bin/sh

### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO

# PATH=/home/jerry/.rvm/gems/ruby-1.9.2-p0/bin:/bin:/home/jerry/.rvm/rubies/ruby-1.9.2-p0/bin:/home/jerry/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
DAEMON=/home/jerry/opt/nginx/sbin/nginx
NAME=nginx
DESC=nginx
PIDFILE=/home/jerry/opt/nginx/logs/$NAME.pid

test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /home/jerry/opt/etc/default/nginx ] ; then
    . /home/jerry/opt/etc/default/nginx
fi

set -e

. /lib/lsb/init-functions

test_nginx_config() {
    if $DAEMON -t; then
        return 0
    else
        return $?
    fi
}

case "$1" in
    start)
        echo -n "Starting $DESC: "
        test_nginx_config
        start-stop-daemon --start --quiet --pidfile $PIDFILE \
            --exec $DAEMON -- $DAEMON_OPTS || true
        echo "$NAME."
    ;;
    stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile $PIDFILE \
            --exec $DAEMON || true
        echo "$NAME."
    ;;
    restart|force-reload)
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --pidfile \
            $PIDFILE --exec $DAEMON || true
        sleep 1
        test_nginx_config
        start-stop-daemon --start --quiet --pidfile \
            $PIDFILE --exec $DAEMON -- $DAEMON_OPTS || true
        echo "$NAME."
    ;;
    reload)
        echo -n "Reloading $DESC configuration: "
        test_nginx_config
        start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDFILE \
           --exec $DAEMON || true
        echo "$NAME."
    ;;
    configtest)
        echo -n "Testing $DESC configuration: "
        if test_nginx_config; then
            echo "$NAME."
        else
            exit $?
        fi
    ;;
    status)
        status_of_proc -p $PIDFILE "$DAEMON" nginx && exit 0 || exit $?
    ;;
    *)
        echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2
        exit 1
    ;;
esac

exit 0

设置随服务器启动(切换到root用户下)

$  chmod +x /home/jerry/opt/etc/init.d/nginx
$  ln -s /home/jerry/opt/etc/init.d/nginx /etc/init.d/nginx
$  update-rc.d nginx defaults  

到这里nginx的配置已经完成,接下来你就可以将项目发布到服务器了.

分享到:
评论

相关推荐

    numpy-1.9.2+mkl-cp27-none-win_amd64.whl

    numpy-1.9.2+mkl-cp27-none-win_amd64.whl, 在windows下安装numpy出错用到

    numpy-1.9.2+mkl-cp27-none-win32

    numpy是python进行科学计算的一个基础库,目前只支持vs2008,vs2013中不能用pip直接安装。

    ruby1.9.2_installer

    最新版本的Ruby安装程序 。 ruby1.9.2 installer

    ruby1.9.2源代码安装文件

    ruby-1.9.2-p180源代码安装文件,2011年2月24日截止最新Ruby版本。

    ruby-1.9.2-preview1-x64-mswin64-80.zip

    5. **Ruby开发和应用**: Ruby广泛应用于Web开发,尤其是搭配Rails框架。它也被用于系统自动化、脚本编写、数据分析等领域。1.9.2版本的更新意味着开发者可以利用新的语言特性和优化,提高代码效率和可维护性。 6. *...

    ruby-1.9.2-rc2

    标题“ruby-1.9.2-rc2”指的是Ruby语言的一个特定版本,即1.9.2的候选发布版2(Release Candidate 2)。在软件开发中,候选发布版通常是正式版本发布前的最后一个测试阶段,它已经相当稳定,但可能还存在一些未被...

    ruby1.9.2_1.9.2-p290-1_amd64.deb

    ruby1.9.2_1.9.2-p290-1_amd64.deb

    multipass-1.9.2+mac-Darwin.pkg

    multipass最新版, macOS安装包

    绿色版 Ruby 1.9.2 For Windows 64 发布

    3. **模块混合(Mixins)**:Ruby中的模块可以被类包含,实现代码重用,1.9.2在这方面做了优化,使得模块混合更加灵活。 4. **块和迭代器**:改进了块和迭代器的处理,使得在编写循环和遍历代码时更加高效。 5. **...

    前端开发利器-bg2css v3.0 +mergeCSS v1.9.2+W3C前端开发工具包

    bg2css-v3.0:Adobe公司开发的用于自动生成CSS样式表的软件,帮您轻松搞定图片合并,定位坐标,单独定义层的输出设置,当前信息层显示设置,更新所有层信息窗 mergecss:css压缩工具(merge css)下载,能够合并、压缩...

    ruby on rails 3

    综上所述,"Ruby on Rails 3"结合Ruby 1.9.2的特性,为开发者提供了一个强大且高效的Web开发平台,推动了Web应用的创新和发展。通过学习上述知识点,开发者可以更好地利用Rails 3构建高性能、易于维护的Web应用程序...

    ruby-1.9.2-p290.tar.gz

    标题中的"ruby-1.9.2-p290.tar.gz"是一个开源编程语言Ruby的特定版本的归档文件,采用流行的tar和gzip格式进行压缩。这个版本是Ruby的1.9.2分支的一个更新点,标记为p290,意味着它是该分支的第290个补丁级别。在...

    RVM配置ROR

    - 安装Ruby 1.8.7和Ruby 1.9.2版本,这两个版本是Rails 2.x和Rails 3.x分别推荐使用的。 - 安装Rails框架: - 对于Ruby 1.8.7,安装Rails 2.3.5。 - 对于Ruby 1.9.2,安装Rails 3.0.3。 5. **安装MySQL数据库...

    nginx-1.9.2.zip

    **Nginx 1.9.2 安装与配置详解** Nginx 是一款高性能、轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的 Igor Sysoev 开发。在本教程中,我们将详细探讨 Nginx 1.9.2 版本的安装...

    mobylette:Ruby on Rails的移动请求处理

    Mobylette 1.6+ only supports Ruby 1.9.2+ For Ruby 1.8.7 support, please use version &lt; 1.6 Mobylette 这个gem通过将“ mobile”格式添加到您的rails应用程序中来工作。 每当来自移动设备的请求发出时,...

    ruby-gibson:用于 Ruby 的高性能 Gibson 客户端

    支持的 Ruby 版本和实现这个模块应该在以下方面工作相同: JRuby 1.6+ Ruby 1.9.2+ Ruby 1.8.7+ 鲁比尼乌斯 2.0 如果您有问题,请输入问题。安装和使用您可以使用以下代码验证您的安装: gem install gibson 和 ...

    centOS Rails3环境搭建

    在这里我们选择安装Ruby 1.9.2,因为Rails 3与该版本兼容。首先下载Ruby源代码并编译安装: ```bash cd ~/source/ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz -P ~/source/ tar xvzf ~/...

Global site tag (gtag.js) - Google Analytics