はじめに
Laravelは、オープンソースで有名な最新のPHPベースのWebフレームワークであり、表現力があり、エレガントで、理解しやすい構文を備えているため、大規模で堅牢なWebアプリケーションを簡単に構築できます。
その主な機能には、シンプルで高速なルーティングエンジン、強力な依存性注入コンテナ、セッションおよびキャッシュストレージ用の複数のバックエンド、表現力豊かで直感的なデータベースORM(オブジェクトリレーショナルマッピング)、堅牢なバックグラウンドジョブ処理、およびリアルタイムのイベントブロードキャストが含まれます。
また、Composer(依存関係を管理するためのPHPパッケージマネージャー)やArtisan(Webアプリケーションを構築および管理するためのコマンドラインインターフェイス)などのツールを使用します。
最新バージョンのLaravelPHPWebフレームワークをCentOS8Linuxディストリビューションにインストールする方法を学習します。
LEMPスタックをインストールする
1。 まず、システムソフトウェアパッケージを更新し、 LEMPをインストールします スタック( Linux 、 Nginx 、 MariaDB / MySQL 、および PHP )次のdnfコマンドを使用します。
# dnf update
# dnf install nginx php php-fpm php-common php-xml php-mbstring php-json php-zip mariadb-server php-mysqlnd
2。 LEMPの場合 インストールが完了したら、 PHP-PFMを開始する必要があります 、 Nginx およびMariaDB 次のsystemctlコマンドを使用するサービス。
# 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): press Enter
Set root password? [Y/n]y
#set new root password Remove anonymous users? [Y/n] press y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] press y
Reload privilege tables now? [Y/n]
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。 最後に、 LEMP スタックは、システムのIPアドレスでブラウザを使用して実行されています。
http://server-IP

PHP-FPMとNginxの構成と保護
1。 Nginxからのリクエストを処理するには ウェブサーバー、 PHP-FPM UnixソケットまたはTCPソケットでリッスンできます。これはリッスンによって定義されます。 /etc/php-fpm.d/www.confのパラメータ 構成ファイル。
# vi /etc/php-fpm.d/www.conf
デフォルトでは、リッスンするように構成されています 次のスクリーンショットに示すように、Unixソケット上で。ここでの値は、後でNginxサーバーブロックファイルで指定されます。

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

3。 次に、 /etc/php.iniでシステム全体のタイムゾーンも設定します 構成ファイル。
# vim /etc/php.ini
「date.timezone」の行を探します コメントを外し、スクリーンショットに示すように値を設定します(地域/大陸および国に適用される値を使用してください)。
date.timezone = Africa/Cairo

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

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

ComposerとLaravelPHPフレームワークをインストールする
1。 次に、作曲家をインストールします 次のコマンドを実行してパッケージ化します。最初のコマンドはインストーラーをダウンロードし、PHPを使用して実行します。
[unixcop@unixcop ~]$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading…
Composer (version 2.1.5) successfully installed to: /home/unixcop/composer.phar
Use it: php composer.phar
[unixcop@unixcop ~]$
次に、次のコマンドを実行します:
mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer
2。 これで作曲家 がインストールされている場合は、次のようにLaravelファイルと依存関係をインストールするために使用します。 newunixcop.comを置き換えます Laravelファイルが保存されるディレクトリの名前を使用すると、絶対パス(またはNginx構成ファイルのルートパス)は /var/www/html/newunixcop.comになります。 。
# cd /var/www/html/
# composer create-project --prefer-dist laravel/laravel newunixcop.com

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

4。 ストレージで正しい所有権と権限を構成する必要があります およびブートストラップ/キャッシュ NginxWebサーバーで書き込み可能なディレクトリ。
[root@unixcop html]# chown -R :nginx /var/www/html/newunixcop.com/storage/
[root@unixcop html]# chown -R :nginx /var/www/html/newunixcop.com/bootstrap/cache/
[root@unixcop html]# chown -R :nginx /var/www/html/newunixcop.com/storage/
[root@unixcop html]# chmod -R 0775 /var/www/html/newunixcop.com/bootstrap/cache/
5。 SELinuxの場合 サーバーで有効になっている場合は、ストレージのセキュリティコンテキストも更新する必要があります およびブートストラップ/キャッシュ ディレクトリ。
このコマンドを実行します:
[root@unixcop html]# restorecon -Rv 'https://1118798822.rsc.cdn77.org/var/www/html/newunixcop.com'
Relabeled /var/www/html/newunixcop.com/storage/logs from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:httpd_log_t:s0
Relabeled /var/www/html/newunixcop.com/storage/logs/.gitignore from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:httpd_log_t:s0
[root@unixcop html]#
Laravel用にNginxサーバーブロックを構成する
1。 Nginxの場合 ウェブサイトまたはアプリケーションの提供を開始するには、 .confにそのサーバーブロックを作成する必要があります /etc/nginx/conf.d/の下のファイル 示されているディレクトリ。
# vim /etc/nginx/conf.d/newunixcop.com.conf
次の構成をコピーしてファイルに貼り付けます。ルートとfastcgi_passに注意してください パラメータ。
server {
listen 80;
server_name newunixcop.com;
root /var/www/html/newunixcop.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;
}
}

2。 ファイルを保存して、 Nginxかどうかを確認します 実行することで構成構文が正しくなります。
[root@unixcop ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@unixcop ~]#
3。 次に、 PHP-FPMを再起動します およびNginx 最近の変更を有効にするためのサービス。
# systemctl restart php-fpm
# systemctl restart Nginx
WebブラウザからLaravelWebサイトにアクセスする
4。 LaravelのWebサイト( newunixcop.com )にアクセスするには 、完全修飾ドメイン名(FQDN)ではなく、登録されていない(テスト目的でのみ使用されます)ため、 / etc / hostsを使用します ローカルDNSを作成するためにローカルマシンにファイルします。
次のコマンドを実行して、サーバーのIPアドレスとドメインを必要なファイルに追加します(設定に応じて値を置き換えます)。
[root@unixcop ~]# echo "192.168.122.60 newunixcop.com" | sudo tee -a /etc/hosts
192.168.122.60 newunixcop.com
[root@unixcop ~]#
5。 ローカルマシンでWebブラウザを開き、次のアドレスを使用してナビゲートします。
http://newunixcop.com

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