ror+psql+puma+nginx部署项目

前言

这个过程基本上我花了三个星期,才弄好,其中的有些部署文件还是我直接从项目复制粘贴过来的。现在一整理,发现并没有那么难,那为什么会花费三个星期呢?大部分可能是因为我的无知和对centos的不了解。

例如,我在启动数据库的时候,它告诉我不能以root身份启动,等我切换到普通账户,又告诉我,对文件夹没有写入权限,看得我真的很矛盾。

例如,我在安装pg这个gem的时候,告诉我缺乏依赖,我找到答案yum install libs-devel,又告诉我ruby的版本太低了,很纳闷,我明明装的是最新的ruby版本,之后就一直在缺乏依赖着转圈,等到现在才知道是因为找不到pg_configpg_config这个文件一般是在/usr/bin文件夹下,但是我安装完没有在这....

安装ruby

如果使用yum安装ruby,版本太低,为了管理ruby版本,我使用rbenv来管理 安装参考链接

安装postgresql

修改/etc/yum.repos.d/CentOS-Base.repo文件

sudo vi /etc/yum.repos.d/CentOS-Base.repo
exclude=postgresql*    // 在[base]和[updates]块中加上这一行
复制代码

安装postgresql

sudo rpm -Uvh http://yum.postgresql.org/9.5/redhat/rhel-6-x86_64/pgdg-centos95-9.5-1.noarch.rpm
sudo yum install postgresql95 postgresql95-devel postgresql95-server postgresql95-libs postgresql95-contrib
复制代码

初始化数据库 找到psql的安装目录(xxxx)的bin文件夹,

xxxx/bin/pg_ctl -D xxxx/data initdb //初始化数据库
xxxx/bin/pg_ctl -D xxxx/data start  // 启动数据库
复制代码

在initdb,可能会出现权限不够的情况,这个时候,查看一下data的权限,发现你应该将用户切换成postgres

sudo su postgres
复制代码

在这一步,会提示你输入密码,如果你不知道密码,就使用以下命令去修改密码

passwd postgres
复制代码

将用户切换成postgres就可以初始化和启动数据库,也可以使用以下命令

sudo service postgresql-9.5 start               // 启动数据库
sudo chkconfig --levels 235 postgresql-9.5 on   // psql开机自启动
复制代码

创建psql的链接用户名和密码

sudo su postgres
psql
alter user username with password 'password';
create database testdb owner=username;
复制代码
为puma增加代理
cap production puma:restar
复制代码

这个时候访问端口,发现无法访问,查一下puma的log,发现pumaproduction环境下是使用socket链接,只能使用nginx做代理了,编辑/etc/nginx/conf.d/default.conf文件,替换下面代码中的usernamedeploy_path

upstream app {
    # Path to Puma SOCK file, as defined previously
    server unix:///home/username/deploy_path/shared/sockets/puma.sock fail_timeout=0;
}

server {
    listen 80;
    server_name localhost;

    root /home/username/deploy_path/current/public;

    try_files $uri/index.html $uri @app;

    location @app {
        proxy_pass http://app;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
    }

    error_page 500 502 503 504 /500.html;
    client_max_body_size 4G;
    keepalive_timeout 10;
}
复制代码

关于pumasock的地址,你查一下pumalog确认一下

你可能遇到的问题
  1. 在安装pg这个gem的时候,可能会报缺少依赖,或者找不到pg_config文件 答:gem install pg --with-pg-config=psql的安装目录/bin/pg_config

  2. 报错:ActiveRecord::StatementInvalid: PG::InsufficientPrivilege: 错误: 创建扩展 "uuid-ossp" 权限不够 答:需要为psql中的新建username设置super权限

  3. 即使你添加了nginx代理,你发现,网站还是无法访问 答:可以查一下/var/log/nginx/nginx_error.log,我遇到的原因是权限不够,修改nginx的config,将usernginx改成root

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值