Ubuntu12环境下Thin+rails(4)+ruby(2)+nginx+mysql配置
1. 前提条件:已经正确安装了ubuntu12并且更行了源。
2. 安装过程:
2.1 安装ruby前的准备:
- 1.1修改 /etc/apt/sources.list文件改为mirrors.163.com
保存退出
执行命令: sudo apt-get update 更新源
- 1.2 安装curl
执行命令:sudoapt-get install curl
- 1.3 安装rvm版本管理工具(ruby版本)
执行命令:curl-L https://get.rvm.io | bash -s stable
等待安装结束
配置rvm环境执行命令:source~/.rvm/scripts/rvm
安装所有rubyon rails 环境需要的包
执行命令:rvmrequirements
等待…… 安装结束(走运的情况下)
2.2安装ruby
2.2.1 执行命令:rvminstall ruby 将会安装当前对应系统环境下最新版本的ruby。
2.2.2 执行ruby –v
如果系统里有多个ruby版本选择自己需要的版本设置为默认版本,例: rvmuse ruby 2.0.0 --default
2.2.3 设置结束后执行命令:rvmrubygems current
2.3安装rails
修改ruby的镜像地址,改为淘宝的。这样会快些。
参考:http://ruby.taobao.org 即可。
执行命令:gem install rails –V
这个时间可能过长,请耐心等待。
运气好的话,应该可以安装上。
测试一下rubyon rails 环境。
找个目录,执行命令:railsnew HelloRails (这里就在~路径下)
创建一个叫HelloRails的rails工程。说明配置正常。
进入HelloRails目录
修改Gemfile文件,
在最后面加上如下两行(如果文件里有就不用加了):
gem‘therubyracer‘
gem‘execjs‘
保存退出:执行bundleinstall 构建包
3. 安装mysql
3.1 执行命令:sudo apt-get install mysql-server
等待安装结束即可。
输入 mysql–u root –p
再输入密码
看mysql是否已经安装成功!
4. 安装nginx
4.1执行命令:sudo apt-get install nginx
等待安装结束即可。
输入 sudoservie nginx restart
启动nginx
访问localhost 看会不会出来nginx的欢迎界面(nginx默认端口为80).
如果走运,应该可以访问了。
5、安装thin
rails默认的服务器不是thin,我们这里用thin来做生产环境的web容器。
安装thin
修改HelloRails/Gemfile
在文件最后面加上gem ‘thin’
保存退出:执行bundleinstall 构建包
若一切走运,就执行:thin start 启动thin服务
6 配置nginx反响代理+动静分离(这里就以这个HelloRails工程为例)
6.1. 配置nginx.conf文件
进入nginx目录: cd /etc/ng inx
打开nginx.conf文件: sudo vim nginx.conf
找到 include /etc/nginx/conf.d/*.conf;
和
include/etc/nginx/sites-enabled/*;
注释掉这两行,添加一行新的include:
include/etc/nginx/sites-available/hellorails.com
保存退出。(这个hellorails.com是我们一会儿要配置的这个项目的nginx配置文件)
6.2 生成并配置 hellorails.com文件。
执行:cd /etc/nginx/sites-available
创建hellorails.com文件: sudo vim hellorails.com
讲default文件里的内容拷贝到hellorails.com文件里(或者直接cp个default文件改名字)
将server{} 代码块注释掉
加入如下server代码块:
upstream ad{ //代理服务器配置(thin服务器)
server 127.0.0.1:3000;
}
server {
listen 80;
server_name 10.0.2.15;
root ~/ HelloRails/public;
try_files $uri @ad;
location ~ ^/(assets)/ {
root ~/ HelloRails/public;
gzip_static on;
expires max;
add_header Cache-Controlpublic;
}
location ~*\.(jpeg|jpg|png|gif|bmp|ico|css|js|swf)$ {
root ~/ HelloRails/public;
}
location @ad {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://ad;
}
access_log/home/panguixiang/nginxLog/access.log;
error_log/home/panguixiang/nginxLog/error.log;
//这个/home/panguixiang/nginxLog目录是自己创建的可以改
}
保存退出。
6.3 让刚才的配置文件在nginx里起作用,执行如下命令:
sudo ln –s/etc/nginx/sites-available/hellorails.com/etc/nginx/sites-enabled/hellorails.com
6.4
重启nginx,搞定。
另外,附上生产环境里的一些命令和需要配置注意的地方。
配置工程production.rb文件
打开~/HelloRails/config/environments/production.rb
修改如下几行:
config.assets.compile 修改为true
如果有:
config.serve_static_assets 修改为false
假如如下行:
config.action_dispatch.x_sendfile_header = ‘X-Accel-Redirect’
创建生产环境的数据库命令:
RAILS_ENV=productionrake db:create db:schema:load
以生产环境方式启动rails:
thin方式:thinstart –e production –p 3000 (不带-p就是默认3000端口)
rails默认方式:rails server –e production –p 3000
在生产环境里要先编译assets里面的资源,执行如下命令:
RAILS_ENV=productionbundle exec rake assets:precompile is the exact rake task
或者 rake assets:precompile
可能里面还有些不正确的地方。请高手们贴砖,小弟改进。
以下是参考文献:
https://www.digitalocean.com/community/tutorials/how-to-install-ruby-on-rails-on-ubuntu-12-04-lts-precise-pangolin-with-rvm 安装ruby on rails
https://rvm.io/rvm/install 安装rvm
http://www.cnblogs.com/zj1111184556/archive/2013/09/13/3318807.html 卸载rvm
http://www.cyberciti.biz/faq/uninstall-mysql-ubuntu-linux-command/ Ubuntu卸载 mysql-server