操作系统: 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
自此,服务已可访问!