CentOS8にNginxを使用してLaravelPHPフレームワークをインストールする方法


Laravelは、オープンソースで有名な最新のPHPベースのWebフレームワークであり、表現力があり、エレガントで、理解しやすい構文を備えているため、大規模で堅牢なWebアプリケーションを簡単に構築できます。

その主な機能には、シンプルで高速なルーティングエンジン、強力な依存性注入コンテナ、セッションとキャッシュストレージ用の複数のバックエンド、表現力豊かで直感的なデータベースORM(オブジェクトリレーショナルマッピング)、堅牢なバックグラウンドジョブ処理、リアルタイムのイベントブロードキャストが含まれます。

また、Composer(依存関係を管理するためのPHPパッケージマネージャー)やArtisan(Webアプリケーションを構築および管理するためのコマンドラインインターフェイス)などのツールを使用します。

この記事では、最新バージョンのLaravel PHPWebフレームワークをCentOS8Linuxディストリビューションにインストールする方法を学習します。

Laravelフレームワークには次の要件があります。

  • PHP >= 7.2.5 with these PHP extensions OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype and JSON.
  • Composer – for installing and manage dependencies.

ステップ1:CentOS8にLEMPスタックをインストールする

1.開始するには、次のdnfコマンドを使用して、システムソフトウェアパッケージを更新し、LEMPスタック(Linux、Nginx、MariaDB/MySQL、およびPHP)をインストールします。

# dnf update
# dnf install nginx php php-fpm php-common php-xml php-mbstring php-json php-zip mariadb-server php-mysqlnd

2. LEMPのインストールが完了したら、次のsystemctlコマンドを使用してPHP-PFM、Nginx、およびMariaDBサービスを開始する必要があります。

# systemctl start php-fpm nginx mariadb
# systemctl enable php-fpm nginx mariadb
# systemctl status php-fpm nginx mariadb

3.次に、次に示すように、セキュリティスクリプトを使用してMariaDBデータベースエンジンを保護および強化する必要があります。

# mysql_secure_installation

サーバーのインストールを保護するには、次の質問に答えてください。

Enter current password for root (enter for none): Enter Set root password? [Y/n] y #set new root password Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] y Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y

4. Firewalldサービスを実行している場合は、ファイアウォールでHTTPおよびHTTPSサービスを開いて、NginxWebサーバーへのクライアント要求を有効にする必要があります。

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent --add-service=https
# firewall-cmd --reload

5.最後に、システムのIPアドレスのブラウザを使用してLEMPスタックが実行されていることを確認できます。

http://server-IP

ステップ2:PHP-FPMとNginxの構成と保護

6. Nginx Webサーバーからの要求を処理するために、PHP-FPMはUnixソケットまたはTCPソケットでリッスンできます。これは、/ etc/php-fpm.d /www.conf構成ファイルのlistenパラメーターによって定義されます。

# vi /etc/php-fpm.d/www.conf

デフォルトでは、次のスクリーンショットに示すように、Unixソケットでリッスンするように構成されています。ここでの値は、後でNginxサーバーブロックファイルで指定されます。

7. Unixソケットを使用している場合は、スクリーンショットに示すように、正しい所有権とアクセス許可も設定する必要があります。次のパラメーターのコメントを解除し、それらの値をユーザーとグループに設定して、Nginxが実行されているユーザーとグループに一致させます。

listen.owner = nginx
listen.group = nginx
listen.mode = 066

8.次に、/ etc /php.ini構成ファイルでシステム全体のタイムゾーンも設定します。

# vi /etc/php.ini

“; date.timezone” の行を探してコメントを外し、スクリーンショットに示すようにその値を設定します(お住まいの地域/大陸および国に適用される値を使用してください)。

 
date.timezone = Africa/Kampala

9.他の拡張機能を使用してPHPコードを実行する悪意のあるユーザーからのリクエストをNginxがPHP-FPMに渡すリスクを軽減するには、次のパラメーターのコメントを解除し、その値を 0 に設定します。

cgi.fix_pathinfo=1

10.前のポイントに関連して、/ etc/php-fpm.d /www.confファイルの次のパラメーターのコメントも解除します。詳細については、コメントをお読みください。

