从零开始部署一个Rails网站

Posted by baicai on October 28, 2016

项目做得差不多,找老板要了新服务器,把部署过程写下来。</p>

CentOS 6.5

1. yum update 更新系统

2. 安装并更新git版本

自带的旧版本可能会无法更新某些版本库的内容(比如coding.net)

可以通过yum安装git,或者去github下载编译安装

https://github.com/git/git/archive/v2.10.1.tar.gz

git clone https://github.com/git/git


3. 安装ruby

安装ruby有多种方式,yum安装版本较低,此外还可以采用源码安装,rvm安装等等。</p>

这里用了一个叫ruby-install的安装方式,先编译安装这个工具,然后可以方便的管理ruby版本。</p>

https://github.com/postmodern/ruby-install

安装完设置下gem源 教程

然后gem install passenger

4. 安装nginx+passenger
passenger-install-nginx-module
sudo yum install -y epel-release yum-utils
sudo yum-config-manager --enable epel
sudo yum install -y pygpgme curl
sudo curl --fail -sSLo /etc/yum.repos.d/passenger.repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo
sudo yum install -y nginx passenger

安装完后找到 

/etc/nginx/conf.d/passenger.conf

将下面三行注释去掉,并且修改

passenger_root /some-filename/locations.ini;
passenger_ruby /usr/bin/ruby;
passenger_instance_registry_dir /var/run/passenger-instreg;

passenger_ruby设置为第三步安装的ruby路径

passenger_root可以用 ‘passenger-config --root’命令查询,选择第三步gem安装的passenger路径下的

passenger_instance_registry_dir路径默认可以不用改,但是路径不存在的话要新建下,也可以改为/tmp之类的</p>

然后重启服务

sudo service nginx restart

↑详细步骤</a>
</p>

5. 安装mysql

可以通过yum直接安装,之后设置用户名密码

根据项目中的配置文件,先建立数据库,注意编码比如utf8

CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

并安装 yum install mysql-devel

6. 安装sqlite3

测试和开发环境可能用到</p>

并安装&nbsp;yum install sqlite3-devel

7. 安装jdk并配置环境变量</blockquote>

网上很多教程

8. 安装nodejs

项目可选js引擎之一

9. 安装imagemagick

验证码图片生成</p>

10. elasticsearch全文搜索引擎

可以参考这里</span></p>

http://www.liubaicai.net/articles/748

11. 进行最后的设置

找到nginx的配置文件,比如在‘/etc/nginx/nginx.conf’</span></p>

添加设置

server {
    listen 80;
    server_name yourserver.com;

    # rails项目的public目录位置
    root /var/www/myapp/code/public;

    # 开启 Passenger
    passenger_enabled on;
}

↑详细步骤</a>
</p>

项目中使用 ‘</font><span style="color: rgb(54, 46, 43); font-family: "Microsoft YaHei"; font-size: 12px; font-weight: bold;">rake secret RAILS_ENV=production</span>’生成</span>secret_key_base,设置到环境变量或者项目中</p>

gem install bundler
bundle install

根据报错信息,会提示你还有哪些依赖没有安装</font></p>

rake db:migrate VERSION=0 RAILS_ENV="production"
rake db:migrate RAILS_ENV="production"
rake db:seed production

然后愉快的</font></p>

sudo service nginx restart

如果错误log提示passenger多个版本冲突

需要yum remove passenger,只保留gem安装的即可</font></p>

就可以愉快的访问了<br>