介绍
LEMP软件堆栈是一组开源软件,通常会一起安装以使服务器能够托管动态网站和Web应用程序。该术语实际上是代表L inux操作系统和E Nginx Web服务器(代替LAMP堆栈的Apache组件)的首字母缩写。站点数据存储在基于M ySQL的数据库中,动态内容由P HP 处理。
在本指南中,我们将使用MariaDB作为数据库管理系统,在CentOS 7服务器上获得安装了PHP 7.4的LEMP堆栈。MariaDB可以替代原始MySQL服务器,这实际上意味着您可以切换到MariaDB,而无需在应用程序中进行任何配置或代码更改。
先决条件
在开始本指南之前,您应该在服务器上设置一个单独的非root用户帐户。您可以通过完成CentOS 7初始服务器设置中的步骤1-4来学习如何做。
第1步-安装Nginx
为了向网站访问者显示网页,我们将使用高性能的Web服务器Nginx。要获取最新的Nginx版本,我们将首先安装EPEL存储库,其中包含用于CentOS 7操作系统的其他软件。
要添加CentOS 7 EPEL存储库,请运行以下命令:
sudo yum install epel-release
由于我们使用的是sudo
命令,因此这些操作将以root特权执行。它将要求您提供普通用户的密码,以验证您是否具有运行具有root特权的命令的权限。还将提示您确认安装,因此请按Y
继续。
现在,您的服务器上已经安装了EPEL存储库,请使用以下yum
命令安装Nginx :
sudo yum install nginx
安装完成后,请使用以下命令启动Nginx服务:
sudo systemctl start nginx
您可以通过在Web浏览器中访问服务器的公共IP地址来立即进行抽查,以验证一切是否按计划进行(如果您没有此信息,请查看下一个标题下的注释,以查找您的公共IP地址是什么)。已经):
Open in a web browser:http://server_domain_name_or_IP/
您将看到默认的CentOS 7 Nginx网页,该网页用于提供信息和进行测试。它看起来应该像这样:
如果看到此页面,则表明您的Web服务器现在已正确安装。
要使Nginx在启动时启动,请运行以下命令:
sudo systemctl enable nginx
如何查找服务器的公共IP地址
如果您不知道服务器的公用IP地址是什么,可以通过多种方法找到它。通常,这是您用于通过SSH连接到服务器的地址。
在命令行中,您可以通过几种方法找到此方法。首先,您可以iproute2
通过输入以下内容使用这些工具来获取地址:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
这将给您返回一两行。它们都是正确的地址,但是您的计算机可能只能使用它们之一,因此请随意尝试每个。
一种替代方法是使用外部方来告诉您它如何看待服务器。您可以通过询问特定的服务器您的IP地址是什么来做到这一点:
curl http://icanhazip.com
无论使用哪种方法获取IP地址,都可以在Web浏览器的地址栏中键入它以获取服务器。
第2步-安装MariaDB
现在我们的Web服务器已经启动并正在运行,是时候安装MySQL替代品MariaDB了。MariaDB是社区开发的MySQL关系数据库管理系统的分支。
同样,我们可以yum
用来获取和安装我们的软件。这次,我们还将安装其他一些帮助程序包,这些程序包将帮助我们使组件相互通信:
sudo yum install mariadb-server mariadb
安装完成后,我们需要使用以下命令启动MariaDB:
sudo systemctl start mariadb
现在我们的MariaDB数据库正在运行,我们想运行一个安全脚本,该脚本将删除一些危险的默认值并锁定对数据库的访问。通过运行以下命令来启动交互式脚本:
sudo mysql_secure_installation
提示将询问您当前的root
MariaDB密码。由于您刚刚安装了MariaDB,因此很可能没有,因此请按Enter使其空白。然后,提示将询问您是否要设置root
密码。继续输入Y
,然后按照说明进行操作:
mysql_secure_installation prompts:Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
对于其余的问题,您应该在每个提示中都按“ ENTER”键以接受默认值。这将删除一些示例用户和数据库,禁用远程root登录,并加载这些新规则,以便MySQL立即遵守我们所做的更改。
您要做的最后一件事是使MariaDB在启动时启动。使用以下命令执行此操作:
sudo systemctl enable mariadb
至此,您的数据库系统已经建立,我们可以继续。
第3步-安装PHP
PHP是我们安装程序的组件,它将处理代码以显示动态内容。它可以运行脚本,连接到我们的MySQL数据库以获取信息,并将处理后的内容移交给我们的Web服务器进行显示。
CentOS 7服务器上默认可用的PHP版本已过时,因此,我们需要安装第三方软件包存储库才能获取PHP 7+并将其安装在CentOS 7服务器上。Remi是一个受欢迎的软件包存储库,为CentOS服务器提供了最新的PHP版本。
要为CentOS 7安装Remi存储库,请运行:
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
安装完成后,您将需要运行命令以启用包含您的首选PHP版本的存储库。要检查Remi存储库中可用的PHP 7+版本,请运行:
yum --disablerepo="*" --enablerepo="remi-safe" list php[7-9][0-9].x86_64
您将看到如下输出:
OutputLoaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* remi-safe: mirrors.ukfast.co.uk
Available Packages
php70.x86_64 2.0-1.el7.remi remi-safe
php71.x86_64 2.0-1.el7.remi remi-safe
php72.x86_64 2.0-1.el7.remi remi-safe
php73.x86_64 2.0-1.el7.remi remi-safe
php74.x86_64 1.0-3.el7.remi remi-safe
php80.x86_64 1.0-3.el7.remi remi-safe
在本指南中,我们将安装PHP 7.4,它是当前PHP的最新稳定版本。要启用正确的Remi软件包以安装PHP 7.4,请运行:
sudo yum-config-manager --enable remi-php74
现在,我们可以yum
像往常一样继续用于安装PHP。以下命令将安装所有必需的软件包,以在Nginx中设置PHP 7.4,并允许其连接到基于MySQL的数据库:
sudo yum install php php-mysqlnd php-fpm
要确认PHP是您选择的版本,请运行:
php --version
您将看到如下输出:
OutputPHP 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
现在,PHP已成功安装在您的系统上。接下来,我们需要对默认配置进行一些调整。为了方便在CentOS上编辑文件,我们将首先安装nano
,它比vi
以下内容更加用户友好:
sudo yum install nano
/etc/php-fpm.d/www.conf
使用nano
或您选择的编辑器打开配置文件:
sudo nano /etc/php-fpm.d/www.conf
现在查找user
和group
指令。如果使用nano
,则可以按CTRL
+ W
在打开的文件中搜索这些术语。/etc/php-fpm.d/www.conf
…
; 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 = apache
; RPM: Keep a group allowed to write in log dir.
group = apache
…
您会注意到user
和group
变量都设置为apache
。我们需要将它们更改为nginx
:/etc/php-fpm.d/www.conf
…
; 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
…
接下来,找到listen
指令。默认情况下,php-fpm
将通过TCP侦听特定的主机和端口。我们想要更改此设置,以便它侦听本地套接字文件,因为这样可以提高服务器的整体性能。
将包含listen
指令的行更改为以下内容:/etc/php-fpm.d/www.conf
listen = /var/run/php-fpm/php-fpm.sock;
最后,我们需要更改我们在listen
指令中定义的套接字文件的所有者和组设置。找到listen.owner
,listen.group
并listen.mode
指令。这些行默认情况下被注释掉。通过删除行首的前面的;
符号来取消注释。然后,将所有者和组更改为nginx
:/etc/php-fpm.d/www.conf
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
完成编辑后,保存并关闭文件。如果您正在使用nano
,请按CTRL + X
,然后按Y
和ENTER
。
要启用并启动php-fpm
服务,请运行:
sudo systemctl start php-fpm
您的PHP环境现已准备就绪。接下来,我们将配置Nginx,以便它发送对PHP脚本进行处理的所有请求php-fpm
。
第4步-配置Nginx处理PHP页面
现在,我们已经安装了所有必需的组件。我们仍然需要做的唯一配置更改就是告诉Nginx使用我们的PHP处理器处理动态内容。
Nginx有一个专用目录,我们可以在其中使用服务器块将每个托管网站定义为单独的配置文件。这类似于Apache的虚拟主机。
但是,使用默认安装时,此目录为空。我们将创建一个新文件作为该服务器上的默认PHP网站,它将覆盖/etc/nginx/nginx.conf
文件中定义的默认服务器块。
首先,在/etc/nginx/conf.d
目录中打开一个新文件:
sudo nano /etc/nginx/conf.d/default.conf
将以下PHP服务器定义块复制到您的配置文件中,并且不要忘记替换该server_name
指令,使其指向您服务器的域名或IP地址:/etc/nginx/conf.d/default.conf
server {
listen 80;
server_name server_domain_or_IP;
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
完成后,保存并关闭文件。
接下来,重新启动Nginx以应用更改:
sudo systemctl restart nginx
您的Web服务器现已完全设置。在下一步中,我们将测试与Nginx的PHP集成。
第5步-在Web服务器上测试PHP处理
现在,您的Web服务器已设置完毕,我们可以创建一个测试PHP脚本,以确保Nginx .php
在的帮助下正确处理了脚本php-fpm
。
在创建脚本之前,我们将更改Nginx文档根目录上的默认所有权设置,以便我们的常规sudo用户能够在该位置创建文件。
以下命令会将默认Nginx文档根目录的所有权更改为一个名为的用户和组 萨米,因此请确保在此命令中替换突出显示的用户名和组,以反映系统的用户名和组。
sudo chown -R sammy.sammy /usr/share/nginx/html/
现在,我们将创建一个测试PHP页面,以确保Web服务器能够按预期工作。
info.php
在/usr/share/nginx/html
目录中创建一个新的PHP文件:
nano /usr/share/nginx/html/info.php
以下PHP代码将显示有关服务器上当前运行的PHP环境的信息:/usr/share/nginx/html/info.php
<?php
phpinfo();
复制
完成后,保存并关闭文件。
现在,我们可以测试我们的Web服务器是否可以正确显示PHP脚本生成的内容。转到浏览器并访问服务器主机名或IP地址,然后输入/info.php
:
http://server_host_or_IP/info.php
您会看到类似于以下页面:
在通过该页面检查有关PHP服务器的相关信息之后,最好删除您创建的文件,因为该文件包含有关PHP环境和CentOS服务器的敏感信息。您可以rm
用来删除该文件:
rm /usr/share/nginx/html/info.php
如果以后需要,可以随时重新生成该文件。
结论
在本指南中,您使用Nginx作为Web服务器和最新的PHP版本,为为访问者提供PHP网站和应用程序奠定了灵活的基础。您已经设置了Nginx来通过处理Nginx的PHP请求php-fpm
,还设置了一个MariaDB数据库来存储您网站的数据。
由米切尔Anicas和埃里卡海蒂编辑发布,基于Cen7教程。