硬件环境:linode 1024 (10$每月 SSD VPS) OS: ubuntu 15.04 目前运行站点:滴滴住宿
rails 站点做迁移,从 linode 2048 ubuntu 12.04 到当前设备,简单配置使网站运行起来,Rails + Passenger + Nginx,数据库使用 Mysql(读取远程 DB)。
系统初始化后只有 root 账户,先使用 root 账户登录,配置下基本环境。
apt-get install ruby
linode ubuntu 源版本为 2.1.2,如需其他版本,需要自行下载 ruby 源码编译安装,使用 rvm 也很方便(生产环境不建议使用 rvm)
试着 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 源相当陈旧,需自行更新。
下面的指令依然由 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 时,工作进程使用 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 的基本环境就配置完成。