如何在CentOS 7上安装Nginx,MySQL,PHP(LEMP)堆栈

介绍

LEMP软件堆栈是一组开源软件,通常安装在一起,以使服务器能够托管动态网站和网络应用程序。该术语实际上是代表L inux操作系统的首字母缩写,使用E Nginx Web服务器(替代LAMP堆栈的Apache组件)。站点数据存储在M ySQL数据库(使用MariaDB)中,动态内容由P HP 处理

在本指南中,我们将在CentOS 7 VPS上安装一个LEMP堆栈。CentOS将满足我们的第一个要求:一个Linux操作系统。

注:该LEMP堆栈可以自动在您的雾滴通过添加安装这个脚本启动时,它的用户数据。请阅读本教程,了解有关Droplet用户数据的更多信息。

先决条件

在开始本指南之前,您应该在您的服务器上设置一个单独的非root用户帐户。您可以通过完成CentOS 7初始服务器设置中的步骤1-4来了解如何执行此操作

关于SELinux的注意事项:如果遇到Nginx未运行的问题,请确保您的Nginx配置文件的SELinux上下文正确或将SELinux模式更改为permissivedisabled

第一步 - 安装Nginx

为了将网页显示给我们的网站访问者,我们将使用Nginx,一个现代化的高效网页服务器。

要添加CentOS 7 EPEL存储库,请打开终端并使用以下命令:

  • sudo yum install epel-release

由于我们正在使用sudo命令,这些操作将以root权限执行。它会询问您的常规用户密码,以验证您是否具有使用root权限运行命令的权限。

现在,您的服务器上安装了Nginx存储库,请使用以下yum命令安装Nginx 

  • sudo yum install nginx

之后,您的Web服务器已安装。

一旦安装,您可以在VPS上启动Nginx:

  • sudo systemctl start nginx

您可以立即进行现场检查,以通过访问您的网络浏览器中的服务器的公共IP地址来验证一切都按计划进行(请参阅下一个标题下的注释,以了解您的公共IP地址是否没有此信息已经):

Open in a web browser:
http:// server_domain_name_or_IP/

您将看到默认的CentOS 7 Nginx网页,这是为了信息和测试目的。它应该看起来像这样:

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浏览器的地址栏中,以访问您的服务器。

第二步 - 安装MySQL(MariaDB)

现在我们的Web服务器启动并运行了,现在是安装MariaDB的时候了,这是一个MySQL插件替换。MariaDB是MySQL关系数据库管理系统的社区开发的分支。基本上,它将组织和访问我们的网站可以存储信息的数据库。

再次,我们可以yum用来获取和安装我们的软件。这一次,我们还将安装一些其他“帮助”软件包,帮助我们使组件相互通信:

  • sudo yum install mariadb-server mariadb

安装完成后,我们需要使用以下命令启动MariaDB:

  • sudo systemctl start mariadb

现在我们的MySQL数据库正在运行,我们想要运行一个简单的安全脚本,它将删除一些危险的默认值,并锁定对我们的数据库系统的访问。运行以下操作启动交互式脚本:

  • sudo mysql_secure_installation

提示将询问您当前的root密码。既然你刚刚安装了MySQL,你很可能没有一个,所以按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. New password: password Re-enter new password: password Password updated successfully! Reloading privilege tables.. ... Success!

对于其余的问题,您应该通过每个提示点击“ENTER”键接受默认值。这将删除一些示例用户和数据库,禁用远程root登录,并加载这些新规则,以便MySQL立即尊重我们所做的更改。

您最后要做的就是启动MariaDB。使用以下命令执行此操作:

  • sudo systemctl enable mariadb

此时,您的数据库系统现在已经建立起来,我们可以继续前进。

第三步 - 安装PHP

PHP是我们设置的组件,它将处理代码以显示动态内容。它可以运行脚本,连接到我们的MySQL数据库以获取信息,并将处理的内容交给我们的Web服务器进行显示。

我们可以再次利用yum系统来安装我们的组件。我们还将包括php-mysql和php-fpm软件包:

  • sudo yum install php php-mysql php-fpm

配置PHP处理器

我们现在已经安装了我们的PHP组件,但是我们需要进行一些轻微的配置更改,使我们的安装更加安全。

使用root权限打开主php-fpm配置文件:

  • sudo vi /etc/php.ini

我们在这个文件中寻找的是设置cgi.fix_pathinfo的参数。这将被分号与分号(;),默认设置为“1”。