security.limit_extensions = .php .php3 .php4 .php5 .php7

ステップ3:ComposerとLaravelPHPフレームワークをインストールする

11.次に、次のコマンドを実行して、Composerパッケージをインストールします。最初のコマンドはインストーラーをダウンロードし、PHPを使用して実行します。

# curl -sS https://getcomposer.org/installer | php
# mv composer.phar /usr/local/bin/composer
# chmod +x /usr/local/bin/composer

12. Composerがインストールされたので、Composerを使用して次のようにLaravelファイルと依存関係をインストールします。 mysite.comをLaravelファイルが保存されるディレクトリの名前に置き換えます。絶対パス(またはNginx構成ファイルのルートパス)は/var/www/html/mysite.comになります。

# cd /var/www/html/
# composer create-project --prefer-dist laravel/laravel mysite.com

プロセス中にすべてがうまくいけば、アプリケーションは正常にインストールされ、次のスクリーンショットに示すようにキーが生成されます。

13.インストールプロセス中に、 .env 環境ファイルが作成され、必要なアプリケーションも生成されたため、以前のように手動で作成する必要はありません。これを確認するには、lsコマンドを使用してlaravelルートディレクトリの長いリストを実行します。

# ls -la mysite.com/

14.次に、Nginx Webサーバーで書き込み可能になるように、ストレージとブートストラップ/キャッシュディレクトリの正しい所有権とアクセス許可を構成する必要があります。

# chown -R :nginx /var/www/html/mysite.com/storage/
# chown -R :nginx /var/www/html/mysite.com/bootstrap/cache/
# chmod -R 0777 /var/www/html/mysite.com/storage/
# chmod -R 0775 /var/www/html/mysite.com/bootstrap/cache/

15.サーバーでSELinuxが有効になっている場合は、ストレージおよびブートストラップ/キャッシュディレクトリのセキュリティコンテキストも更新する必要があります。

# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/mysite.com/storage(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/mysite.com/bootstrap/cache(/.*)?'
# restorecon -Rv '/var/www/html/mysite.com'

ステップ4:Laravel用にNginxサーバーブロックを構成する

16. NginxがWebサイトまたはアプリケーションの提供を開始するには、図のように/etc/nginx/conf.d/ディレクトリの下の .conf ファイルにそのサーバーブロックを作成する必要があります。

# vi /etc/nginx/conf.d/mysite.com.conf

次の構成をコピーしてファイルに貼り付けます。 rootパラメーターとfastcgi_passパラメーターに注意してください。

server {
	listen      80;
       server_name mysite.com;
       root        /var/www/html/mysite.com/public;
       index       index.php;

       charset utf-8;
       gzip on;
	gzip_types text/css application/javascript text/javascript application/x-javascript  image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
        location / {
        	try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ \.php {
                include fastcgi.conf;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/run/php-fpm/www.sock;
        }
        location ~ /\.ht {
                deny all;
        }
}

17.ファイルを保存し、を実行してNginx構成構文が正しいかどうかを確認します。

# nginx -t

18.次に、PHP-FPMおよびNginxサービスを再起動して、最近の変更を有効にします。

# systemctl restart php-fpm
# systemctl restart Nginx

ステップ5:WebブラウザからLaravelWebサイトにアクセスする

19. mysite.comのLaravelWebサイトにアクセスするには、完全修飾ドメイン名(FQDN)ではなく、登録されていません(テスト目的でのみ使用されます)。ローカルマシンの/ etc/hostsファイルを使用します。ローカルDNSを作成します。

次のコマンドを実行して、サーバーのIPアドレスとドメインを必要なファイルに追加します(設定に応じて値を置き換えます)。

# ip add		#get remote server IP
$ echo "10.42.0.21  mysite.com" | sudo tee -a /etc/hosts

20.次に、ローカルマシンでWebブラウザーを開き、次のアドレスを使用してナビゲートします。

http://mysite.com

これで、CentOS 8にLaravelが正常にデプロイされました。これで、Laravelを使用してWebサイトまたはWebアプリケーションの開発を開始できます。詳細については、Laravelスタートガイドを参照してください。