GNU/Linux >> Linux の 問題 >  >> Fedora

PHPでNginxをインストールし、Fedora 32でOpcache、Redis、Lets Encryptを使用してMariaDB(LEMPスタック)をインストールする方法

LEMPソフトウェアスタックは、サーバーがWebサイトやアプリをホストできるようにするために一緒にインストールされるオープンソースソフトウェアのグループです。 Lの頭字語です。 inux、 E Nginxサーバー、 M ySQL(MariaDBを使用)、および P HP。

このガイドでは、LeMPスタックをFedora32ベースのサーバーにインストールします。また、phpMyAdmin、Redis、Opcache、Let'sEncryptSSLもインストールします。

前提条件

Fedora32を実行しているサーバー。

ルート以外のsudoユーザー。

すべてが更新されていることを確認してください。

$ sudo dnf upgrade

システムに必要なパッケージはほとんどありません。

$ sudo dnf install wget curl nano -y

これらのパッケージの一部は、システムにすでにインストールされている可能性があります。

SELinuxを無効にします。

$ sudo setenforce 0
ファイアウォールの構成

最初のステップは、ファイアウォールを構成することです。 Fedoraサーバーには、Firewalldファイアウォールがプリインストールされています。

ファイアウォールが実行されているかどうかを確認します。

$ sudo firewall-cmd --state

次の出力が得られるはずです。

running

ファイアウォールのデフォルトゾーンをパブリックに設定します。

$ sudo firewall-cmd --set-default-zone=public

現在許可されているサービス/ポートを確認してください。

$ sudo firewall-cmd --zone=public --permanent --list-services

次の出力が表示されます。

dhcpv6-client mdns ssh

HTTPおよびHTTPSポートを許可します。

$ sudo firewall-cmd --zone=public --permanent --add-service=http
$ sudo firewall-cmd --zone=public --permanent --add-service=https

ファイアウォールのステータスをもう一度確認してください。

$ sudo firewall-cmd --zone=public --permanent --list-services

同様の出力が表示されるはずです。

dhcpv6-client http https mdns ssh

ファイアウォールをリロードします。

$ sudo systemctl reload firewalld

PHPをインストールする

Fedora32はデフォルトでPHP7.4に同梱されていますが、更新されたPHPリポジトリを使用するために、REMIリポジトリを追加します。

PHPパッケージをインストールするための公式FedoraリポジトリであるREMIリポジトリをインストールします。

$ sudo dnf -y install https://rpms.remirepo.net/fedora/remi-release-32.rpm

remiを有効にします リポジトリを作成し、remi-modularを無効にします リポジトリ。これにより、PHP7.4パッケージのインストールに必要なリポジトリが有効になります。

$ sudo dnf config-manager --set-enabled remi
$ sudo dnf config-manager --set-disabled remi-modular

PHP7.4をいくつかの追加パッケージと一緒にインストールします。

$ sudo dnf install -y php-cli php-fpm php-mysqlnd

PHPが正しく機能しているかどうかを確認します。

$ php --version

同様の出力が表示されるはずです。

PHP 7.4.6 (cli) (built: May 12 2020 08:09:15) ( NTS ) 
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

MariaDBをインストール

MariaDBはMySQLのドロップイン代替品です。つまり、MariaDBを実行および操作するコマンドはMySQLのコマンドと同じです。

Fedora 32には、デフォルトで、現在利用可能な最新の安定バージョンであるMariaDB 10.4が付属しているため、これを使用します。

MariaDBをインストールするには、次のコマンドを発行します。

$ sudo dnf install mariadb-server -y

MariaDBが正しくインストールされているかどうかを確認してください。

$ mysql --version

次の出力が表示されます。

mysql  Ver 15.1 Distrib 10.4.12-MariaDB, for Linux (x86_64) using  EditLine wrapper

MariaDBサービスを有効にして開始します。

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb

次のコマンドを実行して、rootパスワードの指定、匿名ユーザーの削除、rootログインのリモートでの禁止、テストテーブルの削除などのデフォルト設定を実行します。

