
macOS의 Ruby on Rails 응용 프로그램에서 PostgreSQL을 사용하는 방법
2022-06-01 last update
13 minutes reading Ruby Ruby on Rails Open Source PostgreSQL Databases소개
Ruby on Rails 웹 프레임워크를 사용할 때 응용 프로그램은 기본적으로 SQLite을 데이터베이스로 사용합니다.SQLite는 경량급이고 이식 가능하며 사용자 친화적인 관계 데이터베이스로 저메모리 환경에서 성능이 특히 좋아서 많은 상황에서 정상적으로 작동할 수 있다.그러나 더욱 신뢰할 수 있는 데이터 완전성과 프로그래밍 확장성이 필요한 고도로 복잡한 응용 프로그램에 대해 PostgreSQL 데이터베이스는 더욱 건장하고 유연한 선택이 될 것이다.Ruby-on-Rails 설정을 PostgreSQL을 사용하도록 설정하려면 시작하고 실행하기 위한 추가 절차를 수행해야 합니다.
이 강좌에서는 로컬 macOS 기기에 PostgreSQL 데이터베이스에 연결된 Ruby on Rails 개발 환경을 설정합니다.PostgreSQL을 설치하고 구성한 다음 데이터베이스 서버로 PostgreSQL을 사용하는 Rails 응용 프로그램을 만들어 설정을 테스트합니다.
선결 조건
이 강좌는 다음과 같은 내용을 필요로 합니다.
macOS가 설치된 컴퓨터나 가상 컴퓨터는 이 컴퓨터에 대한 관리 접근 권한과 인터넷 연결을 가지고 있다.이 강좌는 이미 macOS 10.14 Mojave에서 테스트를 진행하였다.
macOS 기기에 설치된 Ruby on Rails 개발 환경이 항목을 설정하려면 우리의 안내서(How To Install Ruby on Rails with rbenv on macOS)에 따라 조작하십시오.이 강좌는 Ruby의 2.6.3 버전과 Rails의 5.2.3 버전을 사용합니다.최신 버전에 대한 정보는 공식 사이트 Ruby과 Rails을 방문하십시오.
1단계 - PostgreSQL 설치
Ruby on Rails를 PostgreSQL을 사용하여 웹 응용 프로그램을 데이터베이스로 만들도록 구성하려면 먼저 데이터베이스를 컴퓨터에 설치해야 합니다.비록 many ways to install PostgreSQL on macOS이 있지만, 본 강좌는 패키지 관리자 Homebrew을 사용할 것입니다.
다양한 버전의 PostgreSQL을 설치할 수 있는 자체 제작 패키지가 여러 개 있습니다.최신 버전을 설치하려면 다음 명령을 실행합니다.
- brew install postgresql
특정 버전의 PostgreSQL을 다운로드하려면 이전 명령의 postgresql
을 원하는 패키지로 교체하십시오.Homebrew website에서 사용 가능한 패키지를 찾을 수 있습니다.다음
PATH
변수에 PostgreSQL 바이너리 파일이 포함되어 PostgreSQL 명령행 도구에 액세스하여 10
을 사용 중인 버전 번호로 교체해야 합니다.- echo 'export PATH="/usr/local/opt/[email protected]10/bin:$PATH"' >> ~/.bash_profile
그런 다음 ~/.bash_profile
파일에 대한 변경 사항을 현재 셸 세션에 적용합니다.- source ~/.bash_profile
서비스를 시작하고 로그인할 때 시작하려면 다음과 같이 하십시오.- brew services start [email protected]10
설치가 성공했는지 확인합니다.- postgres -V
다음 출력을 얻을 수 있습니다.Outputpostgres (PostgreSQL) 10.9
PostgreSQL을 설치한 후 다음 단계는 역할을 만드는 것입니다. Rails 응용 프로그램은 나중에 이 역할을 사용하여 데이터베이스를 만들 것입니다.2단계 - 응용 프로그램의 데이터베이스 역할 만들기
PostgreSQL에서는 역할을 사용하여 권한 및 권한 부여를 구성할 수 있습니다.자체 제작 소프트웨어를 사용하여 PostgreSQL을 시작하면 macOS 사용자 이름을 사용하여 수퍼유저 역할을 자동으로 만듭니다.이러한 수퍼유저 권한을 Rails 응용 프로그램에 사용되는 데이터베이스 인스턴스와 분리하기 위해 이 단계에서 액세스 권한이 적은 새 역할을 만듭니다.
새 역할을 만들려면 다음 명령을 실행하여
appname
을 역할에 지정할 이름으로 바꿉니다.- createuser -P -d appname
이 명령에서 createuser
을 사용하여 appname
이라는 캐릭터를 만들었습니다.-d
로고는 캐릭터에게 새 데이터베이스를 만들 수 있는 권한을 부여합니다.-P
플래그도 지정했습니다. 이것은 새로운 캐릭터의 비밀번호를 입력하라는 메시지가 표시됩니다.다음 단계에서 프로필에 사용할 수 있도록 필요한 암호를 입력하십시오.-P
플래그를 사용하지 않고 캐릭터를 만든 후 암호를 설정하려면 다음 명령을 사용하여 PostgreSQL 콘솔에 들어가십시오.- psql postgres
다음 출력과 PostgreSQL 콘솔 프롬프트가 표시됩니다.Outputpsql (10.9)
Type "help" for help.
postgres=#
PostgreSQL 콘솔은 postgres=#
프롬프트로 표시됩니다.PostgreSQL 프롬프트에서 다음 명령을 입력하여 새 데이터베이스 역할에 대한 암호를 설정하고 강조 표시된 이름을 만든 이름으로 바꿉니다.- \password appname
PostgreSQL에서 암호를 입력하라는 메시지가 표시됩니다.프롬프트에서 필요한 암호를 입력하고 확인합니다.이제 다음 명령을 입력하여 PostgreSQL 콘솔을 종료합니다.
- \q
일반적인 알림이 다시 나타납니다.이 단계에서 응용 프로그램에 새 PostgreSQL 역할을 만들었지만 수퍼유저 권한이 없습니다.이제 이 역할을 사용하여 데이터베이스를 만드는 새 Rails 응용 프로그램을 만들 수 있습니다.
3단계 - 새 Rails 응용 프로그램 만들기
PostgreSQL에 대한 역할을 구성한 후 데이터베이스로 PostgreSQL을 사용하도록 설정된 새 Rails 응용 프로그램을 만들 수 있습니다.
먼저 홈 디렉토리로 이동합니다.
- cd ~
이 디렉토리에 appname
을 호출하려는 응용 프로그램으로 대체하는 새 Rails 응용 프로그램을 만듭니다.- rails new appname -d=postgresql
-d=postgresql
옵션은 PostgreSQL을 데이터베이스로 설정합니다.이 명령을 실행하면
appname
이라는 새 폴더가 기본 Rails 응용 프로그램의 모든 요소를 포함하는 홈 디렉토리에 표시됩니다.다음은 응용 프로그램의 디렉터리로 이동합니다.
- cd appname
이제 새 Rails 응용 프로그램을 만들었고 프로젝트의 루트 디렉터리로 이동했습니다. Rails 응용 프로그램에서 PostgreSQL 데이터베이스를 설정하고 만들 수 있습니다.단계 4 - 데이터베이스 구성 및 생성
응용 프로그램에
development
및 test
데이터베이스를 만들 때 Rails는 2단계에서 만든 PostgreSQL 역할을 사용합니다.Rails에서 이러한 데이터베이스를 만들 수 있도록 프로젝트의 데이터베이스 구성 파일을 변경합니다.그런 다음 데이터베이스를 만듭니다.Rails 응용 프로그램에서 수행할 구성 변경 사항 중 하나는 이전에 만든 PostgreSQL 역할에 암호를 추가하는 것입니다.암호 등 민감한 정보의 안전을 확보하기 위해서는 환경 변수에 저장하는 것이 좋고, 프로필에 직접 쓰지 않는 것이 좋다.
로그인할 때 암호를 환경 변수에 저장하려면 다음 명령을 실행하여
APPNAME
을 응용 프로그램 이름으로 바꾸고 PostgreSQL_Role_Password
을 마지막으로 만든 암호로 교체하십시오.- echo 'export APPNAME_DATABASE_PASSWORD="PostgreSQL_Role_Password"' >> ~/.bash_profile
이 명령은 로그인할 때 환경 변수를 설정하기 위해 export
명령을 ~/.bash_profile
파일에 기록합니다.현재 세션에 변수를 내보내려면
source
명령을 사용합니다.- source ~/.bash_profile
이제 환경에 암호를 저장했으니 프로필을 변경할 때가 되었습니다.기본 텍스트 편집기에서 응용 프로그램의 데이터베이스 프로필을 엽니다.이 강좌는
nano
을 사용합니다.- 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: appname
password: <%= ENV['APPNAME_DATABASE_PASSWORD'] %>
development:
<<: *default
database: appname_development
...
그러면 Rails 응용 프로그램에서 올바른 역할과 암호를 사용하여 데이터베이스를 실행할 수 있습니다.CTRL+X
, Y
을 누르고 ENTER
을 누르면 저장하고 종료합니다.Rails에서 데이터베이스 구성에 대한 자세한 내용은 Rails documentation을 참조하십시오.
config/database.yml
을 변경했습니다. rails
명령을 사용하여 응용 프로그램의 데이터베이스를 만듭니다.- rails db:create
Rails에서 데이터베이스를 만들면 다음과 같은 출력이 표시됩니다.OutputCreated database 'appname_development'
Created database 'appname_test'
출력과 같이 이 명령은 PostgreSQL 서버에 development
과 test
데이터베이스를 만들었습니다.현재 Rails 응용 프로그램에 PostgreSQL 데이터베이스가 연결되어 있습니다.응용 프로그램이 정상적으로 작동하는지 확인하기 위해서 다음 단계는 테스트 설정입니다.
단계 5 - 구성 테스트
응용 프로그램이 PostgreSQL 데이터베이스를 사용할 수 있는지 테스트하려면 웹 응용 프로그램을 실행하여 브라우저에 표시하십시오.
우선, Rails의 내장 웹 서버 Puma을 사용하여 응용 프로그램에 서비스를 제공합니다.이 웹 서버는 추가 설정 없이 자동으로 Rails를 제공합니다.응용 프로그램에 서비스를 제공하려면 다음 명령을 실행하십시오.
- 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
에 요청을 보냅니다.- 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-darwin18)
</p>
</section>
</div>
</body>
</html>
다음 사이트를 방문하여 로컬 웹 브라우저에서 Rails 응용 프로그램에 액세스할 수도 있습니다.http://127.0.0.1:3000
이 URL에서 Ruby on Rails 시작 페이지를 볼 수 있습니다.
이것은 응용 프로그램이 PostgreSQL 데이터베이스에 올바르게 구성되어 연결되었다는 것을 의미합니다.
결론
이 강좌에서 로컬 macOS 기기에서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을 찾아보십시오.