如何在Fedora 32上使用Opgin,Redis和Let’s Encrypt将Nginx与PHP和MariaDB(LEMP堆栈)一起安装

如何在Fedora 32上使用Opgin,Redis和Let’s Encrypt将Nginx与PHP和MariaDB(LEMP堆栈)一起安装

LEMP软件堆栈是一起安装的一组开源软件,以允许服务器托管网站和应用程序。它是的首字母缩写 大号inux, ËNginx服务器 中号ySQL(使用MariaDB)和 P生命值。

在本指南中,我们将LEMP堆栈安装在基于Fedora 32的服务器上。它还会安装phpMyAdmin,Redis,Opcache和“让我们加密SSL”。

前提

运行Fedora 32的服务器。

非root用户sudo用户。

确保所有内容都已更新。

$ sudo dnf upgrade

系统所需的软件包很少。

$ sudo dnf install wget curl nano -y

其中一些软件包可能已经安装在您的系统上。

禁用SELinux。

$ sudo setenforce 0

配置防火墙

第一步是配置防火墙。防火墙防火墙已预先安装在Fedora服务器上。

检查防火墙是否正在运行。

$ sudo firewall-cmd --state

您应该获得以下输出:

running

将防火墙默认区域设置为public。

$ 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

Fedora 32默认附带PHP 7.4,但是为了拥有更新的PHP存储库,我们将添加REMI存储库。

安装REMI存储库,这是用于安装PHP软件包的官方Fedora存储库。

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

启用 remi 禁用存储库 remi-modular 仓库。这将启用安装PHP 7.4软件包所需的存储库。

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

使用其他软件包安装PHP 7.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和相应的PHP Redis扩展:

$ sudo dnf install redis php-redis

启用Redis服务。

$ sudo systemctl enable --now redis

Redis服务器配置

让我们在Redis服务器上执行一些基本配置。

打开文件 /etc/redis.conf 纳米编辑器。

$ 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

这告诉Redis在达到最大256MB内存时使用LRU算法删除密钥。您可以根据需要和使用的服务器设置内存值。

您可以设置密码,以便首先需要需要Redis的客户端进行身份验证。为此,请使用以下指令设置密码:

requirepass  

更改指令位于配置文件中。完成后,按Ctrl + X并按Enter ÿ 当提示您保存文件时。

重新启动Redis服务器以应用更改。

$ sudo systemctl restart redis

您还需要向防火墙添加规则,Redis才能正常工作。

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

您将需要更改以上命令的值,以匹配您在上面的配置文件中选择的端口。

安装Nginx

Fedora 32默认附带Nginx的最新稳定版本。 (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 关闭编辑器 ÿ 当提示您保存文件时。

该文件旨在托管 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 关闭编辑器 ÿ 当提示您保存文件时。测试您的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

您需要为PHP进程设置Unix用户/组,如下所示: Nginx的..找出 user=apachegroup=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 然后输入 ÿ 提示时。

重新启动PHP-fpm进程。

$ sudo systemctl restart php-fpm

创建一个文件来测试PHP设置 test.phphtml 夹。

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

添加以下内容,然后按保存文件 Ctrl + X 然后输入 ÿ 提示时。

特卖 http:///test.php Web浏览器中显示以下内容。

PHP测试页

安装phpMyAdmin

Remi存储库包含最新的phpMyAdmin,因此可以使用以下命令轻松安装它:

$ sudo dnf install phpmyadmin

将安装在 /usr/share/phpMyAdmin 目录。

配置phpMyAdmin

为了使Nginx Web服务器正确找到并提供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,因此没有root用户通过phpMyAdmin登录。首先,您需要创建一个MySQL用户并授予数据库使用phpMyAdmin的权限。

配置操作缓存

如果您从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 然后输入 ÿ 提示时。

重新启动服务器以应用设置。

$ sudo systemctl reload nginx

通过“让我们加密”安装SSL

SSL已成为任何网站的组成部分。在这里,我们将使用Let's Encrypt服务安装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。创建证书,并使用SSL设置更新Nginx配置。

现在证书已经准备好,您可以访问以下URL打开您的网站 https://example.com

配置SSL自动更新

这是结束本教程之前的最后一步。使用cron更新SSL。

您需要使用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 然后输入 ÿ 提示时。

renew Certbot命令将检查系统上安装的所有证书,并续订设置为在30天内过期的证书。 --quiet 告诉Certbot不要打印任何信息或等待用户输入。

该命令每天运行。

结论

本教程到此结束。完成LEMP设置后,您可以开始创建和托管网站和应用程序。

Sidebar