Ubuntu 18.04의 Ruby on Rails 응용 프로그램에서 PostgreSQL을 사용하는 방법

Ubuntu 18.04의 Ruby on Rails 응용 프로그램에서 PostgreSQL을 사용하는 방법

소개


Ruby on Rails 웹 프레임워크를 사용할 때 응용 프로그램은 기본적으로 SQLite을 데이터베이스로 사용합니다.SQLite는 경량급이고 이식 가능하며 사용자 친화적인 관계 데이터베이스로 저메모리 환경에서 성능이 특히 좋아서 많은 상황에서 정상적으로 작동할 수 있다.그러나 더욱 신뢰할 수 있는 데이터 완전성과 프로그래밍 확장성이 필요한 고도로 복잡한 응용 프로그램에 대해 PostgreSQL 데이터베이스는 더욱 건장하고 유연한 선택이 될 것이다.Ruby-on-Rails 설정을 PostgreSQL을 사용하도록 설정하려면 시작하고 실행하기 위한 추가 절차를 수행해야 합니다.
이 강좌에서는 Ubuntu 18.04 서버에 PostgreSQL 데이터베이스에 연결된 Ruby on Rails 개발 환경을 설정합니다.PostgreSQL을 설치하고 구성한 다음 데이터베이스 서버로 PostgreSQL을 사용하는 Rails 응용 프로그램을 만들어 설정을 테스트합니다.

선결 조건


