7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-04-15

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

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

##xserver側でやること

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

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

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

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

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

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

サブドメイン1.png

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

スクリーンショット 2019-04-15 16.17.39.png

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

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

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

スクリーンショット 2019-04-15 16.30.29.png

###xserverのphppmyadminの作成

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

スクリーンショット 2019-04-15 16.15.50.png

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

MySQL1.png

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

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

MySQL2.png

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

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

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

###phpMyAdiminへの移行

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

 phpmyadmin.png

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

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

スクリーンショット 2019-04-15 16.53.11.png

最終的に、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)

##最後に

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

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?