ruby on rails + postgresql + nginx的搭建

操作系统: linux(centos6.5)

为什么选择postgresql

1. postgresql支持全文检索;

2. 在创建一些数据库对象如索引时,不会加表锁,使得部署和迁移应用更加平滑;

3. 支持过程化编程语言;

4. 数据库复制模式灵活,异步复制模式下仍可以对特定操作进行同步复制。

安装postgresql

1. 下载源码包:9.4.1

wget https://ftp.postgresql.org/pub/source/v9.4.1/postgresql-9.4.1.tar.gz

2.  安装系统依赖:  

yum install openssl openssl-devel libxml2 libxml2-devel 

3.  编译安装源码包

mkdir -p /opt/postgresql

./configure --prefix=/opt/postgresql

make && make install

4. 添加一个用户专用于操作postgresql并初始化数据库

useradd postgres

mkdir -p /home/postgres/data

/opt/postgresql/bin/initdb -D /home/postgres/data

5.  启动数据库

/opt/postgresql/bin/posgres -D /home/postgres/data


安装ruby on rails


1. 下载ruby源码包

wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.1.tar.gz

2. 安装依赖(可选)

yum install libyaml libyaml-devel

3. 编译安装ruby

mkdir -p /opt/ruby

./configure --prefix=/opt/ruby

make && make install

4. 安装bundler

/opt/ruby/bin/gem install bundler

5. 下载ruby on rails项目

git clone project_url

6. 进入项目目录中,修改gemfile,将如下文本加入。

gem 'pg'

如果需要使用unicorn,则在gemfile中加入如下文本

gem 'unicorn'

然后bundle install安装项目所有依赖

另外,在安装依赖时需要配置pgconfig的路径,因为我们并没有将postgresql装到系统默认路径下。

bundle config pg.build -- --with-pg-config=/opt/postgresql/bin/pg_config

bundle install --path=./vendor

7. 初始化项目的数据库,首先要创建一个postgresql用户,然后使用这个用户连接并创建数据库。

/opt/postgresql/bin/createuser -d -P 'username'

bundle exec rake db:setup RAILS_ENV=production 

8. 如果是产品环境,则需要编译压缩前端文件,这些文件会被生成在public下。

bundle exec rake assets:precompile RAILS_ENV=production

9. 使用unicorn启动server, -D表示unicorn将作为守护进程运行。

bundle exec unicorn -E production -D 

nginx

1. 安装依赖, pcre是一个正则表达式的轻量级函数库,比boost的正则表达式库小得多,pcre的作用在于让nginx支持rewrite功能。

yum install pcre-devel

2. 编译安装(编译static_gzip模块)

mkdir -p /opt/nginx

./configure --prefix=/opt/nginx --with-http-gzip-static-module

make && make install

3. 配置nginx.conf, 开启gzip,gzip_static; 配置静态文件root路径;按系统核数配置work进程数。以下是部分配置。

worker_processes  4;

gzip  on;

gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss application/javascript;

location ~ ^/(assets)/  {

root  /opt/virus-backend/manage-backend/public;

gzip_static on; # to serve pre-gzipped version

expires max;

add_header Cache-Control public;


4. 启动nginx

/opt/nginx/sbin/nginx


自此,服务已可访问!

你可能感兴趣的:(ruby on rails + postgresql + nginx的搭建)