HerokuにPHP + MySQLをデプロイする

すべての良い一日。 herokuサービスにphp + mysqlアプリケーションをデプロイした経験を共有したいと思います。 これについて初めて聞い場合こちらにいます。

行こう


既製のphp + mysqlアプリケーションがあると想像してみましょう。 開始するには、 ここで登録してください 。 確認メールが郵便局に送信されます。 次に、リンクをクリックし、パスワードと確認を入力して、[保存]をクリックします。 最初の段階は終了しました。

登録に成功すると、サービスはクライアントのダウンロードを提供します。 当然、OSごとに独自のインストールオプションがあります。 さらに、UNIXの例を検討します。

コンソールに書き込みます:

wget -qO- https://toolbelt.heroku.com/install.sh | sh 


インストールに問題はないはずです。 また、gitをインストールして構成する必要があります。これについては説明しません。インターネット上にはgitに関する多くの情報があります。

インストール後、アプリケーションを入力する必要があります。

 $ heroku login 


メールアドレスとパスワードを入力してください。 アプリケーションはユーザーを認証し、公開sshキーを自動的にダウンロードします。 これが発生しない場合は、アカウント(https://dashboard.heroku.com/account)にアクセスして、公開sshを追加します。



パブリックsshを表示するには、コンソールに次のように記述します。

 $ cat ~/.ssh/id_rsa.pub 


次のコマンドを使用してキーを追加することもできます。

 $ heroku keys:add 


これで、最初の「herokuアプリケーション」を作成する準備がすべて整いました。 アプリケーションが保存されているディレクトリに移動し、コンソールに書き込みます。

 $ heroku create 


その結果、次のように表示されます。



次に、アプリケーションをheroku masterにプッシュします。

 $ git push heroku master 


次に、コンソールに書き込みます。

 $ heroku open 


私たちのサイトはブラウザで開きます。 mysqlを使用していなかった場合、これは終了していましたが、もう少し汗をかかなければなりません。 おそらく、mysqlに接続できないことを示すエラーが画面に表示されました。 ログを開いてエラーを確認することもできます。

 $ heroku logs 


mysqlを使用する場合は、 ClearDBアドオンを使用します。 インストールするには、最初にdashboard.heroku.com/accountでクレジットカード情報を入力する必要があります。



これを行わないと、ClearDBのインストール時にエラーが表示されます。

Adding cleardb:ignite on dry-taiga-2649... failed
! Please verify your account to install this add-on
! For more information, see devcenter.heroku.com/categories/billing
! Verify now at heroku.com/verify


ClearDBをインストールするコマンドは次のとおりです。

 $ heroku addons:add cleardb:ignite 


ClearDBがインストールされました。次に、データベースへのアクセスを見てみましょう。

 $ heroku config 


次の形式で結果を取得します。

CLEARDB_DATABASE_URL:mysql://USER:PASSWORD@HOSTNAME/DBASENAME?reconnect=true

便利なMySQLクライアントから取得したアクセスを使用して、データベースダンプをサーバーに入力します。

PHPのデータベースへのアクセスは、次のようにして取得できます。

  $url=parse_url(getenv("CLEARDB_DATABASE_URL")); $server = $url["host"]; $username = $url["user"]; $password = $url["pass"]; $db = substr($url["path"],1); mysqli_connect($server, $username, $password); mysqli_select_db($db); 


ローカルサイトとherokuの構成を毎回変更しないように、チェックを追加できます。

 if ($_SERVER['SERVER_NAME'] == "thawing-island-242342379.herokuapp.com") { $url = parse_url(getenv("CLEARDB_DATABASE_URL")); $host = $url["host"]; $username = $url["user"]; $password = $url["pass"]; $dbname = substr($url["path"], 1); } else { $host = 'localhost'; $dbname = 'db'; $username = 'user'; $password = '123'; } 


APPLICATION_ENVを使用してこれを行う方がより適切ですが、これを行う方法に関する情報は見つかりませんでした。 知っている人なら-書いてください。

ほとんどすべての準備が整いました。 composer.jsonファイルをルートに追加します:

 { "require": { "ext-mysql": "*" } } 


既にお持ちの場合は、 "ext-mysql": "*"を追加する必要があります"ext-mysql": "*"

コンソールに書き込みます:

 $ git add . $ git commit -am "added db credentials" $ git push heroku master $ heroku open 


ブラウザが開き、作業サイトが表示されます。

この「マニュアル」が誰かを助けてくれたら嬉しいです。

ご清聴ありがとうございました。

Source: https://habr.com/ru/post/J236211/


All Articles