部署 Linode 1024 - Ubuntu 15.04 从 0 开始架设 WebServer Rails + Passenger + Nginx

fbsender · August 05, 2015 · Last by msg7086 replied at August 06, 2015 · 2435 hits

硬件环境:linode 1024 (10$每月 SSD VPS) OS: ubuntu 15.04 目前运行站点:滴滴住宿

rails 站点做迁移,从 linode 2048 ubuntu 12.04 到当前设备,简单配置使网站运行起来,Rails + Passenger + Nginx,数据库使用 Mysql(读取远程 DB)。

系统初始化后只有 root 账户,先使用 root 账户登录,配置下基本环境。

Ruby 运行环境

安装 ruby

apt-get install ruby  

linode ubuntu 源版本为 2.1.2,如需其他版本,需要自行下载 ruby 源码编译安装,使用 rvm 也很方便(生产环境不建议使用 rvm)

安装 gem 与必要的依赖

试着 gem install 一下即将用到的 gem,安装不成功的时候会提示缺少哪些依赖,按照提示 google 一下都可以解决。 下面是一些必须要的开发包,运行 rails 应用时,还有很多依赖需要安装...

apt-get install ruby2.1-dev
apt-get install mysql-client #默认版本5.6
apt-get install mysql-server #默认版本5.6
apt-get install libmagickwand-dev
apt-get install libmysqlclient-dev
apt-get install nodejs

linode ubuntu apt 源还是比较新的,前几日弄了个阿里云 ubuntu 14.04 apt-get 源相当陈旧,需自行更新。

Passenger 与 Nginx

安装

Passenger 官方文档

下面的指令依然由 root 账户执行。

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
apt-get install apt-transport-https ca-certificates
echo 'deb https://oss-binaries.phusionpassenger.com/apt/passenger vivid main' > /etc/apt/sources.list.d/passenger.list
chmod 600 /etc/apt/sources.list.d/passenger.list
apt-get update
apt-get install nginx-extras passenger

配置

执行 /usr/bin/passenger-config —-root 获取 passenger_root
然后在 nginx.conf http 节点下增加 passenger_root 刚刚得到的结果

http 节点下增加
passenger_ruby /usr/bin/ruby;
passenger_max_pool_size 10;

在 nginx.conf 头部添加 env PATH; 否则 nodejs —— js runtime 找不到,没有相关的环境变量。

简单的 nginx 配置

目前使用 nginx 时,工作进程使用 work 账户,进行相应的权限限制。

env PATH;  #for nodejs,增加环境变量
user work;  #新建一个work账户,用它来启动nginx工作进程
worker_processes 1;  # 与服务器核心数量匹配
pid /run/nginx.pid; #pidfile位置

events {
        worker_connections 768;
        # multi_accept on;
}

http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;

        passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;  # passenger 相关配置
        passenger_ruby /usr/bin/ruby;
        passenger_max_pool_size 10;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        gzip on;
        gzip_disable "msie6";

        server{
                listen 80;
                server_name app_name; # host name,一个端口不通host时很必要
                root /home/work/app/public; # rails 项目目录/public
                rails_env production; # rails env
                passenger_enabled on; # 这个server节点开启 passenger
        }
}

修改好配置,执行

sudo service nginx restart

至此,Rails + Passenger + Nginx 的基本环境就配置完成。

挺好的,楼主有没有更便宜的服务器

生产环境不建议用源码编译。 生产环境不建议直接用 root 做运维。 生产环境不建议用非 LTS 的 Ubuntu。

#1 楼 @jasontang168 LowEndTalk 上自己翻帖子吧。价格越便宜的质量越说不准。

You need to Sign in before reply, if you don't have an account, please Sign up first.