CentOS7のRubyonRailsアプリケーションでMySQLを使用する方法
序章
Ruby on Railsはデフォルトのデータベースとしてsqlite3を使用します。これは多くの場合うまく機能しますが、アプリケーションには不十分な場合があります。 アプリケーションで、PostgreSQLやMySQLなどのクライアント/サーバーSQLデータベースのスケーラビリティ、集中化、および制御(またはその他の機能)が必要な場合は、アプリケーションを起動するためにいくつかの追加手順を実行する必要があります。と実行しています。
このチュートリアルでは、CentOS7またはRHELサーバー上でアプリケーションがMySQLデータベースを使用できるようにする開発用RubyonRails環境をセットアップする方法を示します。 最初に、MySQLとMySQLアダプタgemをインストールする方法について説明します。 次に、MySQLをデータベースサーバーとして使用するRailsアプリケーションを作成する方法を示します。
前提条件
このチュートリアルでは、RubyonRails開発環境が機能している必要があります。 まだお持ちでない場合は、次のリンクのチュートリアルに従ってください: CentOS7でrbenvを使用してRubyonRailsをインストールする方法。
また、MySQLデータベースソフトウェアをインストールできるように、スーパーユーザーまたはsudo
アカウントにアクセスできる必要があります。
このガイドでは、SELinuxが無効になっていることも前提としています。
準備ができたら、MySQLをインストールしましょう。
MySQLをインストールする
MySQLをまだインストールしていない場合は、今すぐインストールしましょう。 CentOSは、MySQLのドロップイン代替としてMariaDBを使用します。
MySQLとその開発ライブラリをインストールします。
sudo yum install mariadb-server mariadb-devel
インストールが完了したら、次のコマンドでMySQLを起動する必要があります。
sudo systemctl start mariadb
MySQLデータベースが実行されているので、いくつかの危険なデフォルトを削除し、データベースシステムへのアクセスを少しロックダウンする簡単なセキュリティスクリプトを実行したいと思います。 次のコマンドを実行して、インタラクティブスクリプトを開始します。
sudo mysql_secure_installation
プロンプトで、現在のルートパスワードの入力を求められます。 MySQLをインストールしたばかりなので、MySQLがない可能性が高いので、Enterキーを押して空白のままにします。 次に、rootパスワードを設定するかどうかを尋ねるプロンプトが表示されます。 先に進み、Enter
を押して、パスワードを設定します。 残りの質問については、各プロンプトでEnter
キーを押すだけで、デフォルト値を受け入れることができます。 これにより、一部のサンプルユーザーとデータベースが削除され、リモートルートログインが無効になり、これらの新しいルールが読み込まれるため、MySQLは行った変更をすぐに尊重します。
最後に、MariaDBを起動時に開始できるようにします。 これを行うには、次のコマンドを使用します。
sudo systemctl enable mariadb.service
これでMySQLがインストールされましたが、MySQLgemをインストールする必要があります。
MySQLGemをインストールします
RailsアプリケーションがMySQLサーバーに接続する前に、MySQLアダプターをインストールする必要があります。 mysql2
gemはこの機能を提供します。
Railsユーザーとして、次のようにmysql2
gemをインストールします。
gem install mysql2
これで、RailsアプリケーションでMySQLデータベースを使用できるようになりました。
新しいRailsアプリケーションを作成する
ホームディレクトリに新しいRailsアプリケーションを作成します。 -d mysql
オプションを使用して、MySQLをデータベースとして設定し、強調表示された単語をアプリケーション名に置き換えてください。
cd ~ rails new appname -d mysql
次に、アプリケーションのディレクトリに移動します。
cd appname
次のステップは、アプリケーションのデータベース接続を構成することです。
データベース接続の構成
このチュートリアルのMySQLのインストール手順に従った場合は、MySQLのrootユーザーのパスワードを設定します。 MySQLルートログインは、アプリケーションのテストおよび開発データベースを作成するために使用されます。
アプリケーションのデータベース構成ファイルをお気に入りのテキストエディターで開きます。 viを使用します:
vi config/database.yml
default
セクションで、「password:」という行を見つけて、その最後にパスワードを追加します。 次のようになります(強調表示された部分をMySQLルートパスワードに置き換えます)。
password: mysql_root_password
保存して終了。
アプリケーションデータベースを作成する
次のrakeコマンドを使用して、アプリケーションのdevelopment
およびtest
データベースを作成します。
rake db:create
これにより、MySQLサーバーに2つのデータベースが作成されます。 たとえば、アプリケーションの名前が「appname」の場合、「appname_development」および「appname_test」というデータベースが作成されます。
「ユーザー'root'@'localhost'のアクセスが拒否されました(パスワードを使用:YES)MySQLインストールのrootパスワードを入力してください」というエラーが表示された場合は、Ctrl-c
を押して終了します。 次に、前のサブセクション(データベース接続の構成)に戻って、database.yml
のパスワードが正しいことを確認します。 パスワードが正しいことを確認した後、アプリケーションデータベースの作成を再試行してください。
テスト構成
アプリケーションがMySQLデータベースを使用できることをテストする最も簡単な方法は、それを実行することです。
たとえば、開発環境(デフォルト)を実行するには、次のコマンドを使用します。
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ページが表示されている場合は、アプリケーションが適切に構成され、MySQLデータベースに接続されています。
結論
これで、CentOS 7で、データベースとしてMySQLを使用してRubyonRailsアプリケーションの開発を開始する準備が整いました。
幸運を!