本文介绍在Ubuntu 18.04上不用Docker,使用本地安装组件的方式搭建Rails+PostgreSQL开发环境的步骤。

搭建步骤

  1. 下载Ubuntu 18.04.3 TLS安装镜像,下载地址: https://ubuntu.com/download/desktop。安装完成后,登录系统,打开Terminal。
  2. 安装vim编辑器

    1
    sudo apt install vim
  3. 按照https://github.com/rvm/ubuntu_rvm的安装方法,安装rvm, 命令如下:

    1
    2
    3
    4
    5
    6
    7
    sudo apt install gnupg2
    gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
    sudo apt-get install software-properties-common
    sudo apt-add-repository -y ppa:rael-gc/rvm
    sudo apt-get update
    sudo apt-get install rvm
  4. rvm安装完毕后,为了每次登陆时自动load rvm,执行如下命令。

    1
    echo 'source "/etc/profile.d/rvm.sh"' >> ~/.bashrc
  5. 退出当前Terminal重新登陆,重新加载rvm环境变量

  6. 安装Ruby,此处以ruby 2.3.7为例

    1
    rvm install ruby-2.3.7

    国内访问官网源可能很慢,可以根据实际网速状况,来决定是否需要修改为使用ruby china的ruby源。

    1
    2
    3
    4
    5
    ## 修改系统级别的ruby源为ruby china, Ubuntu下rvm源的安装目录为/usr/share/rvm
    sudo echo "ruby_url=https://cache.ruby-china.com/pub/ruby" >> /usr/share/rvm/user/db
    ## 修改用户级别的ruby源
    echo "ruby_url=https://cache.ruby-china.org/pub/ruby" > ~/.rvm/user/db
  7. 安装Rails项目中可能需要的一些组件,按实际项目要求进行增减

    1
    sudo apt-get install memcached redis-server imagemagick ghostscript
  8. 安装PostgreSQL

    • 如果要安装PostgreSQL 10, 那么直接apt-get即可

      1
      sudo apt-get install postgresql postgresql-contrib libpq-dev
    • 如果要安装其他版本的PG,那么需要load官方的源来安装,如下以安装PostgreSQL 9.6为例。

      1
      2
      3
      4
      5
      6
      7
      sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
      wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
      sudo apt-get update
      # 检查确认postgresql-9.6在apt list中
      sudo apt list | grep -i postgre
      sudo apt-get install postgresql-9.6 postgresql-contrib-9.6 libpq-dev
  9. 设置PostgreSQL的密码。因为是开发环境,直接使用postgres账号也没关系。使用如下命令来设置postgres的密码。

    1
    2
    3
    sudo su - postgres
    psql
    ALTER USER postgres WITH PASSWORD 'password';
  10. Rails编译assets时,需要nodejs,使用如下命令安装nodejs

    1
    sudo apt install nodejs nodejs-dev
  11. 运行Rails。clone代码到对应目录,执行bundle install下载gem,rails s启动Rails。

禁止Ubuntu自动更新

Ubuntu Desktop默认会启动自动更新,国内网速不好的情况下,更新时间会比较长,此时apt会被lock住。再使用apt install命令会报unable to lock the administration directory (/var/lib/dpkg/) is another process using it的错误。
因此,建议关闭自动更新机制,有必要的话进行手动更新。

通过命令行方式来禁止

编辑apt自动更新文件/etc/apt/apt.conf.d/20auto-upgrades

1
sudo vim /etc/apt/apt.conf.d/20auto-upgrades

APT::Periodic::Update-Package-Lists的值从1变为0

1
APT::Periodic::Update-Package-Lists "1"; ==> APT::Periodic::Update-Package-Lists "0";

使用GUI的方式来禁止

在GUI界面中搜索Software & updates,找到软件和更新。
ubuntu_gui_search.png
打开更新tab,在自动检查更新下拉列表中选取从不
ubuntu_gui_software_update.png
输入密码,完成更新。

禁用apt-daily更新

禁用apt-daily的命令如下:

1
2
sudo systemctl disable apt-daily.service
sudo systemctl disable apt-daily.timer

Reference

留言