$ sudo mysql_secure_installation

MariaDB 10.4では、rootパスワードを使用するか unix_socketを使用するかを尋ねられます。 プラグイン。 unix_socket プラグインを使用すると、Linuxユーザーの資格情報を使用してMariaDBにログインできます。 phpMyAdminなどのサードパーティ製アプリを使用するには、従来のユーザー名/パスワードが必要ですが、より安全であると見なされます。このチュートリアルでは、unix_socketプラグインの使用に固執します。データベース用に作成した特定のユーザーを介して、phpMyAdminを引き続き使用できます。

Enterキーを押すと、デフォルトのオプション(大文字のオプション、この場合はY)が選択されます。

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): [PRESS ENTER]
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] [PRESS ENTER]
Enabled successfully!
Reloading privilege tables..
 ... Success!

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] [ANSWER n]
... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] [PRESS ENTER]
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] [PRESS ENTER]
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] [PRESS ENTER]
 \- Dropping test database...
 ... Success!
 \- Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] [PRESS ENTER]
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

それでおしまい。次回MySQLにログインするときは、次のコマンドを使用します

$ sudo mysql

プロンプトが表示されたら、rootパスワードを入力します。

Redisをインストール

Fedora 32にはRedisパッケージのv5​​.0.8が含まれていますが、PHP用に以前にインストールしたRemiリポジトリには、このチュートリアルの執筆時点で最新バージョンのRedis(v6.0.1)が含まれています。

次のコマンドを使用して、Redisと対応するPHPRedis拡張機能をインストールします。

$ sudo dnf install redis php-redis

Redisサービスを有効にします。

$ sudo systemctl enable --now redis
Redisサーバーを構成する

Redisサーバーでいくつかの基本的な構成を実行してみましょう。

ファイル/etc/redis.confを開きます Nanoエディターを使用します。

$ sudo nano /etc/redis.conf

リモートクライアントをRedisインスタンスに接続する場合は、bind 127.0.0.1という行を見つけます。 次のように変更します。

bind 0.0.0.0

Redisがリッスンするデフォルトのポートを6379から任意の値に変更することもできます。

port 3458

Redisをキャッシュサーバーとして設定するには、次の値を指定どおりに設定します。

maxmemory 256mb
maxmemory-policy allkeys-lru

これにより、最大メモリが256MBに達したときに、LRUアルゴリズムを使用してすべてのキーを削除するようにRedisに指示します。要件と使用しているサーバーに応じてメモリ値を設定できます。

パスワードを設定して、Redisを必要とするすべてのクライアントが最初に認証する必要があるようにすることができます。これを行うには、次のディレクティブを使用してパスワードを設定します。

requirepass  <AuthPassword>

変更するディレクティブは、構成ファイルにあります。終了したら、Ctrl + Xを押して、 Yと入力します。 ファイルを保存するように求められたら。

Redisサーバーを再起動して変更を適用します。

$ sudo systemctl restart redis

また、Redisが機能するように、ファイアウォールにルールを追加する必要があります。

$ sudo firewall-cmd --zone=public --permanent --add-port=6379/tcp
$ sudo firewall-cmd --reload

上記の構成ファイルで選択したポートに一致するように、上記のコマンドの値を変更する必要があります。

Nginxをインストール

Fedora 32には、デフォルトでNginxの最新のStableバージョンが付属しています。 (1.18.0)。

Nginxをインストールします。

$ sudo dnf install nginx -y

正しく機能しているかどうかを確認します。

$ nginx -v

インストールすることを選択したNginxのバージョンに応じて、次の出力が表示されます。

nginx version: nginx/1.18.0

Nginxを起動して有効にします。

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

ブラウザでサーバーのIPアドレスを開き、次のページを表示します。 Nginxが正しく機能していることを意味します。

Nginxを構成する

サーバーブロックが存在するディレクトリを設定します。

$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled

サイトが存在するディレクトリを作成します。

$ sudo mkdir /var/www/example.com/html -p

-pを使用する ディレクティブは、以前は存在しなかった親ディレクトリを作成します。

