Rails6 on Heroku
15608 단어 경 6RailsPostgreSQLcentos7루비
목적
업무로 Web계 언어에 접하는 것이 적고, 위기감을 느끼는 오늘 요즘이므로, Web계 언어의 환경 구축~공개까지 해 보았습니다. Salesforce 이슈에서 사용 빈도가 높은 Heroku를 공개처로 하고 다소 꼬인 적이 있는 Ruby를 배포합니다.
전제
절차
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의
METHOD
를 md5
로 변경합니다.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
Reference
이 문제에 관하여(Rails6 on Heroku), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sikj/items/23a854f0f7cddc3fa5e7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)