Rails6 on Heroku

목적



업무로 Web계 언어에 접하는 것이 적고, 위기감을 느끼는 오늘 요즘이므로, Web계 언어의 환경 구축~공개까지 해 보았습니다. Salesforce 이슈에서 사용 빈도가 높은 Heroku를 공개처로 하고 다소 꼬인 적이 있는 Ruby를 배포합니다.

전제


  • 호스트 OS
  • macOS Mojave 10.14.6

  • 게스트 OS
  • CentOS Linux release 7.6.1810 (Core)

  • VirtualBox 6.0.10
  • Vagrant 2.2.5
  • PostgreSQL10 (로컬)
  • Ruby 2.6.3
  • Rails 6.0.0

  • 절차



    1. vagrant up


    $ mkdir centos7
    $ cd centos7
    $ vagrant init centos/7
    

    Vagrantfile을 다음과 같이 편집합니다.

    Vagrantfile
    # ... 略
    
    config.vm.network "private_network", ip: "192.168.33.14"
    
    # ... 略
    
    $ vagrant up
    $ vagrant ssh
    [vagrant@localhost ~]$
    

    2. Ruby on Rails 환경 구축



    1. git 설치


    $ sudo yum -y install git
    $ git --version
    git version 1.8.3.1
    

    2. nodejs 및 yarn 설치



    webpacker를 설치할 때 사용합니다.
    $ curl -sL https://rpm.nodesource.com/setup_8.x | sudo bash -
    $ sudo yum -y install nodejs
    $ node -v
    v8.16.2
    
    $ sudo yum -y install wget
    $ sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
    $ sudo yum -y install yarn
    $ yarn -v
    1.19.1
    

    3. 기타 필요한 패키지로 설치


    $ sudo yum -y install gcc make openssl-devel readline-devel
    

    4. rbenv 설치


    $ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
    $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
    $ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
    $ source ~/.bash_profile
    

    5. ruby-build 설치


    $ mkdir -p "$(rbenv root)"/plugins
    $ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-$build
    

    6. 루비 설치


    $ rbenv install 2.6.3
    $ rbenv global 2.6.3
    $ ruby -v
    ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
    

    7. postgresql 설정



    1. postgresql10 설치
    $ sudo yum -y localinstall https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
    $ sudo yum -y install postgresql10-server
    $ /usr/pgsql-10/bin/postgres --version
    postgres (PostgreSQL) 10.10
    

    2. 초기화/자동 기동 설정
    $ sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
    $ sudo systemctl enable postgresql-10
    $ sudo systemctl start postgresql-10
    $ systemctl status postgresql-10
    

    3. 연결 사용자 생성

    postgresql 설치 중에 생성된 OS 사용자( postgres )에서 postgresql에 로그인합니다.
    $ sudo -u postgres psql -U postgres
    

    사용자 이름: mymemo , 암호: mymemopwd , superuser 권한이 있는 사용자를 만듭니다.
    -- 接続ユーザ作成
    postgres=# create role mymemo with superuser login password 'mymemopwd';
    CREATE ROLE
    
    -- 接続ユーザ確認
    postgres=# \du
                                       List of roles
     Role name |                         Attributes                         | Member
     of 
    -----------+------------------------------------------------------------+-------
    ----
     mymemo    | Superuser                                                  | {}
     postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
    
    -- postgresからログアウト
    postgres=# \q
    

    4. 사용자 인증 변경
    $ sudo vi /var/lib/pgsql/10/data/pg_hba.conf
    

    다음과 같이 pg_hba.conf의 METHODmd5로 변경합니다.

    pg_hba.conf
    # ... 略
    
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    
    # "local" is for Unix domain socket connections only
    local   all             all                                     md5
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            md5
    # IPv6 local connections:
    host    all             all             ::1/128                 md5
    # Allow replication connections from localhost, by a user with the
    # replication privilege.
    local   replication     all                                     md5
    host    replication     all             127.0.0.1/32            md5
    host    replication     all             ::1/128                 md5
    

    변경 후 다시 시작합니다.
    $ sudo systemctl restart postgresql-10
    

    8. Rails 설치 및 소통 확인



    1. Rails 설치
    $ gem install rails
    $ rails --version
    Rails 6.0.0
    

    2. 앱 만들기
    $ sudo yum -y install postgresql-devel
    $ gem install pg -v '1.1.4'
    $ rails new mymemo -d postgresql
    $ cd mymemo/
    

    3. 데이터베이스 설정
    $ sudo vi config/database.yml
    

    database.yml에 7-3단계에서 만든 연결 사용자의 사용자 이름과 암호를 설정합니다.

    database.yml
    default: &default
      adapter: postgresql
      encoding: unicode
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
    # 手順7-3で作成した接続ユーザのユーザ名とパスワードを設定する
      username: mymemo
      password: mymemopwd
    
    development:
      <<: *default
      database: mymemo_development
    
    test:
      <<: *default
      database: mymemo_test
    
    production:
      <<: *default
      database: mymemo_production
    

    4. 데이터베이스 생성
    $ rails db:create
    Created database 'mymemo_development'
    Created database 'mymemo_test'
    

    5. 소통 확인
    $ bundle exec rails webpacker:install
    $ bundle exec rails s -b 192.168.33.14
    

    주소 표시줄에 192.168.33.14:3000를 입력합니다.



    6. scaffold

    Yay! You're on Rails! 그렇다면, 그래서 scaffold합니다. .
    $ bundle exec rails g scaffold Memo title:string body:text
    $ rake db:migrate 
    $ bundle exec rails s -b 192.168.33.14
    

    주소 표시줄에 192.168.33.14:3000/memos를 입력합니다.



    3. Heroku Push



    1. Heroku CLI 설치


    $ su -
    $ curl https://cli-assets.heroku.com/install.sh | sh
    $ exit
    $ heroku -v
    heroku/7.33.3 linux-x64 node-v11.14.0
    

    2. 데이터베이스 설정 변경


    $ sudo vi config/database.yml
    

    Heroku의 postgres를 참조하도록 편집합니다.

    database.yml
    
    # ... 省略
    
    production:
      <<: *default
      # database: mymemo_production
      url: <%= ENV['DATABASE_URL'] %>
    

    3. Gemfile 편집 및 bundle install


    $ vi Gemfile
    

    rails_12factor를 끝에 추가합니다.

    Gemfile
    
    # ... 省略
    
    gem 'rails_12factor', group: :production
    

    Gemfile.lock을 업데이트합니다.
    $ bundle install
    

    4. Procfile 작성


    $ vi Procfile
    

    Procfile
    web: bundle exec rails server -p $PORT
    

    5. Heroku Push


    $ heroku login -i
    Logged in as [email protected]
    
    $ heroku create
    $ git add .
    $ git commit -m "initial commit"
    $ git push heroku master
    $ heroku run rake db:migrate
    

    6. 앱에 액세스


    $ heroku apps:info
    
    === [herokuが生成したアプリ名]
    Addons:         heroku-postgresql:hobby-dev
    Auto Cert Mgmt: false
    Dynos:          web: 1
    Git URL:        https://git.heroku.com/[herokuが生成したアプリ名].git
    Owner:          [email protected]
    Region:         us
    Repo Size:      155 KB
    Slug Size:      58 MB
    Stack:          heroku-18
    Web URL:        https://[herokuが生成したアプリ名].herokuapp.com/
    
    https://[herokuが生成したアプリ名].herokuapp.com/memos

    7. PG Commander로 데이터 등록 확인



    여러 개의 데이터를 등록한 후 PG Commander에서 postgres에 연결하고 확인합니다.



    요약



    환경 구축이 힘들었습니다. 어리석은 부분이 상당히 있으므로 계속 공부하기로 합니다.

    참고 사이트



    h tps://우우 bぁ보. 미안해. 네 t / 포 stg 레 sql10-sent s7-in s tai l /
    htps : // 코 m / 이소 타이 / ms / 67 바 fc37 아 16 에 5에서 5 에 3b

    좋은 웹페이지 즐겨찾기