apache|mysql|サーバー|戦略
目的 私たちの目標は、複数の Web サイトをホストできる Web サーバーをインストールすることです。その一部は電子商取引用のセキュリティ ソリューションであり、そのほとんどはデータベース サーバーに接続してそのデータを抽出するスクリプトによって駆動されます。
このタスクに必要なツールは次のとおりです:
Apache - Web サイトサーバー
Mod_SSL - Secure Sockets Layer (SSL) のモジュール
OpenSSL - オープンソースツールボックス (mod_ssl に必要)
RSARef - 米国ユーザーのみ
MySQL - データベースサーバー
PHP - スクリプト言語
「すべての道はローマに通ず」... したがって、これは要件を満たす多くの構成のうちの 1 つにすぎません。この構成を選択したのは、それが最もシンプルで高速だからです。 Mod_SSL/OpenSSL を選択した理由は、以前に Mod_SSL/OpenSSL を使用した経験があり、設定が最も速く、インストールが最も簡単だからです。 Apache と簡単に統合するために、PHP と MySQL を選択しました。 Perl はやりたいことを何でも実行できますが、PHP はシンプルで、学びたいプログラマーにとって簡単であることを忘れないでください。
この簡単なガイドを完了したら、次の目標を正常に完了できることを願っています。
MySQL データベース サーバーをインストールしてセットアップする
o MySQL サーバーのステータスを確認する方法を知る
o コマンド ライン クライアントを使用して MySQL サーバーにアクセスする方法を知る
o から DB サーバーにアクセスする方法を知るweb
SSL を使用して Apache Web サーバーをインストールおよびセットアップする
o 単純な仮想 Web サイトを構成する
o サーバーを停止および起動する方法を知る
o 基本的なホスティング構成を行う方法を知る
PHP 4.0 ハイパーテキストをインストールして構成するサーバーサイドスクリプトプロセッサ用のプリセット
o 簡単な PHP コードの書き方を知る
o php を使用して DB に接続する方法を知る
o データベースと通信するための簡単な PHP 対応 Web サイトを作成する
Apache SSL
o CSR ファイルの生成方法を知る
o キーコードを暗号化する方法を知る
o 独自の証明書に署名する方法を知る
この記事では多くの情報を取り上げます。このガイドは、電子商取引、Web サイト スクリプティング、および Secure Sockets Layer (SSL) の世界への入門ガイドとして機能し、データベースに保存された動的な情報を活用して安全な Web サイトを構築できるようにすることを目的としています。
この記事は決して詳細で包括的な文書ではありません。間違いがいくつかあることは間違いありません (できれば最小限)。読む際はその点に留意してください。ただし、前述の製品を実行することに興奮し、これらの製品がどのように機能するかをより深く理解できるようになります。事前のプログラミング知識は必要ありませんが、ある程度のコンピューターの背景があることが前提となります。私の目標は、初心者でも私の言っていることが理解できるようにこの文書を書くことです。それが達成できれば、私は良いことをしたことになります。電子商取引サイトを簡単に構築した人は、私よりも上手に構築できるはずです :-) もう少し説明してください。
前提条件
この記事は、システムに次のソフトウェアがインストールされていることを前提としています。
Perl (できればver 5+)
gzipまたはgunzip
gccおよびGNU make
これらがインストールされていない場合は、ここで説明する手順を実行する前に、それらをインストールするために必要な手順を実行する必要があります。記事。
UNIX コマンド、HTML、SQL の基本的な理解も必要です。 Linux マシンの管理方法について基本を理解している必要があります。ソフトウェアをインストールする、完全に機能する Linux ボックスも必要です。もちろん、ソース コードをコンパイルするには上記の必要なパッケージが必要です。最後に、Linux マシンに MySQL、Apache、または PHP がプリインストールされていないことを確認してください。
仕組み
舞台裏で何が起こっているのかを理解するのに役立ちます。以下は、その仕組みを過度に単純化したものです。下の図とそれに続く説明は、現時点では完全に正しいわけではなく、要点の概要にすぎません:
状況は次のとおりです: データベースからデータを取得する Web ページがあります。 。 John Doe がブラウザからページをリクエストすると、そのリクエストは Web サーバーに送信され、PHP スクリプトが呼び出されます。 PHP スクリプトは PHP プリプロセッサによって解釈され、その結果が残りの PHP スクリプトによって処理され、HTML に変換されてユーザーのブラウザに返されます。
それを段階的に見てみましょう:
John Doe がブラウザからリンクをクリックし、ブラウザが http://www.yourserver.com/test.php にリクエストを送信します。
Apache は test.php のリクエストを取得し、.php ファイルが PHP プリプロセッサ (mod_php) によって処理されるべきであることを知っているため、PHP にそれを処理するように指示します。 Apache の設定で指定しているため、これは認識されています。
test.php はコマンドを含む PHP スクリプトです。これらのコマンドの 1 つは、データベースへの接続を開いてデータを取得することです。 PHP はデータベースへの接続を処理し、SQL 呼び出しを解釈して DB からデータを抽出します。
サーバー サーバーは、PHP インタプリタから接続リクエストを取得し、リクエストを処理します。リクエストは、単純な選択ステートメントやデータベース テーブルの作成などのようなものである可能性があります。
その後、データベースは応答と結果を PHP インタープリターに送り返します。
Apache は、リクエストに対する応答として、この結果を John Doe のブラウザに送り返します。 John Doe は、データベースからの情報を含む Web ページを表示します。
これが https://www.yoursecureserver.com/test.php へのリクエストの場合、プロセス全体は上記と似ていますが、各リクエストと応答が両端で暗号化および復号化される点が異なります。つまり、ブラウザが接続します。 Apache に送信し、その暗号化キーを取得し、リクエストを暗号化して送信します。
サーバーはリクエストを確認し、復号化して認証します。ファイルを処理し、暗号化して送信します。次に、ブラウザはサーバーのキーコードを使用してそれを復号化します。接続は暗号化されているため、別のポートが使用されることに注意してください。ポート 80 は非セキュア接続に使用され、ポート 443 はセキュア接続に使用されます。
繰り返しになりますが、これは 100% 正しいわけではありませんが、舞台裏で何が起こっているかを簡単に概要を説明するのに十分な速さです。
何を達成しようとしているのかについて基本的な理解ができたので、ソフトウェアのインストールに進みましょう。
準備
Apache (Webサーバー)-http://www.apache.org
Mod_SSL (セキュアサーバー層)-http://www.modssl.org
OpenSSL (SSLツールボックス)-http:// /www.openssl.org
PHP (スクリプト言語)-http://www.php.net
MySQL (SQL データベース サーバー)-http://www.mysql.com
すべての (tar ファイル) ソースをダウンロードコードを一時ディレクトリにコピーします。必ず十分なスペースのある場所に保存してください。権限の問題を避けるために、root としてダウンロードする必要があります。
私たちの計画
私たちの計画は、まず MySQL サーバーをインストールして動作することを確認し、次に PHP と Mod_SSL をインストールし、最後に Apache Web サーバーをインストールすることです。 Apache をインストールしたら、PHP と Mod_SSL のサポートが機能しているかどうかをテストできます。
MySQL ソース コードのインストール (UNIX)
MySQL ソース コード配布のインストールを実行するために使用する必要がある基本コマンドは次のとおりです (解凍された「tar」ファイルから):
su を使用して root ユーザーになります。
$su
tar ファイルがあるディレクトリに直接移動します。 (一時ディレクトリを使用します。ここでは /tmp/download/ を使用します)
#cd /tmp/download/
以下のコマンドを使用してファイルを解凍します。
# Gunzip -d -c mysql-3.22.xx.tar.gz |
解凍中に作成された新しいディレクトリに変更します。
# cd mysql-3.22.xx
これで、MySQL サーバーの「構成」を開始できます。すべてのオプションを表示するには、configure --help を使用して多くのオプションを指定できます。インストール場所への直接パスを指定するために --prefix を選択しました。 configure はコンパイラやその他のことをチェックします。エラーが発生した場合は、config.cache ファイルでエラーを確認できます。
# configure --prefix=/usr/local/mysq
設定が完了したら、次のコマンドを実行して実際のバイナリ コードを作成できます。
# make
これで、すべてのバイナリをインストールする準備ができました。次のコマンドを実行して、configure --prefix オプションで指定したディレクトリにバイナリをインストールします。
# make install
バイナリ コードをインストールしたら、権限の定義に使用する mysql テーブルを作成します。
# scripts/mysql_install_db
# cd /usr/local/mysql/bin
# ./safe_mysqld &
# ./mysqladmin -u root パスワード "new-password"
注: /usr/local/mysqlは、MySQL サーバーのインストール先として選択したディレクトリです。ディレクトリを変更することで、別の場所を選択できます。
MySQL が実行されていることを確認するいくつかの簡単なテストを実行することで、サーバーが動作していることを確認できます。出力は次のようになります: BINDIR=/usr/local/mysql/bin。 BINDIR は、上記のプレフィックスを付けて選択したディレクトリによって異なります。
# BINDIR/mysqlshow -p
+--------------+
| データベース | +
|
+--------------+
MySQL をインストールすると、自動的に 2 つのデータベースが作成されます。 mysql テーブルは実際のサーバーのユーザー、ホスト、データベースの権限を制御します。もう 1 つはテスト データベースです。テスト データベースを使用できます。ただし、MySQL で使用できるいくつかのコマンド ライン オプションの概要を簡単に説明したいと思います。これにより、root に DB サーバーへの完全なアクセス権が設定されることも保証されます。つまり、root にはデータベースやデータベース テーブルなどを作成する権限があるため、後でテストに使用する test2 データベースを作成します。コマンドラインから MySQL に入る前に、root ユーザーの新しいパスワードの入力を求められます。以前に変更したことを思い出してください。
# mysql -u root -p
mysql> データベースを表示します。
+------ ----------+
|
|
+--------------+ データベース test2 を作成します。
クエリ OK、1 行が影響を受けました (0.00 秒)
次に、使用する新しいデータベースを選択し、次の 2 つのフィールドを含む tst_tbl という名前の新しいテーブルを作成します。フィールド 1 は ID フィールドで、レコードの ID を知ることができます。簡単にするために、これは単なる行番号です。 2 番目のフィールドはあなたの名前フィールドで、本のタイトル情報が保存されます。これらのフィールドの形式は次のとおりです。フィールド 1 (id) は長さ 3 の整数 (int)、フィールド 2 (name) は長さ 50 の文字 (char) フィールドです。データを検索してインデックスを付けるには、キー コードとして ID を指定します。
mysql> test2 を使用します
mysql> CREATE TABLE Books ( id int(3) not null
-> auto_increment, name char(50) not null,
-> unique(id) 、主キー(id));
クエリ OK、影響を受ける行は 0 (0.00 秒)
次に、次のコマンドを使用して、すべてが正しいことを確認します。
mysql> テーブルを表示
+----------+
|
+---------- ------------+
|
+----------+
1 行 ( 0.00 秒)
mysql>
+------+-------------+------+------+- ----------+-------------+
| デフォルトのキー | |
+------+----------+------+------+---------- + ------------------------+
| id |
| 50 | - ------+----------+
セット内の 2 行 (0.00 秒)
describe コマンドは基本的に「テーブルのレイアウト。かなり良い!
それでは、非常に便利な SQL コマンドを試して、データベースにデータを挿入して選択し、新しいテーブルにいくつかのレコードを追加してみましょう。これらは単純な書籍タイトル レコードですが、SQL の十分な経験を積めば、一部の大規模な電子商取引サイト用に非常に複雑なデータベースを作成できることに注意してください。 2 つの仮想書籍に対して 2 つのレコードを作成しましょう。最初のエントリは、いつか書く予定の本の名前です - 「PHP 4 Newbies」、もう 1 つは、Mohammed J. Kabir 著の非常に役立つ Linux 本「Red Hat Linux 6 Server」です。
mysql> INSERT INTO Books (name) names("PHP 4 Newbies");
クエリ OK、1 行が影響を受けました (0.00 秒)
mysql> INSERT INTO Books (name) names("Red Hat Linux 6 Server") );
クエリ OK、1 行が影響を受けました (0.00 秒)
これで、新しいレコードを確認し、「すべて選択」コマンドを発行できます
+---+-- - ----------------------------------+
| 名前 | +--- ----------------------------------+
| 初心者向け PHP | | 2 | レッドハット Linux 6 サーバー
+----+--------------------------------- -+
2 行セット (0.00 秒)
素晴らしい、MySQL サーバーは完全に機能しています。追加し続けることもできますが、現時点ではそれは意味がありません。データベースにレコードを挿入するときに ID 番号を指定する必要がないことに注目してください。これは、auto_increment オプションを有効にして ID フィールドを作成したためです。
簡単に削除する方法を説明します。これは、mysql コマンドとサーバーに関して必要な情報はすべて、MySQL Web サイト http://www.mysql.com で見つけることができることを覚えておいてください。
mysql> id=1 のブックから削除します。
クエリは影響を受けます (0.00 秒)
+-----+------ ------------------------+
| 名前 | ------------------------+
| 2 | Red Hat Linux 6 サーバー | - ---------------------------------+
セット内の 1 行 (0.00 秒)
OK、MySQL を終了します、インストールを続行します。すべてのインストールが完了し、すべてが適切に動作したら、MySQL を使って遊ぶことができます。