웹사이트 검색

Ubuntu 20.04에서 Ruby on Rails 애플리케이션과 함께 PostgreSQL을 사용하는 방법


소개

PostgreSQL 데이터베이스를 사용할 때 보다 강력하고 유연한 선택이 될 것입니다. PostgreSQL을 사용하도록 Ruby on Rails 설정을 구성하려면 추가 단계를 수행해야 합니다.

이 튜토리얼에서는 Ubuntu 20.04 서버의 PostgreSQL 데이터베이스에 연결된 Ruby on Rails 개발 환경을 설정합니다. PostgreSQL을 설치 및 구성한 다음 PostgreSQL을 데이터베이스 서버로 사용하는 Rails 애플리케이션을 생성하여 설정을 테스트합니다.

전제 조건

이 자습서에는 다음이 필요합니다.

  • Ubuntu 20.04용 초기 서버 설정 가이드에 따라 설정된 Ubuntu 20.04 서버에는 sudo 권한과 방화벽이 있는 루트가 아닌 사용자가 포함됩니다.\n
  • Ubuntu 20.04 서버에 설치된 Ruby on Rails 개발 환경. 이를 설정하려면 Rails를 따르십시오.\n

1단계 – PostgreSQL 설치

웹 애플리케이션용 데이터베이스로 PostgreSQL을 사용하는 Ruby on Rails를 구성하려면 먼저 서버에 데이터베이스를 설치합니다.

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에서 사용자가 할 수 있는 것과 같은 방식으로 권한과 인증을 구성할 수 있습니다. 이 단계에서는 Linux 사용자 이름에 대해 PostgreSQL 시스템 내에서 데이터베이스를 생성하고 구성할 수 있는 새로운 슈퍼 사용자 역할을 생성합니다.

PostgreSQL 슈퍼 사용자 역할을 생성하려면 다음 명령을 실행하여 강조 표시된 단어를 Ubuntu 20.04 사용자 이름으로 대체합니다.

  1. sudo -u postgres createuser -s sammy -P

-P 플래그를 지정했으므로 새 역할에 대한 암호를 입력하라는 메시지가 표시됩니다. 원하는 암호를 입력하고 나중에 구성 파일에서 사용할 수 있도록 기록해 두십시오.

createuser를 사용하여 sammy(또는 원하는 사용자 이름)라는 역할을 만듭니다. -s 플래그는 이 사용자에게 슈퍼 유저 권한을 부여하고, sudo -u는 자동으로 생성된 postgres 계정에서 명령을 실행할 수 있도록 합니다. PostgreSQL 설치 시.

참고: Ubuntu에서 PostgreSQL의 인증 모드는 ident로 시작하므로 기본적으로 Ubuntu 사용자는 동일한 이름의 역할로만 PostgreSQL에서 작업할 수 있습니다. 자세한 내용은 인증에 대한 PostgreSQL 공식 문서를 확인하세요.

-P 플래그를 사용하지 않았고 역할을 생성한 후 암호를 설정하려면 다음 명령을 사용하여 PostgreSQL 콘솔에 들어갑니다.

  1. sudo -u postgres psql

PostgreSQL 콘솔에 대한 프롬프트와 함께 다음 출력이 표시됩니다.

Output
psql (12.12 (Ubuntu 12.12-0ubuntu0.20.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 ~

이 디렉토리에 새 Rails 애플리케이션을 생성하고 appname을 원하는 앱 이름으로 바꿉니다.

  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 } %>라고 표시된 줄을 찾아 다음 강조 표시된 줄을 추가합니다. 자격 증명 및 생성한 환경 변수에 다음과 같아야 합니다.

...
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 설명서를 참조하십시오.

이제 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을 사용하여 다음을 지정하는 것이 더 안전합니다. <코드>로컬 호스트. 기본적으로 애플리케이션은 포트 3000에서 수신 대기합니다.

Rails 앱이 실행되면 명령 프롬프트가 사라지고 다음 출력으로 대체됩니다.

Output
=> Booting Puma => Rails 7.0.4 application starting in development => Run `bin/rails server --help` for more startup options Puma starting in single mode... * Puma Version 5.6.5 (ruby 3.1.2-p20) ("Birdie's Version") * 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> 7.0.4<br /> <strong>Ruby version:</strong> 3.1.2 (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

결론

이 자습서에서는 PostgreSQL을 Ubuntu 20.04 서버의 데이터베이스로 사용하도록 구성된 Ruby on Rails 웹 애플리케이션을 만들었습니다. Ruby 프로그래밍 언어에 대해 자세히 알아보려면 Ruby로 코딩하는 방법 시리즈를 확인하십시오.

애플리케이션용 데이터베이스 선택에 대한 자세한 내용은 관리형 데이터베이스 제품의 차이점과 사용 사례에 대한 자습서를 확인하십시오.