CentOS7のRubyonRailsアプリケーションでPostgreSQLを使用する方法
序章
Ruby on Railsはデフォルトのデータベースとしてsqlite3を使用します。これは多くの場合うまく機能しますが、アプリケーションには不十分な場合があります。 アプリケーションで、PostgreSQLやMySQLなどのクライアント/サーバーSQLデータベースのスケーラビリティ、集中化、および制御(またはその他の機能)が必要な場合は、アプリケーションを起動するためにいくつかの追加手順を実行する必要があります。と実行しています。
このチュートリアルでは、CentOS7またはRHELサーバー上でアプリケーションがPostgreSQLデータベースを使用できるようにする開発用RubyonRails環境をセットアップする方法を示します。 最初に、PostgreSQLをインストールして構成する方法について説明します。 次に、データベースサーバーとしてPostgreSQLを使用するRailsアプリケーションを作成する方法を示します。
前提条件
このチュートリアルでは、RubyonRails開発環境が機能している必要があります。 まだお持ちでない場合は、次のリンクのチュートリアルに従ってください: CentOS7でrbenvを使用してRubyonRailsをインストールする方法。
また、PostgreSQLデータベースソフトウェアをインストールできるように、スーパーユーザーまたはsudo
アカウントにアクセスできる必要があります。
このガイドでは、SELinuxが無効になっていることも前提としています。
準備ができたら、PostgreSQLをインストールしましょう。
PostgreSQLをインストールする
PostgreSQLをまだインストールしていない場合は、今すぐインストールしましょう。
まだ行っていない場合は、次のコマンドを使用してEPELリポジトリをyumに追加します。
- sudo yum install epel-release
PostgreSQLサーバーとその開発ライブラリをインストールします。
- sudo yum install postgresql-server postgresql-contrib postgresql-devel
PostgreSQLはインストールされていますが、基本的な構成を行う必要があります。
新しいPostgreSQLデータベースクラスターを作成します。
- sudo postgresql-setup initdb
デフォルトでは、PostgreSQLはパスワード認証を許可していません。 ホストベースの認証構成を編集して、これを変更します。
お気に入りのテキストエディタでHBA構成を開きます。 viを使用します:
- sudo vi /var/lib/pgsql/data/pg_hba.conf
ファイルの下部近くにある次のような行を見つけます。
host all all 127.0.0.1/32 ident
host all all ::1/128 ident
次に、「ident」を「md5」に置き換えて、次のようにします。
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
保存して終了。 これで、PostgreSQLはパスワード認証を許可するように構成されました。
次に、PostgreSQLを起動して有効にします。
- sudo systemctl start postgresql
- sudo systemctl enable postgresql
これでPostgreSQLがインストールされましたが、Railsアプリケーションが使用する新しいデータベースユーザーを作成する必要があります。
データベースユーザーの作成
まず、postgres
システムユーザーに変更します。
- sudo su - postgres
このコマンドを使用してPostgreSQLスーパーユーザーユーザーを作成します(強調表示された単語を独自のユーザー名に置き換えます)。
- createuser -s pguser
データベースユーザーのパスワードを設定するには、次のコマンドでPostgreSQLコンソールに入ります。
- psql
PostgreSQLコンソールは、postgres=#
プロンプトで示されます。 PostgreSQLプロンプトで、次のコマンドを入力して、作成したデータベースユーザーのパスワードを設定します。
- \password pguser
プロンプトで希望のパスワードを入力し、確認します。
これで、次のコマンドを入力してPostgreSQLコンソールを終了できます。
- \q
PostgreSQLユーザーが設定されたので、通常のユーザーに切り替えます。
- exit
それでは、Railsアプリケーションを作成しましょう。
新しいRailsアプリケーションを作成する
ホームディレクトリに新しいRailsアプリケーションを作成します。 -d postgresql
オプションを使用してPostgreSQLをデータベースとして設定し、強調表示された単語をアプリケーション名に置き換えてください。
- cd ~
- rails new appname -d postgresql
次に、アプリケーションのディレクトリに移動します。
- cd appname
次のステップは、アプリケーションのデータベース接続を構成することです。
データベース接続の構成
作成したPostgreSQLユーザーは、アプリケーションのテストおよび開発データベースを作成するために使用されます。 アプリケーションに適切なデータベース設定を構成する必要があります。
アプリケーションのデータベース構成ファイルをお気に入りのテキストエディターで開きます。 viを使用します:
- vi config/database.yml
default
セクションで、「pool:5」という行を見つけ、その下に次の行を追加します。 次のようになります(強調表示された部分をPostgreSQLユーザーとパスワードに置き換えます)。
host: localhost
username: pguser
password: pguser_password
保存して終了。
アプリケーションデータベースを作成する
次のrakeコマンドを使用して、アプリケーションのdevelopment
およびtest
データベースを作成します。
- rake db:create
これにより、PostgreSQLサーバーに2つのデータベースが作成されます。 たとえば、アプリケーションの名前が「appname」の場合、「appname_development」および「appname_test」というデータベースが作成されます。
この時点でエラーが発生した場合は、前のサブセクション(データベース接続の構成)に戻って、database.yml
のhost
、username
、およびpassword
を確認してください。 ] は正しい。 データベース情報が正しいことを確認した後、アプリケーションデータベースの作成を再試行してください。
テスト構成
アプリケーションがPostgreSQLデータベースを使用できることをテストする最も簡単な方法は、それを実行することです。
たとえば、開発環境(デフォルト)を実行するには、次のコマンドを使用します。
- rails server
これにより、ローカルホストのポート3000でRailsアプリケーションが起動します。
Railsアプリケーションがリモートサーバー上にあり、Webブラウザーを介してアクセスしたい場合、簡単な方法は、サーバーのパブリックIPアドレスにバインドすることです。 まず、サーバーのパブリックIPアドレスを検索し、次のようにrails server
コマンドで使用します。
- rails server --binding=server_public_IP
これで、ポート3000のサーバーのパブリックIPアドレスを介してWebブラウザーでRailsアプリケーションにアクセスできるようになります。
http://server_public_IP:3000
「Welcomeaboard」のRubyonRailsページが表示されている場合は、アプリケーションが適切に構成されており、PostgreSQLデータベースに接続されています。
結論
これで、CentOS 7で、データベースとしてPostgreSQLを使用して、RubyonRailsアプリケーションで開発を開始する準備が整いました。
幸運を!