CentOS7にLinux、Nginx、MySQL、PHP(LEMP)スタックをインストールする方法
序章
LEMPソフトウェアスタックは、サーバーが動的なWebサイトやWebアプリをホストできるようにするために通常一緒にインストールされるオープンソースソフトウェアのグループです。 この用語は、実際には L inuxオペレーティングシステムを表す頭字語であり、 E Nginx Webサーバー(LAMPスタックのApacheコンポーネントを置き換える)を備えています。 サイトデータはM ySQLベースのデータベースに保存され、動的コンテンツは PHPによって処理されます。
このガイドでは、データベース管理システムとしてMariaDBを使用して、CentOS7サーバーにPHP7.4がインストールされたLEMPスタックを取得します。 MariaDBは、元のMySQLサーバーのドロップイン代替として機能します。つまり、実際には、アプリケーションで構成やコードを変更することなく、MariaDBに切り替えることができます。
前提条件
このガイドを開始する前に、サーバーにroot以外のユーザーアカウントを設定しておく必要があります。 これを行う方法を学ぶには、CentOS 7の初期サーバーセットアップの手順1〜4を完了します。
ステップ1—Nginxをインストールする
サイト訪問者にWebページを表示するために、高性能WebサーバーであるNginxを採用します。 最新のNginxバージョンを入手するには、最初にEPELリポジトリをインストールします。このリポジトリには、CentOS7オペレーティングシステム用の追加ソフトウェアが含まれています。
CentOS 7 EPELリポジトリを追加するには、次のコマンドを実行します。
- sudo yum install epel-release
使用しているので sudo
コマンドの場合、これらの操作はroot権限で実行されます。 root権限でコマンドを実行する権限があることを確認するために、通常のユーザーのパスワードの入力を求められます。 インストールの確認も求められるので、を押します Y
続行します。
EPELリポジトリがサーバーにインストールされたので、次を使用してNginxをインストールします。 yum
指図:
- sudo yum install nginx
インストールが完了したら、次のコマンドでNginxサービスを開始します。
- sudo systemctl start nginx
WebブラウザでサーバーのパブリックIPアドレスにアクセスすると、すぐにスポットチェックを実行して、すべてが計画どおりに行われたことを確認できます(この情報がない場合は、次の見出しの下にある注を参照して、パブリックIPアドレスを確認してください。すでに):
Open in a web browser:http://server_domain_name_or_IP/
情報提供とテストの目的で存在するデフォルトのCentOS7NginxWebページが表示されます。 次のようになります。
このページが表示されている場合は、Webサーバーが正しくインストールされています。
起動時にNginxを起動できるようにするには、次のコマンドを実行します。
- sudo systemctl enable nginx
サーバーのパブリックIPアドレスを見つける方法
サーバーのパブリックIPアドレスがわからない場合は、いくつかの方法で見つけることができます。 通常、これはSSH経由でサーバーに接続するために使用するアドレスです。
コマンドラインから、これをいくつかの方法で見つけることができます。 まず、あなたは使用することができます iproute2
これを入力して住所を取得するためのツール:
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
これにより、1行または2行戻ります。 どちらも正しいアドレスですが、お使いのコンピュータではどちらか一方しか使用できない場合がありますので、お気軽に試してみてください。
別の方法は、外部の関係者を使用して、itがサーバーをどのように認識しているかを通知することです。 これを行うには、特定のサーバーにIPアドレスを尋ねます。
- curl http://icanhazip.com
IPアドレスの取得に使用する方法に関係なく、Webブラウザのアドレスバーに入力してサーバーにアクセスできます。
ステップ2—MariaDBをインストールする
Webサーバーが稼働しているので、MySQLドロップインの代替品であるMariaDBをインストールします。 MariaDBは、MySQLリレーショナルデータベース管理システムのコミュニティ開発されたフォークです。
繰り返しますが、 yum
当社のソフトウェアを取得してインストールします。 今回は、コンポーネントを相互に通信させるのに役立つ他のヘルパーパッケージもインストールします。
- sudo yum install mariadb-server mariadb
インストールが完了したら、次のコマンドでMariaDBを起動する必要があります。
- sudo systemctl start mariadb
MariaDBデータベースが実行されているので、いくつかの危険なデフォルトを削除してデータベースへのアクセスをロックダウンするセキュリティスクリプトを実行します。 次のコマンドを実行して、インタラクティブスクリプトを開始します。
- sudo mysql_secure_installation
プロンプトはあなたにあなたの現在を尋ねます root
MariaDBパスワード。 MariaDBをインストールしたばかりなので、MariaDBがない可能性が高いので、Enterキーを押して空白のままにします。 次に、プロンプトで、を設定するかどうかを尋ねられます root
パスワード。 さあ、入力してください Y
、および指示に従います。
mysql_secure_installation prompts:Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
残りの質問では、各プロンプトで「ENTER」キーを押してデフォルト値を受け入れる必要があります。 これにより、一部のサンプルユーザーとデータベースが削除され、リモートルートログインが無効になり、これらの新しいルールが読み込まれるため、MySQLは行った変更をすぐに尊重します。
最後に、MariaDBを起動時に開始できるようにします。 これを行うには、次のコマンドを使用します。
- sudo systemctl enable mariadb
この時点で、データベースシステムがセットアップされ、次に進むことができます。
ステップ3—PHPのインストール
PHPは、動的コンテンツを表示するコードを処理するセットアップのコンポーネントです。 スクリプトを実行し、MySQLデータベースに接続して情報を取得し、処理されたコンテンツをWebサーバーに渡して表示することができます。
CentOS 7サーバー内でデフォルトで使用可能なPHPバージョンは古くなっています。そのため、PHP 7+を入手して、CentOS 7サーバーにインストールするには、サードパーティのパッケージリポジトリをインストールする必要があります。 Remi は、CentOSサーバー用の最新のPHPリリースを提供する人気のあるパッケージリポジトリです。
CentOS 7のRemiリポジトリをインストールするには、次のコマンドを実行します。
- sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
インストールが完了したら、コマンドを実行して、好みのバージョンのPHPを含むリポジトリを有効にする必要があります。 Remiリポジトリで利用可能なPHP7以降のリリースを確認するには、次のコマンドを実行します。
- yum --disablerepo="*" --enablerepo="remi-safe" list php[7-9][0-9].x86_64
次のような出力が表示されます。
OutputLoaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* remi-safe: mirrors.ukfast.co.uk
Available Packages
php70.x86_64 2.0-1.el7.remi remi-safe
php71.x86_64 2.0-1.el7.remi remi-safe
php72.x86_64 2.0-1.el7.remi remi-safe
php73.x86_64 2.0-1.el7.remi remi-safe
php74.x86_64 1.0-3.el7.remi remi-safe
php80.x86_64 1.0-3.el7.remi remi-safe
このガイドでは、現在PHPの最も更新されている安定バージョンであるPHP7.4をインストールします。 正しいRemiパッケージを有効にしてPHP7.4をインストールするには、次のコマンドを実行します。
- sudo yum-config-manager --enable remi-php74
これで、使用を続行できます yum
通常どおりPHPをインストールします。 次のコマンドは、PHP 7.4をNginx内にセットアップし、MySQLベースのデータベースに接続できるようにするために必要なすべてのパッケージをインストールします。
- sudo yum install php php-mysqlnd php-fpm
選択したバージョンとしてPHPが使用可能であることを確認するには、次のコマンドを実行します。
- php --version
次のような出力が表示されます。
OutputPHP 7.4.5 (cli) (built: Apr 14 2020 12:54:33) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
これで、PHPがシステムに正常にインストールされました。 次に、デフォルト構成にいくつかの調整を加える必要があります。 CentOSでのファイルの編集を容易にするために、最初にインストールします nano
、よりユーザーフレンドリーなテキストエディタ vi
:
- sudo yum install nano
を開きます /etc/php-fpm.d/www.conf
を使用した構成ファイル nano
または選択した編集者:
- sudo nano /etc/php-fpm.d/www.conf
今探して user
と group
ディレクティブ。 使用している場合 nano
、あなたは打つことができます CTRL
+W
開いているファイル内でこれらの用語を検索します。
…
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache
…
あなたは両方が user
と group
変数はに設定されます apache
. これらをに変更する必要があります nginx
:
…
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
…
次に、 listen
指令。 デフォルトでは、 php-fpm
TCPを介して特定のホストとポートでリッスンします。 サーバーの全体的なパフォーマンスが向上するため、この設定を変更して、ローカルソケットファイルをリッスンするようにします。 を含む行を変更します listen
次の指令:
listen = /var/run/php-fpm/php-fpm.sock;
最後に、定義したソケットファイルの所有者とグループの設定を変更する必要があります。 listen
指令。 を見つけます listen.owner
, listen.group
と listen.mode
ディレクティブ。 これらの行はデフォルトでコメント化されています。 上記を削除してコメントを外します ;
行頭に署名します。 次に、所有者とグループをに変更します nginx
:
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
編集が完了したら、ファイルを保存して閉じます。 使用している場合 nano
、を押してそうします CTRL + X
、 それから Y
と ENTER
.
有効にして開始するには php-fpm
サービス、実行:
- sudo systemctl start php-fpm
これで、PHP環境の準備が整いました。 次に、PHPスクリプトのすべてのリクエストを送信するようにNginxを構成します。 php-fpm
.
ステップ4—PHPページを処理するためのNginxの構成
これで、必要なすべてのコンポーネントがインストールされました。 まだ行う必要がある唯一の構成変更は、動的コンテンツにPHPプロセッサを使用するようにNginxに指示することです。
Nginxには専用のディレクトリがあり、サーバーブロックを使用して、ホストされている各Webサイトを個別の構成ファイルとして定義できます。 これは、Apacheの仮想ホストに似ています。
ただし、デフォルトのインストールでは、このディレクトリは空です。 このサーバーでデフォルトのPHPWebサイトとして機能する新しいファイルを作成します。これにより、で定義されているデフォルトのサーバーブロックが上書きされます。 /etc/nginx/nginx.conf
ファイル。
まず、で新しいファイルを開きます /etc/nginx/conf.d
ディレクトリ:
- sudo nano /etc/nginx/conf.d/default.conf
次のPHPサーバー定義ブロックを構成ファイルにコピーし、忘れずに server_name
サーバーのドメイン名またはIPアドレスを指すようにディレクティブ:
server {
listen 80;
server_name server_domain_or_IP;
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
完了したら、ファイルを保存して閉じます。
次に、Nginxを再起動して変更を適用します。
- sudo systemctl restart nginx
これで、Webサーバーが完全にセットアップされました。 次のステップでは、PHPとNginxの統合をテストします。
ステップ5—WebサーバーでのPHP処理のテスト
Webサーバーがセットアップされたので、テストPHPスクリプトを作成して、Nginxが正しく処理されていることを確認できます。 .php
の助けを借りてスクリプト php-fpm
.
スクリプトを作成する前に、Nginxのドキュメントルートのデフォルトの所有権設定を変更して、通常のsudoユーザーがその場所にファイルを作成できるようにします。
次のコマンドは、デフォルトのNginxドキュメントルートの所有権を sammy というユーザーとグループに変更するため、このコマンドで強調表示されているユーザー名とグループを、システムのユーザー名とグループを反映するように置き換えてください。
- sudo chown -R sammy.sammy /usr/share/nginx/html/
次に、テストPHPページを作成して、Webサーバーが期待どおりに機能することを確認します。
と呼ばれる新しいPHPファイルを作成します info.php
で /usr/share/nginx/html
ディレクトリ:
- nano /usr/share/nginx/html/info.php
次のPHPコードは、サーバーで実行されている現在のPHP環境に関する情報を表示します。
<?php
phpinfo();
終了したら、ファイルを保存して閉じます。
これで、WebサーバーがPHPスクリプトによって生成されたコンテンツを正しく表示できるかどうかをテストできます。 ブラウザに移動し、サーバーのホスト名またはIPアドレスにアクセスしてから、 /info.php
:
http://server_host_or_IP/info.php
次のようなページが表示されます。
そのページでPHPサーバーに関する関連情報を確認した後、PHP環境とCentOSサーバーに関する機密情報が含まれているため、作成したファイルを削除することをお勧めします。 使用できます rm
そのファイルを削除するには:
- rm /usr/share/nginx/html/info.php
後で必要になった場合は、いつでもこのファイルを再生成できます。
結論
このガイドでは、NginxをWebサーバーとして使用し、最新のPHPリリースバージョンを使用して、訪問者にPHPWebサイトとアプリケーションを提供するための柔軟な基盤を構築しました。 PHPリクエストを処理するようにNginxを設定しました php-fpm
、また、Webサイトのデータを保存するためにMariaDBデータベースを設定します。