次のコマンドを実行して、サイトの構成ファイルを追加します。

$ sudo nano /etc/nginx/sites-available/example.com.conf

次のコードをエディターに貼り付けます。

server {
  listen          *:80;
  server_name     example.com;
  root            /var/www/example.com/html;
  index           index.php index.html;

  location / {
    try_files   $uri $uri/ =404;
  }
    
  access_log /var/log/nginx/example.com.access.log;
  error_log /var/log/nginx/example.com.error.log;

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass  unix:/run/php-fpm/www.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    include  fastcgi_params;
  }
}

Ctrl + Xを押します エディターを閉じてYを押します ファイルを保存するように求められたら。

このファイルは、example.comをホストすることを前提としています ディレクトリ/var/www/html 。ドメインを使用せず、IPアドレス/ローカルホストからのみアクセスできるようにサーバーを構成する場合は、対応するサーバーブロック設定をnginx.confから削除する必要があります。 そうしないと、作成するサーバーブロックが混乱します。

この構成ファイルをsites-enabledにリンクして、アクティブ化します。 ディレクトリ。

$ sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

/etc/nginx/nginx.confを開きます 編集用のファイル。

$ sudo nano /etc/nginx/nginx.conf	

include /etc/nginx/conf.d/*.confの行の後に次の行を貼り付けます

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

types_hash_max_sizeの値を変更します 2048から4096まで。

types_hash_max_size 4096;

Ctrl + Xを押します エディターを閉じてYを押します ファイルを保存するように求められたら。 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

PHP-FPMを構成する

ファイル/etc/php-fpm.d/www.confを開きます 。

$ sudo nano /etc/php-fpm.d/www.conf

Unixユーザー/PHPプロセスのグループをnginxに設定する必要があります 。 user=apacheを見つけます およびgroup=apache ファイル内の行をnginxに変更します。

...
; 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 = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

PHP-fpmプロセスを再起動します。

$ sudo systemctl restart php-fpm

PHPセットアップをテストするには、ファイルtest.phpを作成します htmlで フォルダ。

$ sudo nano /var/www/example.com/html/test.php

次のコンテンツを追加し、 Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

<?php phpinfo();

http://<yourserverip>/test.phpを起動します Webブラウザで、次のように表示されます。

phpMyAdminをインストール

Remiリポジトリには最新のphpMyAdminが搭載されているため、次のコマンドを使用して簡単にインストールできます。

$ sudo dnf install phpmyadmin

/usr/share/phpMyAdminにインストールされます ディレクトリ。

phpMyAdminを構成する

NginxウェブサーバーがphpMyAdminファイルを正しく検索して提供するには、実際の場所からNginxのルートドキュメントディレクトリへのシンボリックリンクを作成する必要があります。

これを行うには、次のコマンドを実行します。

$ sudo ln -s /usr/share/phpmyadmin /var/www/example.com/html/phpmyadmin

phpMyAdminのインストールは機能しています。アクセスするには、 http://example.com/phpmyadminを開くだけです。 。

phpセッションエラーが発生した場合は、次のコマンドを実行して、PHPセッションディレクトリに適切な権限を付与します。 test.phpからセッションパスを確認してください 以前に作成したファイル。私たちにとっては、/var/lib/php/sessionにあります。 。

$ sudo chown -R nginx:nginx /var/lib/php/session

デフォルトでは、このデフォルトの場所は、ハッカーがphpMyAdminインストールを見つけることができる最も一般的な場所であるため、変更する必要があります。これを行うには、次のコマンドを実行します。

$ sudo mv phpmyadmin sm123

基本的に、phpMyAdminの場所をsm123に移動しました フォルダ。アクセスするには、 http://example.com/sm123を開く必要があります。 ブラウザで。

ここではMySQLでunix_authenticationを使用しているため、phpMyAdminを介してログインするrootユーザーはありません。 phpMyAdminを使用できるようにするには、最初にMySQLユーザーを作成し、データベースに権限を付与する必要があります。

Opcacheを構成する

RemiのリポジトリからphpMyAdminをインストールすると、Opcacheもインストールされます。 phpMyAdminをインストールしておらず、インストールしたくない場合は、次のコマンドを使用してOpcacheをインストールできます。

$ sudo dnf install php-opcache	

インストールされていることを確認します。

$ php -v
PHP 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
    with Zend OPcache v7.4.5, Copyright (c), by Zend Technologies

Opcache設定を変更するには、ファイル/etc/php.d/10-opcache.iniを開きます。 。

$ sudo nano /etc/php.d/10-opcache.ini

次の設定は、Opcacheの使用を開始するためのものであり、通常、良好なパフォーマンスとして推奨されます。 ;を削除してコメントを解除することで、構成を有効にできます その前に。

opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60

Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

サーバーを再起動して設定を適用します。

$ sudo systemctl reload nginx

Let'sEncryptを介してSSLをインストール

SSLは、あらゆるWebサイトの重要な部分になっています。ここでは、Let'sEncryptサービスを使用してSSLをインストールします。

そのためには、まず、Certbotツールをインストールします。

$ sudo dnf install certbot-nginx

証明書を生成します。

$ sudo certbot --nginx -d example.com -d www.example.com -d phpmyadmin.example.com

メインサイトとphpMyAdminドメインの両方の証明書を作成しています。

システムでcertbotを初めて実行する場合は、電子メールアドレスを入力し、利用規約に同意するよう求められます。また、あなたがノーと言うことができるEFF財団とデータを共有することに同意するかどうか尋ねられます。その後、certbotはLet's Encryptサーバーと通信し、チャレンジを実行してドメインを確認します。

それが成功すると、HTTPSリダイレクトを処理する方法を尋ねられます。

Please choose whether HTTPS access is required or optional.
-------------------------------------------------------------------------------
1: Easy - Allow both HTTP and HTTPS access to these sites
2: Secure - Make all requests redirect to secure HTTPS access
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

選択してEnterキーを押します。証明書が作成され、Nginx構成がSSL設定で更新されます。

証明書の準備が整いました。https://example.comにアクセスすると、今すぐサイトを開くことができます。

SSL自動更新の構成

これは、このチュートリアルを終了する前の最後のステップです。 SSLを更新するには、cronを使用します。

Crontabエディタを使用してCronにエントリを追加する必要があります。 crontabエディターを開くには、次のコマンドを実行します。

$ EDITOR=nano sudo crontab -e

EDITOR=nano コマンドの前にあると、FedoraはデフォルトでVIMエディターを優先するため、crontabがNanoエディターを開くようにします。

次の行を下部に貼り付けます。

. . .
25 2 * * * /usr/bin/certbot renew --quiet

25 2 * * * この行の一部は、「毎日午前2時25分に次のコマンドを実行する」ことを意味します。いつでも選択できます。

Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

renew Certbotのコマンドは、システムにインストールされているすべての証明書をチェックし、30日以内に期限切れになるように設定されている証明書を更新します。 --quiet 情報を出力したり、ユーザー入力を待機したりしないようにCertbotに指示します。

このコマンドは毎日実行されます。

結論

このチュートリアルは以上です。 LEMPセットアップが完了し、Webサイトとアプリケーションの作成とホスティングを開始できます。


Fedora
  1. Fedora 30サーバーにLEMP(Linux、Nginx、MariaDB、PHP)をインストールする方法

  2. CentOS 7にPHPとMySQL(LEMPスタック)を使用してNginxをインストールする方法

  3. Fedora30にNginxでPhorumをインストールする方法

  1. Fedora29にNginxを使用してPagekitCMSをインストールする方法

  2. Ubuntu 18.04にPHPとMySQL(LEMPスタック)を使用してNginxをインストールする方法

  3. Fedora29にNginxでInvoicePlaneをインストールする方法

  1. Fedora29にNginxを使用して10月のCMSをインストールする方法

  2. NGINXを使用してShopwareをインストールし、CentOS7で暗号化する方法

  3. NGINXを使用してShopwareをインストールし、Fedora30で暗号化する方法