Linux、Apache、MySQL、PHP(LAMP)スタックをCentOS7にインストールする方法
序章
「LAMP」スタックは、サーバーが動的なWebサイトやWebアプリをホストできるようにするために通常一緒にインストールされるオープンソースソフトウェアのグループです。 この用語は、 LinuxオペレーティングシステムとApacheWebサーバーを表す頭字語です。 サイトデータは通常、 M ySQLデータベースに保存され、動的コンテンツは PHPによって処理されます。
ほとんどのLinuxシステムでは、MySQLをダウンロードしてインストールできます。 mysql-server
システムのデフォルトのパッケージ管理リポジトリからのパッケージ。 ただし、CentOS7では mysql-server
パッケージは、MySQLのドロップイン代替として機能するMySQLリレーショナルデータベース管理システムのコミュニティ開発フォークであるMariaDBを実際にインストールします。 したがって、このチュートリアルでは、 L inux、 A pache、 M ariaDB、およびPで構成されるLAMPスタックをインストールする方法の概要を説明します。 CentOS7サーバー上のHP。
前提条件
このガイドを開始する前に、サーバーにroot以外のユーザーアカウントを設定しておく必要があります。 これを行う方法については、CentOS7チュートリアルのサーバーの初期設定に従ってください。
ステップ1—ApacheWebサーバーをインストールする
Apacheは、訪問者にWebページを表示するために使用される人気のあるオープンソースWebサーバーです。 PHPページを提供するように構成できます。
CentOSのパッケージマネージャーを使用してApacheをインストールします。 yum
. パッケージマネージャーを使用すると、CentOSが管理するリポジトリからほとんどのソフトウェアをインストールできます。
ターミナルにこのコマンドを入力して、 httpd
Apacheパッケージ:
- sudo yum install httpd
プロンプトが表示されたら、次のように入力します Y
Apacheのインストールを確認します。 インストールが完了したら、次のコマンドを使用してApacheサーバーを起動します。
- sudo systemctl start httpd
WebブラウザにパブリックIPアドレスまたはドメイン名を入力して、サーバーが実行されているかどうかをテストできます。
注:DNSホスティングプロバイダーとしてDigitalOceanを使用している場合は、製品ドキュメントで、新しいドメイン名を設定してサーバーにポイントする方法の詳細な手順を確認できます。
サーバーを指すドメイン名がない場合、またはサーバーのパブリックIPアドレスがわからない場合は、次のコマンドを実行してドメイン名を見つけることができます。
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
これにより、いくつかの異なるアドレスが出力されます。 あなたはあなたのウェブブラウザでそれらのそれぞれを試すことができます。
別の方法は、外部の関係者を使用して、サーバーがどのように認識されているかを通知することです。 これを行うには、次のコマンドを使用して、特定のサーバーにIPアドレスを尋ねます。
- curl http://icanhazip.com
どちらの方法を選択した場合でも、WebブラウザにIPアドレスを入力して、サーバーが実行されていることを確認します。
http:
デフォルトのCentOS7Apacheランディングページが表示されます。
次のコマンドを使用して、Apacheを起動時に起動できるようにすることができます。
- sudo systemctl enable httpd.service
ステップ2— MySQLのインストール(MariaDB)
Webサーバーが稼働している状態で、MariaDBをインストールできます。 それはあなたのサイトが情報を保存できるデータベースを整理し、データベースへのアクセスを提供します。
MariaDBソフトウェアパッケージをインストールするには、次のコマンドを実行します。
- sudo yum install mariadb-server
インストールが完了したら、MariaDBを起動します。
- sudo systemctl start mariadb
次のコマンドを使用して、MariaDBが起動時に起動できるようにすることができます。
- sudo systemctl enable mariadb.service
データベースサーバーのセキュリティを向上させるために、MariaDBにプリインストールされているセキュリティスクリプトを実行することをお勧めします。 このスクリプトは、いくつかの安全でないデフォルト設定を削除し、データベースシステムへのアクセスをロックダウンします。
次のコマンドを実行して、インタラクティブスクリプトを開始します。
- sudo mysql_secure_installation
このスクリプトは、MariaDBの設定にいくつかの変更を加えることができる一連のプロンプトを表示します。 最初のプロンプトでは、現在のデータベースルートパスワードを入力するように求められます。 これをシステムルートユーザーと混同しないでください。 データベースルートユーザーは、データベースシステムに対する完全な権限を持つ管理ユーザーです。 MariaDBをインストールしたばかりで、構成を変更していないため、このパスワードは空白になります。 プレス ENTER
プロンプトで。
次のプロンプトでは、データベースルートパスワードを設定するかどうかを尋ねられます。 タイプ N
次にを押します ENTER
.
そこから、を押すことができます Y
、 その後 ENTER
、後続のすべての質問のデフォルトを受け入れます。 これにより、匿名ユーザーとテストデータベースが削除され、リモート root ログインが無効になり、これらの新しいルールが読み込まれるため、サーバーは行った変更をすぐに尊重します。
終了したら、次のように入力してMariaDBコンソールにログインします。
- sudo mysql
これにより、管理データベースユーザーrootとしてMariaDBサーバーに接続されます。
OutputWelcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
セキュリティを強化するには、データベースごとに、拡張性の低い特権を持つ専用のユーザーアカウントを設定することをお勧めします。 これは、サーバーで複数のデータベースをホストすることを計画している場合に特に重要です。
このような設定を示すために、という名前のデータベースを作成します example_database
example_userという名前のユーザー。 これらの名前を別の値に置き換えることができます。
MariaDBコンソールから次のコマンドを実行して、新しいデータベースを作成します。
- CREATE DATABASE example_database;
新しいユーザーを作成し、作成したカスタムデータベースに対する完全な権限をユーザーに付与できます。 次のコマンドは、このユーザーのパスワードを次のように定義します。 password
、ただし、この値を安全なパスワードに置き換える必要があります。
- GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
このコマンドは、example_userユーザーに example_database
このユーザーがサーバー上で他のデータベースを作成または変更できないようにします。
使用 FLUSH
example_userに付与した特権をリロードして保存するステートメント:
- FLUSH PRIVILEGES;
MariaDBシェルを終了します。
- exit
新しいユーザーが適切な権限を持っているかどうかをテストするには、MariaDBコンソールに再度ログインしますが、上記で作成したexample_userクレデンシャルを使用します。
- mysql -u example_user -p
に注意してください -p
このコマンドのフラグ。example_userユーザーの作成時に選択したパスワードの入力を求められます。 MariaDBコンソールにログインした後、にアクセスできることを確認します example_database
このステートメントを含むデータベース:
- SHOW DATABASES;
君の example_database
出力にリストされている必要があります:
Output+--------------------+
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)
MariaDBシェルを終了するには、次のように入力します。
- exit
データベースシステムがセットアップされ、PHPのインストールに進むことができます。
ステップ3—PHPのインストール
コンテンツを提供するためにApacheをインストールし、データを保存および管理するためにMariaDBをインストールしました。 PHPはコードを処理して、動的コンテンツをユーザーに表示します。 に加えて php
パッケージ、あなたが必要になります php-mysql
、PHPがMySQLベースのデータベースと通信できるようにするPHPモジュール。 コアPHPパッケージは、依存関係として自動的にインストールされます。
このコマンドを使用して、 php
と php-mysql
とのパッケージ yum
:
- sudo yum install php php-mysql
Apache Webサーバーを再起動して、インストールしたPHPモジュールを有効にします。
- sudo systemctl restart httpd.service
これで、サーバーはLAMPスタックアプリケーションに必要なすべてのコンポーネントで構成されました。 次のステップは、構成をテストして、すべてが調和して機能していることを確認することです。
ステップ4—ApacheWebサーバーでPHPをテストする
CentOS 7へのデフォルトのApacheインストールでは、次の場所にドキュメントルートが作成されます。 /var/www/html
. Webサーバー内でPHPが正しく機能するために、Apacheのデフォルト設定を変更する必要はありません。
ただし、Apacheドキュメントのルートフォルダのデフォルトのアクセス許可設定を変更するように調整することはできます。 これにより、各コマンドの前にプレフィックスを付けることなく、通常のシステムユーザーでそのディレクトリにファイルを作成および変更できます。 sudo
.
次のコマンドは、デフォルトのApacheドキュメントルートの所有権を、という名前のユーザーとグループに変更します。 sammy
、したがって、システムのユーザー名とグループを反映するために、このコマンドで強調表示されているユーザー名とグループを必ず置き換えてください。
- sudo chown -R sammy.sammy /var/www/html/
PHPテストファイルを作成して、Webサーバーが期待どおりに機能することを確認できます。 お好みのテキストエディタを使用して、このファイルを作成してください。 次の例では、デフォルトを使用しています vi
CentOS7のテキストエディタ。
と呼ばれるPHPファイルを作成します info.php
で var/www/html
ディレクトリ:
- vi /var/www/html/info.php
これにより、空のPHPファイルが開きます。 /var/www/html
ディレクトリ。 プレス I
に入る INSERT
のモード vi
編集者。 これにより、テキストエディタ内で入力および変更を行うことができます。 次のPHPコードを入力します。
<?php phpinfo(); ?>
このPHPコードは、サーバーで実行されているPHP環境に関する情報を表示します。 このファイルへの変更が終了したら、を押します。 ESC
終了するためのキー INSERT
のモード vi
. タイプ :x
–セミコロンと小文字のx –ファイルを保存して閉じます。
サーバーのパブリックIPアドレスに移動し、続いてWebサーバーがPHPコンテンツを正しく表示するかどうかをテストできます。 /info.php
:
http://your_server_IP_address/info.php
以下のようなWebページがブラウザに表示されます。
このページでは、PHPの観点からサーバーに関する情報を提供します。 これは、デバッグを行い、設定が正しく適用されていることを確認するのに役立ちます。 PHPサーバーに関する関連情報を確認した後、PHP環境とCentOSサーバーに関する機密情報が含まれているため、このファイルを削除することをお勧めします。
使用できます rm
このファイルを削除するには:
- rm /var/www/html/info.php
後で情報に再度アクセスする必要がある場合は、いつでもこのページを再作成できます。 次に、PHPを使用してデータベース接続をテストできます。
ステップ5– PHPを使用したデータベース接続のテスト(オプション)
PHPがMariaDBに接続し、データベースクエリを実行するかどうかをテストするには、いくつかのテストデータを含むテストテーブルを作成します。 PHPスクリプトからその内容を照会できます。
まず、このガイドのステップ2で作成したデータベースユーザーを使用してMariaDBコンソールに接続します。
- mysql -u example_user -p
MariaDBコンソールから、次のステートメントを実行して、 todo_list
あなたの中で example_database
:
- CREATE TABLE example_database.todo_list (
- item_id INT AUTO_INCREMENT,
- content VARCHAR(255),
- PRIMARY KEY(item_id)
- );
MariaDBコンソールは、編集のたびにテーブルの変更について通知します。
Query OK, 0 rows affected (0.00 sec)
テストテーブルにコンテンツの数行を挿入します。 異なる値を使用して次のコマンドを数回繰り返し、テストテーブルにデータを入力できます。
- INSERT INTO example_database.todo_list (content) VALUES ("My first important item");
データがテーブルに正常に保存されたことを確認するには、次のコマンドを実行します。
- SELECT * FROM example_database.todo_list;
以下は出力の例です。
Output+---------+--------------------------+
| item_id | content |
+---------+--------------------------+
| 1 | My first important item |
| 2 | My second important item |
| 3 | My third important item |
| 4 | and this one more thing |
+---------+--------------------------+
4 rows in set (0.000 sec)
テストテーブルに有効なデータがあることを確認したら、MariaDBコンソールを終了できます。
- exit
これで、MariaDBに接続してコンテンツをクエリするPHPスクリプトを作成できます。 好みのエディタを使用して、カスタムWebルートディレクトリに新しいPHPファイルを作成します。 この例では、 vi
:
- vi /var/www/html/todo_list.php
を押して次のコンテンツを追加します I
の中に vi
テキストエディタ、交換することを忘れないでください example_user
と password
あなた自身で:
<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";
try {
$db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
echo "<h2>TODO</h2><ol>";
foreach($db->query("SELECT content FROM $table") as $row) {
echo "<li>" . $row['content'] . "</li>";
}
echo "</ol>";
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
編集が完了したら、を押してファイルを保存して閉じます ESC
、続いて入力 :x
の vi
.
これで、サーバーのホスト名またはパブリックIPアドレスにアクセスし、続いてWebブラウザーでこのページにアクセスできます。 /todo_list.php
:
http://server_host_or_IP/todo_list.php
以下は、テストテーブルに挿入したコンテンツを示すWebページの例です。
結論
このガイドでは、ApacheをWebサーバーとして使用して、訪問者にPHPWebサイトとアプリケーションを提供するための柔軟な基盤を構築しました。 PHPリクエストを処理するようにApacheを設定し、Webサイトのデータを格納するためにMariaDBデータベースを設定しました。