阿里云服务器Alibaba Cloud Linux系统编译Rails项目

一般Rails项目预编译就是跑几句命令就行了,但是我在阿里云实际尝试部署的时候,还是遇到了一些坑,记录一下。

一、版本说明

系统版本:Alibaba Cloud Linux 3.2104 LTS 64位

Ruby版本:2.7.8

Rails版本:5.1.7

数据库版本:PostgreSQL 14.10

二、安装Gem

在项目目录下执行命令:

RAILS_ENV=production bundle install

因为用到了PostgreSQL,所以会用到一个叫pg的Gem,然后装到这个Gem就报错了。

一长串报错,里面的核心内容大概是这些:

……
checking for pg_config... no
checking for iibpq per pkg-config... no
Using libpq from
checking for libpq-fe.h... no
Can't find the'libpq-fe.h header
……
Unable to find PostgreSQL client library.
Please install libpq or postgresql client package like so:
    sudo apt install libpq-dev
    sudo yum install postgresql-devel
    sudo zypper in postgresql-devel
    sudo pacman -S postgresql-libs
……

看提示缺少支持的包,然后执行安装命令:

yum install postgresql-devel

跑完再试,发现还是不行,琢磨半天,发现要执行这句:

yum install postgresql14-devel

接着再试,不提示缺包了,但是pg_config还是找不到,这里改为手动安装pg,并指定数据库相关配置文件路径,比如我的安装路径是:

gem install pg -v 1.2.2 -- --with-pg-config=/usr/pgsql-14/bin/pg_config

安装成功后再bundle install就顺利完成了。

三、数据库迁移

执行命令:

RAILS_ENV=production rake db:migrate

又又报错了:

rake aborted!
ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime.
……

最省力的解决方法是装个nodejs:

yum install nodejs

然后再试就通过了。

四、预编译

执行命令:

RAILS_ENV=production rake assets:precompile

等待结束,终于没有再报错了。下一步就可以部署了。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值