이 강좌는 다음과 같은 내용을 필요로 합니다.

  • Initial Server Setup Guide for Ubuntu 18.04에 설정된 Ubuntu 18.04 서버를 따릅니다. sudo 권한이 있는 비root 사용자와 방화벽을 포함합니다.

  • Ubuntu 18.04 서버에 설치된 Ruby on Rails 개발 환경이 항목을 설정하려면 우리의 안내서(How to Install Ruby on Rails with rbenv on Ubuntu 18.04)에 따라 조작하십시오.이 강좌는 Ruby의 2.6.3 버전과 Rails의 5.2.3 버전을 사용합니다.최신 버전에 대한 정보는 공식 사이트 RubyRails을 방문하십시오.
  • 1단계 – PostgreSQL 설치


    Ruby on Rails를 PostgreSQL을 사용하여 웹 응용 프로그램을 데이터베이스로 만들도록 구성하려면 먼저 서버에 데이터베이스를 설치해야 합니다.sudo 사용 권한을 사용하여 저장소를 최신 상태로 저장하기 위해 APT 패키지 인덱스를 업데이트합니다.
    1. sudo apt update
    그런 다음 PostgreSQL 및 개발 라이브러리를 설치합니다.
    1. sudo apt install postgresql postgresql-contrib libpq-dev
    이전 명령에서 postgresql 패키지는 PostgreSQL 메인 프로그램을 포함하고 postgresql-contrib 은 그 기능을 확장하는 PostgreSQL 기능을 몇 개 추가했습니다.libpq-dev은 PostgreSQL 라이브러리로 클라이언트가 백엔드 서버에서 조회와 응답을 보낼 수 있도록 하고 응용 프로그램과 데이터베이스 통신을 허용한다.
    PostgreSQL과 종속 항목을 설치한 후 다음 단계는 역할을 만드는 것입니다. Rails 응용 프로그램은 나중에 이 역할을 사용하여 데이터베이스를 만들 것입니다.

    2단계 – 새 데이터베이스 역할 만들기


    PostgreSQL에서는 Linux의 사용자처럼 역할을 사용하여 권한과 권한을 구성할 수 있습니다.이 단계에서는 PostgreSQL 시스템에서 데이터베이스를 만들고 구성할 수 있도록 Linux 사용자 이름을 위한 새로운 수퍼유저 역할을 만드는 방법을 보여 줍니다.
    PostgreSQL 수퍼유저 역할을 만들려면 다음 명령을 사용하여 강조 표시된 단어를 Ubuntu 18.04 사용자 이름으로 바꿉니다.
    1. sudo -u postgres createuser -s sammy -P
    -P 플래그를 지정했기 때문에 새 역할에 대한 암호를 입력하라는 메시지가 표시됩니다.다음 단계에서 프로필에 사용할 수 있도록 필요한 암호를 입력하십시오.
    이 명령에서 createuser을 사용하여 sammy이라는 캐릭터를 만들었습니다.-s은 이 사용자에게 수퍼유저 권한을 부여합니다. sudo -u은 PostgreSQL을 설치할 때 자동으로 생성된 postgres 계정에서 명령을 실행할 수 있도록 합니다.
    참고: Ubuntu 18.04에서 PostgreSQL의 인증 모드가 ident으로 시작되었기 때문에 기본적으로 Ubuntu 사용자는 같은 이름의 역할을 가진 PostgreSQL에서만 조작할 수 있습니다.자세한 내용은 PostgreSQL official documentation on authentication을 참조하십시오.-P 플래그를 사용하지 않고 캐릭터를 만든 후 암호를 설정하려면 다음 명령을 사용하여 PostgreSQL 콘솔에 들어가십시오.
    1. sudo -u postgres psql
    다음 출력과 PostgreSQL 콘솔 프롬프트가 표시됩니다.
    Output
    psql (10.9 (Ubuntu 10.9-0ubuntu0.18.04.1)) Type "help" for help. postgres=#
    PostgreSQL 콘솔은 postgres=# 프롬프트로 표시됩니다.PostgreSQL 프롬프트에서 다음 명령을 입력하여 새 데이터베이스 역할에 대한 암호를 설정하고 강조 표시된 이름을 만든 이름으로 바꿉니다.
    1. \password sammy
    PostgreSQL에서 암호를 입력하라는 메시지가 표시됩니다.프롬프트에서 필요한 암호를 입력하고 확인합니다.
    이제 다음 명령을 입력하여 PostgreSQL 콘솔을 종료합니다.
    1. \q
    일반적인 알림이 다시 나타납니다.
    이 단계에서 수퍼유저 권한이 있는 새 PostgreSQL 역할을 만들었습니다.이제 이 역할을 사용하여 데이터베이스를 만드는 새 Rails 응용 프로그램을 만들 수 있습니다.

    3단계 – 새 Rails 응용 프로그램 만들기


    PostgreSQL에 대한 역할을 구성하여 데이터베이스로 PostgreSQL을 사용하도록 설정된 새 Rails 응용 프로그램을 만들 수 있습니다.
    먼저 홈 디렉토리로 이동합니다.
    1. cd ~
    이 디렉토리에 appname을 호출하려는 응용 프로그램으로 대체하는 새 Rails 응용 프로그램을 만듭니다.
    1. rails new appname -d=postgresql
    -d=postgresql 옵션은 PostgreSQL을 데이터베이스로 설정합니다.
    이 명령을 실행하면 appname이라는 새 폴더가 기본 Rails 응용 프로그램의 모든 요소를 포함하는 홈 디렉토리에 표시됩니다.
    다음은 응용 프로그램의 디렉터리로 이동합니다.
    1. cd appname
    이제 새 Rails 응용 프로그램을 만들었고 프로젝트의 루트 디렉터리로 이동했습니다. Rails 응용 프로그램에서 PostgreSQL 데이터베이스를 설정하고 만들 수 있습니다.

    4단계 – 데이터베이스 구성 및 생성


    응용 프로그램에 developmenttest 데이터베이스를 만들 때 Rails는 Ubuntu 사용자 이름을 위한 PostgreSQL 역할을 사용합니다.Rails에서 이러한 데이터베이스를 만들 수 있도록 프로젝트의 데이터베이스 구성 파일을 변경합니다.그런 다음 데이터베이스를 만듭니다.
    Rails 응용 프로그램에서 수행할 구성 변경 사항 중 하나는 이전에 만든 PostgreSQL 역할에 암호를 추가하는 것입니다.암호 등 민감한 정보의 안전을 확보하기 위해서는 환경 변수에 저장하는 것이 좋고, 프로필에 직접 쓰지 않는 것이 좋다.
    로그인할 때 암호를 환경 변수에 저장하려면 다음 명령을 실행하여 APPNAME을 응용 프로그램 이름으로 바꾸고 PostgreSQL_Role_Password을 마지막으로 만든 암호로 교체하십시오.
    1. echo 'export APPNAME_DATABASE_PASSWORD="PostgreSQL_Role_Password"' >> ~/.bashrc
    이 명령은 로그인할 때 환경 변수를 설정하기 위해 export 명령을 ~/.bashrc 파일에 기록합니다.
    현재 세션에 변수를 내보내려면 source 명령을 사용합니다.
    1. source ~/.bashrc
    이제 환경에 암호를 저장했으니 프로필을 변경할 때가 되었습니다.
    기본 텍스트 편집기에서 응용 프로그램의 데이터베이스 프로필을 엽니다.이 강좌는 nano을 사용합니다.
    1. nano config/database.yml
    default 섹션에서 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>을 표시하는 줄을 찾고 다음 강조 표시된 줄을 추가하여 인증서와 환경 변수를 기입하십시오.그래야 한다.
    구성/데이터베이스.yml 회사
    ...
    default: &default
      adapter: postgresql
      encoding: unicode
      # For details on connection pooling, see Rails configuration guide
      # http://guides.rubyonrails.org/configuring.html#database-pooling
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
      username: sammy
      password: <%= ENV['APPNAME_DATABASE_PASSWORD'] %>
    
    development:
      <<: *default
      database: appname_development
    ...
    
    그러면 Rails 응용 프로그램에서 올바른 역할과 암호를 사용하여 데이터베이스를 실행할 수 있습니다.CTRL+x, Y을 누르고 ENTER을 누르면 저장하고 종료합니다.
    Rails에서 데이터베이스 구성에 대한 자세한 내용은 Rails documentation을 참조하십시오.config/database.yml을 변경했습니다. rails 명령을 사용하여 응용 프로그램의 데이터베이스를 만듭니다.
    1. rails db:create
    Rails에서 데이터베이스를 만들면 다음과 같은 출력이 표시됩니다.
    Output
    Created database 'appname_development' Created database 'appname_test'
    출력과 같이 이 명령은 PostgreSQL 서버에 developmenttest 데이터베이스를 만들었습니다.
    현재 Rails 응용 프로그램에 PostgreSQL 데이터베이스가 연결되어 있습니다.응용 프로그램이 정상적으로 작동하는지 확인하기 위해서 다음 단계는 테스트 설정입니다.

    5단계 – 구성 테스트


    응용 프로그램이 PostgreSQL 데이터베이스를 사용할 수 있는지 테스트하려면 웹 응용 프로그램을 실행하여 브라우저에 표시하십시오.rails server 명령을 사용하여 Rails 응용 프로그램 Puma의 내장 웹 서버에서 웹 응용 프로그램을 실행합니다.
    1. rails server --binding=127.0.0.1
    --binding은 애플리케이션을 지정된 IP에 바인딩합니다.기본적으로 이 플래그는 Rails를 0.0.0.0으로 바인딩하지만 이는 Rails가 모든 인터페이스를 탐지한다는 것을 의미하기 때문에 127.0.0.1을 사용하여 localhost을 지정하는 것이 더 안전합니다.기본적으로 애플리케이션 스누핑 포트 3000.
    Rails 응용 프로그램이 실행되면 명령 프롬프트가 사라지고 다음 출력으로 바뀝니다.
    Output
    => Booting Puma => Rails 5.2.3 application starting in development => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.12.1 (ruby 2.6.3-p62), codename: Llamas in Pajamas * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://127.0.0.1:3000 Use Ctrl-C to stop
    응용 프로그램이 실행 중인지 테스트하려면 서버에서 새 터미널 창을 열고 curl 명령을 사용하여 127.0.0.1:3000에 요청을 보냅니다.
    1. curl http://127.0.0.1:3000
    다음과 같은 결과로 대량의 HTML 출력을 받게 됩니다.
    Output
    ... <strong>Rails version:</strong> 5.2.3<br /> <strong>Ruby version:</strong> 2.6.3 (x86_64-linux) </p> </section> </div> </body> </html>
    만약 Rails 응용 프로그램이 원격 서버에 있고 웹 브라우저를 통해 접근하기를 원한다면, 간단한 방법은 서버의 공공 IP 주소에 연결하는 것이다.먼저 방화벽에서 포트 3000을 엽니다.
    1. sudo ufw allow 3000
    다음은 서버의 공용 IP 주소를 찾습니다.이 작업은 다음 curl 명령을 실행하여 수행할 수 있습니다.
    1. curl http://icanhazip.com
    그러면 공용 IP 주소가 반환됩니다.이를 rails server 명령과 함께 사용하여 server_public_IP을 서버의 공용 IP로 대체합니다.
    1. rails server --binding=server_public_IP
    이제 다음 사이트를 방문하여 포트 3000의 서버 공용 IP 주소를 통해 로컬 웹 브라우저에서 Rails 응용 프로그램에 액세스할 수 있습니다.
    http://server_public_IP:3000
    
    이 URL에서 Ruby on Rails 시작 페이지를 볼 수 있습니다.

    이것은 응용 프로그램이 PostgreSQL 데이터베이스에 올바르게 구성되어 연결되었다는 것을 의미합니다.
    구성을 테스트한 후 포트 3000을 닫으려면 다음 명령을 사용하십시오.
    1. sudo ufw delete allow 3000

    결론


    이 강좌에서는 Ubuntu 18.04 서버에서 PostgreSQL을 데이터베이스로 사용하도록 구성된 Ruby on Rails 웹 응용 프로그램을 만들었습니다.루비 프로그래밍 언어에 대해 더 알고 싶으시면 저희 How To Code in Ruby series을 보십시오.
    응용 프로그램을 위한 데이터베이스 선택에 대한 더 많은 정보는 SQLite, PostgreSQL, and MySQL과 용례 간의 차이에 대한 강좌를 보십시오.데이터베이스 사용 방법에 대한 자세한 내용은 저희 An Introduction to Queries in PostgreSQL 기사를 참조하거나 Digital Ocean의 Managed Databases product을 찾아보십시오.