这是一个非常不安全的设置,因为它告诉PHP尝试执行最接近的文件,如果PHP文件不完全匹配,它可以找到。这基本上将允许用户以允许他们执行不应该被允许执行的脚本的方式来制作PHP请求。

我们将通过取消注释行并将其设置为“0”来更改这两个条件:

/etc/php.ini摘录
cgi.fix_pathinfo=0

完成后保存并关闭文件。

接下来,打开php-fpm配置文件www.conf

  • sudo vi /etc/php-fpm.d/www.conf

找到指定listen参数的行,并更改它,如下所示:

/etc/php-php.d/www.conf - 1/3
listen = /var/run/php-fpm/php-fpm.sock

接下来,找到设置的线条listen.ownerlisten.group并取消他们。他们应该是这样的:

/etc/php-php.d/www.conf - 2/3
listen.owner = nobody
listen.group = nobody

最后,找到设置user并将group其值从“apache”更改为“nginx”的行:

/etc/php-php.d/www.conf - 3/3
user = nginx
group = nginx

然后保存并退出。

现在,我们只需要键入以下命令即可启动PHP处理器:

  • sudo systemctl start php-fpm

这将实施我们所做的改变。

接下来,启用php-fpm启动启动:

  • sudo systemctl enable php-fpm

第四步 - 配置Nginx来处理PHP页面

现在,我们已经安装了所有必需的组件。我们仍然需要做的唯一配置更改是告诉Nginx将我们的PHP处理器用于动态内容。

我们在服务器块级别(服务器块类似于Apache的虚拟主机)执行此操作。通过键入以下内容打开默认的Nginx服务器块配置文件:

  • sudo vi /etc/nginx/conf.d/default.conf

目前,删除注释后,Nginx默认服务器块如下所示:

/etc/nginx/conf.d/default.conf - 原文
server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

我们需要对我们网站的这个文件做一些修改。

  • 首先,我们需要添加一个index.php选项作为我们的索引指令的第一个值,以允许在索引目录时提供PHP索引文件
  • 我们还需要修改server_name指令以指向我们服务器的域名或公共IP地址
  • 实际的配置文件包括一些定义错误处理例程的注释行。我们将取消这些功能的含义
  • 对于实际的PHP处理,我们需要取消注释另一部分的一部分。我们还需要添加一个try_files指令,以确保Nginx不会将错误的请求传递给我们的PHP处理器

您需要做的更改在下面的文本中为红色。如果您愿意,您可以复制并粘贴所有内容,然后用server_name相应的域名或IP地址替换值

/etc/nginx/conf.d/default.conf - 已更新
server {
    listen       80;
    server_name  server_domain_name_or_IP;

    # note that these lines are originally from the "location /" block
    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服务器上测试PHP处理

为了测试我们的系统正确配置PHP,我们可以创建一个非常基本的PHP脚本。

我们会把这个脚本叫做info.php为了让Apache找到文件并正确地提供文件,它必须保存到一个非常具体的目录中,这被称为“web root”。

在CentOS 7中,该目录位于/usr/share/nginx/html/我们可以通过键入以下内容在该位置创建文件:

  • sudo vi /usr/share/nginx/html/info.php

这将打开一个空白文件。我们想在文件中放入以下文本,这是有效的PHP代码:

测试PHP脚本
<?php phpinfo(); ?>

完成后,保存并关闭文件。

现在我们可以测试我们的Web服务器是否可以正确显示PHP脚本生成的内容。要想这样做,我们只需要在网页浏览器中访问这个页面。您将需要您的服务器的公共IP地址。

您要访问的地址将是:

Open in a web browser:
http:// your_server_IP_address/info.php

你所来的页面应该是这样的:

CentOS 7默认PHP信息

这个页面从PHP的角度基本上给出了关于你的服务器的信息。它对于调试和确保您的设置正确应用是有用的。

如果这是成功的,那么你的PHP正在按预期工作。

您可能想在此测试后删除此文件,因为它实际上可能会向未经授权的用户提供有关您的服务器的信息。为此,您可以键入以下内容:

  • sudo rm /usr/share/nginx/html/info.php

如果您以后再次访问该信息,您可以随时重新创建此页面。

结论

现在你已经安装了一个LEMP堆栈,你有很多选择下一步做什么。基本上,您已经安装了一个平台,允许您在服务器上安装大多数网站和网络软件。

猜你喜欢

转载自blog.csdn.net/qq_38365479/article/details/78365150