MAMPでローカル開発から、xserverのphpmyadminを使って、ローンチするまで。


phpの学習として、MAMP環境でWebサービスをローカルで開発したものの、
いざローンチするとなると、どうしていいかわからない。
そんな時のためのノートです。

【想定状況】
・ MANPで、phpmyadminを使ってお理、すでにDBにデータが入っている
・ DBとの接続に、PDOオブジェクトを使用している
・ ブログやポートフォリオ等で、すでにxserverを使用している

xserver側でやること

ではまず、下準備。
MAMPはローカル環境用なので、外部サーバーのxserverでの準備です。

xserverのサブドメインの申請

すでに、ドメインを持ってい人は、サブドメインを作成しましょう。

http://yahoo.co.jp
がメインドメインだとすると、サブドメインは
http://◯◯.yahoo.co.jp
となります。

新しいドメインとは異なり、無料かつお手軽に作成することができます。

xserverの「サーバーパネル」から
サブドメインの設定追加を行って行きます。

まずは
サーバーパネルから、ドメイン>サブドメイン設定

ドメイン選択画面から、サブドメインを作成したいドメインを選択

サブドメインの設定追加をクリックし

実際に使用していくサブドメイン名(任意の文字列)を入力、
右下の確認画面で、サブドメインの申請は終了です!
(コメントは入力しなくても大丈夫です。)

無事、サブドメインが認証されるまで1時間〜半日ぐらいかかります。
(深夜に行っても2時間くらいで反映されました。)

xserverのphppmyadminの作成

次にローカル環境で使用していたDBを移行してくるためのDB設定を行います。
サーバーパネルの
データベース>MySQL設定へ

MySQL追加からDBの名前を入力します。
なんでもいいですが、今回「Egg」としました。

そうするとMySQL一覧のところに
「_Egg」というデータベースができています。

最初は、アクセス権未所有ユーザーのところに
自分のユーザーネームがあるので、アクセス権所有ユーザーに変更をしておいてください。

また後々、
MySQL ホスト名というところを使っていきますので
メモ帳なんかにコピーしておきます。

ローカル環境周りでやること

次にやるべきことはDBの移行です。
今までもphpMyAdminを使用していましたが、
xserverに、新しく作りましたのでそちらに移動させていきます。

phpMyAdiminへの移行

もともと使用していたphpMayAdminから
移行させたいDBを選択し、エクスポートを行います。

詳しいやり方は以下のサイトを参考にしました。

各項目にチェックをつけていき、

最終的に、sqlファイルとして保存し、
移行先であるxserverのphpmyadminにインポートすれば、
DBの移行は終了です。

PDOオブジェクトの編集

サブアドレスも発行し、DBの移行も終わり、
あとは、xserver内にドキュメントを写すだけ....ではありません。

重要なDB接続の
PDOを変更する必要があります。

変更前までは$dsnのmyssql以下は
ローカルで開発していたため、
hostがlocalhostもしくは127.0.0.1でしたが

先ほどxserveでの設定時に出てきたhost名を入力する必要があります。
またそれに合わせて、DBnameも変更する必要があります。

変更前

function dbConnect(){
  $dsn = 'mysql:dbname=egg; 
                host=localhost;
                charset=utf8';
  $user = 'root';
  $password = 'root';
  $options = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
  );
  $dbh = new PDO($dsn, $user, $password, $options);
  return $dbh;
}

変更後

function dbConnect(){
  $dsn = 'mysql:dbname=▲▲_egg; 
          host=◯◯.xserver.jp;
          charset=utf8';
  $user = 'DBのユーザー名';
  $password = 'DBのパスワード';
  $options = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
  );
  $dbh = new PDO($dsn, $user, $password, $options);
  return $dbh;
}

変更後の
dsn文のdbnameとhostは
上で自分で決めたDB名とホスト名

DBのユーザー名とパスワードは
xserverでphpmydminに入るときに使用するやつです。

FTPソフトを使用した移行

あとは、FTPソフトを使用して移行していくだけです。

やり方は以下を参考にCyberDuckを使用していきました。

ファイルさえ移行しておけば
DBの接続を失敗していない限り、正常にサブドメインのアドレスで
Webページが表示されているはずです。

【困った時】SQLのエラーの一覧

これを行う上で、SQLのエラーとだいぶにらめっこしたので
まとめておきます。

ホスト名のエラー

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known

DB名のエラー

SQLSTATE[HY000] [1044] Access denied for user example@% to database 

ユーザー名のエラー

SQLSTATE[HY000] [1045] Access denied for user ‘◯◯’@127.0.0.1 (using password: YES)

最後に

役に立ったら、
いいねください!