検索
lemp_logo
記事の項目

最近の投稿

LEMP インストール

ウエブサーバーを Linux Nginx MySQL PHP で構築して Wordpress を動作させよう。

この記事の項目

参考サイト

https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-22-04

Nginx Webサーバーのインストール

Webページをサイト訪問者に表示するには、高性能WebサーバーであるNginxを使用します。APTパッケージマネージャーを使用して、このソフトウェアを取得します。

				
					$ sudo apt update
$ sudo apt install nginx
				
			

プロンプトが表示されたら Y そして ENTER Nginxをインストールすることを確認します。インストールが完了すると、Nginx Webサーバーがアクティブになり、Ubuntu 22.04サーバーで実行されます。

同じLAN内のPCからサーバーのIPアドレスをウエブブラウザでみると、

welcome_to_nginx

ファイアウォール設定

ウエブサーバー LEMP の動作確認だけならば、ファイアウォールは、無効 inactive のままで、無理に有効にして設定する必要はない良いでしょう。

Ubuntu22.04を普通にインストールすると、ファイアウォールは無効になっていました。

				
					$ sudo ufw status

Status: inactive
				
			

ファイアウォールを有効化するには、

				
					$ sudo ufw enable

Firewall is active and enabled on system startup
				
			

 ufw ファイアウォールが有効になっている場合、初期サーバーセットアップガイドで推奨されているように、Nginxへの接続を許可する必要があります。Nginxは、インストール時にいくつかの異なるUFWアプリケーションプロファイルを登録します。利用可能なUFWプロファイルを確認するには、次の手順を実行します:

				
					$ sudo ufw app list

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH
				
			

ポートで通常のHTTPトラフィックを許可する。

				
					$ sudo ufw allow 'Nginx HTTP'

Rules updated
Rules updated (v6)
				
			

ufw を有効にするとssh の通信もできなくなるので、sshのトラフィック許可の設定をしておきます。

				
					$ sudo ufw allow ssh

Rules updated
Rules updated (v6)
				
			

ステータスの確認

				
					$ sudo ufw status

Status: active

To                         Action      From
--                         ------      ----
Nginx HTTP                 ALLOW       Anywhere                  
22/tcp                     ALLOW       Anywhere                  
Nginx HTTP (v6)            ALLOW       Anywhere (v6)             
22/tcp (v6)                ALLOW       Anywhere (v6)     
				
			

Status が active になって、

HTTP と Port22 が許可された。
どこからでも許可されているので、sshは制限した方が安全だな。

MySQLのインストール

Webサーバーを稼働させたので、データベースシステムをインストールして、サイトのデータを保存および管理する必要があります。MySQLは、PHP環境で使用される一般的なデータベース管理システムです。

				
					$ sudo apt install mysql-server
				
			

インストールが完了したら、MySQLがプリインストールされたセキュリティスクリプトを実行することをお勧めします。このスクリプトは、安全でないデフォルト設定を削除し、データベースシステムへのアクセスをロックダウンします。次のコマンドを実行して、インタラクティブスクリプトを起動します:

				
					$ sudo mysql_secure_installation
				
			
				
					$ sudo mysql

mysql > exit
				
			

PHPのインストール

コンテンツを提供するためにNginxがインストールされ、データを保存および管理するためにMySQLがインストールされています。これで、PHPをインストールしてコードを処理し、Webサーバーの動的コンテンツを生成できます。

php8.1-fpm, これは“ PHP fastCGIプロセスマネージャー”の略で、現在のバージョンのPHP (を執筆時点で)使用して、処理のためにこのソフトウェアにPHPリクエストを渡すようにNginxに指示します。さらに php-mysql, PHPがMySQLベースのデータベースと通信できるようにするPHPモジュール。Core PHPパッケージは依存関係として自動的にインストールされます。

インストールするには php8.1-fpm そして php-mysql パッケージ、実行:

				
					$ sudo apt install php8.1-fpm php-mysql
				
			

Nginxを設定してPHPプロセッサを使用する

Ubuntu 22.04では、Nginxはデフォルトで有効になっている1つのサーバーブロックを持ち、のディレクトリからドキュメントを提供するように構成されています。

/var/www/htmlがwebのデフォルトルートになっています。

新たにルートWebディレクトリを次のように作成します  。

ドメイン名を、dname とすると

				
					$ sudo mkdir /var/www/dname
				
			

ディレクトリの所有権を $USER 現在のシステムユーザーを参照する環境変数:

インストールした Nginx のユーザー名は、www-dataだったので、

				
					sudo chown -R www-data:www-data /var/www/dname
				
			

次に、Nginxの新しい構成ファイルを開きます 。

sites-available 優先コマンドラインエディターを使用したディレクトリ。

				
					sudo nano /etc/nginx/sites-available/dname
				
			

内容は、

				
					server {
    listen 80;
    server_name dmane www.dname;
    root /var/www/dname;

    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
     }

    location ~ /\.ht {
        deny all;
    }

}
				
			

/etc/nginx/nginx.conf にNginx の設定ファイルが記されている。
設定ファイルの中に、他の設定を include するように記されている。

nginx.conf に /etc/nginx/site-enable にある設定ファイルを include するようになっている。

直接/etc/nginx/site-enable に設定ファイルを置くこともできるのだけれど、
/etc/nginx/sites-available/ に設定ファイルを置いて、/etc/nginx/site-enable にリンクさせるようだ。

/etc/nginx/sites-enabled/default ファイルはサンプルなので、unlink しておく。

				
					sudo ln -s /etc/nginx/sites-available/dname /etc/nginx/sites-enabled/

sudo unlink /etc/nginx/sites-enabled/default
				
			

Nginxの設定ファイルが正しいかテストする。

				
					sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
				
			

Nginxの設定ファイルが正しかったら、設定をリロードして設定を有効化する。

				
					sudo systemctl reload nginx
				
			

Nginx と PHP が正しく動作しているか確認しておく。

ウエブルートに

info.phpを作る

				
					nano /var/www/dname/info.php
				
			

info.php の内容は下のように

				
					<?php
phpinfo();
				
			

ウエブブラウザからアクセスすると、PHPの情報が表示される。

				
					http://dname/info.php
				
			
php_info

IP アドレスとサイト名の名前解決ができていない時は、IPアドレスでアクセスしてみる

				
					http://192.168.0.30/info.php  # アドレスはサンプル
				
			

PHPからのデータベース接続のテスト

PHPがMySQLに接続してデータベースクエリを実行できるかどうかをテストする。

adminという名前のユーザー , deta_dbというデータベースを作成しますしかし、これらの名前を異なる値に置き換えることができます。

				
					$ sudo mysql

mysql> CREATE DATABASE deta_db;
Query OK, 1 row affected (0.02 sec)
				
			

mysql のユーザーを作成しパスワードを設定する。

				
					mysql> CREATE USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
				
			

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Redis

$ sudo apt update $ sudo