1

ここ数週間 PHP ページを開発しており、自分のコードに自信が持てるようになりました。Bluehost を通じてホスティング アカウントを取得し、ライブ ページの作成を開始する準備が整いました。以前は、Windows で XAMPP を使用し、すべてのページをローカル コンピューターで開発していました。ページをローカルで作成し、それをホスティング サーバーに簡単に移動するためのベスト プラクティスを決定しようとしています。Filezilla を使用してファイルを転送しています。ここに私の主な質問があります:

1.) ローカルとライブの MySQL データベースが同期していることを確認するにはどうすればよいですか? 私は手動でローカルにデータベースを作成してから、同じコードを取得してライブサーバーに適用しています。(私はphpmyadminをローカルとライブサーバーに持っていますが、それを使用してこのプロセスを合理化する方法がわかりません)

2.) ローカル サーバーからライブ サーバーにファイルを移動する前に、すべてのファイルの mysql パスワードと接続資格情報を変更する必要があります。これを回避する方法はありますか?

4

7 に答える 7

3

質問 1 については、アップロードを行うたびにデータベースをダンプして本番環境にインポートするか、mysql レプリケーションを使用することができます。

質問 2 では、データベース接続の詳細を別の php ファイルに格納し、データベースに接続する必要がある各ページの上部にそのファイルを含めるのが一般的です。

次に、その 1 つのファイルを変更するか、本番データベースの詳細を含むファイルのみをアップロードします。

db.php

<?php
$dbuser="";
$dbpass="";
$dbname="";
$dbserver="";
?>

myfile.php

<?php
include("db.php");
$conn = mysql_connect($dbserver, $dbuser, $dbpass);
mysql_select_db($dbname);
//....
?>
于 2012-10-17T21:03:32.543 に答える
0

私は常にプロジェクトを作成しているので、開発と本番の間で変動するように1行のコードを変更する必要があります。

次のように環境を指定するベースファイルがあります。

$env = 'dev'

次に、データベース設定変数に次のようなものがあります。

if($env == 'dev') {
    specify dev variables
} else if($env == 'prod') {
    specify prod variables
}

これの利点は、devとprodの間を移動したいときに、1つの変数を変更するだけでよいことです。

于 2012-10-17T21:07:50.587 に答える
0

svnやgitなどのバージョン管理システムを使用します。データベース管理のためのphpmigを見て、capistranoなどのデプロイメントツールを見て、本番サーバーのレプリカでテストすることを確認してください(仮想ホストを使用している場合でも)

于 2012-10-17T21:09:42.827 に答える
0

ベスト プラクティスは、データベース移行スクリプトを作成し、それらをバージョン管理することです。次に、本番環境にアップロードするたびに、これらのバージョンの値をデータベースに保存します。以前に実行したことのないバージョンのみを実行してください。

リポジトリの外部に異なるローカル構成ファイルを用意します。これにより、必要なアプリケーション構成をメインの構成ファイルを使用してレポで維持でき、ローカルの構成ファイルがデータベースと環境設定を上書きします。

于 2012-10-18T00:13:52.280 に答える
0

私はあなたとほぼ同じ立場にあり、これが私がそれを行う方法です。

  1. ローカル データベースをライブ データベースと同期する予定はありませんが、完了したら、ローカル データベースをオンライン データベースに一度移動するだけです。その方法は、PHPMyAdmin で必要なデータベースを選択し、それを .sql ファイルとしてエクスポートするだけです。次に、オンライン サーバーにそのファイルをインポートするだけです。

  2. 私が知っている最善の方法は、次のような関数がある別のファイルを用意することです。

    function connectToDB(){ $mysqli = new mysqli("localhost", "root", "123", "myDatabase"); return $mysqli; }

    次に、それを使用する場合は、他の PHP ファイルの先頭にファイルをインポートして、次のように使用します。

    $mysqli = connectToDB();

これが私のやり方です。誰かがより良い方法を知っていれば、私はそれを知ってうれしいです.

于 2012-10-17T21:14:44.877 に答える
0

mysql_connect() ホストを新しいサーバーの IP アドレスに向けることができます。したがって、コードがどこにあっても、ソケットに接続されます。

$link = mysql_connect('<your ip here>', 'mysql_user', 'mysql_password');
于 2012-10-17T21:06:23.087 に答える
0

開発から本番への展開は簡単な作業ではなく、非常に複雑になる可能性があります。企業は、展開を論理的で安定したプロセスにするために多くのリソースを投資しています。質問を細かく分けて、より具体的に質問することをお勧めします。

あなたの質問への回答として、私は何をしますか:

1) デプロイメントでデータベース構造の変更が必要な場合は、それらの変更を SQL スクリプトに記述します。展開するときは、これらのスクリプトを実行してコードを更新する必要があります (理解できるように、その間の時間がアプリケーションを不安定にしたり破損させたりします)。何よりもまず、本番データベースのコピーを開発に取り、最初に開発でスクリプトを試してください。展開するたびにデータベースが同期されます。

2) パスワードの保存方法は、フレームワークを使用しているかどうかによって異なります。フレームワークに従って、環境変数を定義し、環境 (dev または production) に従ってパスワードを設定することは良いアプローチです。

コードのデプロイに関しては、たとえあなたが特殊な開発者であっても、プロジェクトをバージョン管理下に保存するために svn または git を使用します。これにより、コードの更新がはるかに簡単になり、デプロイごとにタグを作成すれば、必要に応じてロールバックするのに役立ちます。

于 2012-10-17T21:48:00.010 に答える