如何在CentOS 7安装Linux,Nginx,MySQL和PHP(LEMP)

在本指南中,我们将LEM​​P安装在CentOS 7的VPS上 。一个LEMP软件是通常一起安装,以使服务器可以托管动态网站和网络应用的一组开源软件。这个词其实是代表linux下的操作系统,与E Nginx的网络服务器(取代了LAMP的Apache的组件)的缩写。 站点数据存储在MySQL数据库(使用MariaDB),以及动态内容用PHP处理。

介绍

LEMP软件是一组开放源代码软件,通常安装在一起以使服务器能够托管动态网站和网络应用程序。这个词其实是代表linux下的操作系统,与Nginx的网络服务器(取代了LAMP的Apache的组件)的缩写。 站点数据存储在MySQL数据库(使用MariaDB),以及动态内容用PHP处理。 在本指南中,我们将在CentOS 7 VPS上安装一个LEMP。 CentOS将满足我们的第一个需求:一个Linux操作系统。 注:LEMP可以自动在您的Droplet服务器通过添加安装这个脚本启动时,它的用户数据。查看本教程以了解更多有关Droplet用户数据。

先决条件

在开始使用本指南之前,您应该在服务器上设置一个单独的非root用户帐户。你可以学习如何通过完成1-4的步骤做这个初始服务器设置为CentOS 7请注意有关SELinux:如果你遇到问题与Nginx的不运行,请确保您的Nginx的配置文件的SELinux上下文是正确的或更改SELinux的模式,以permissivedisabled

第一步 - 安装Nginx

为了向我们的网站访问者显示网页,我们将使用Nginx,一个现代化,高效的网络服务器。 要添加CentOS 7 EPEL存储库,请打开终端并使用以下命令:
sudo yum install epel-release
由于我们使用sudo命令,这些行动得到以root权限执行。它将要求您提供常规用户的密码,以验证您是否具有以root权限运行命令的权限。 现在,Nginx的存储库安装在服务器上,使用下面的安装Nginx的yum命令:
sudo yum install nginx
然后,安装您的Web服务器。 一旦安装,您可以启动Nginx在您的VPS:
sudo systemctl start nginx
您可以立即进行即时检查,以验证一切都按计划通过访问您的服务器的公共IP地址在您的网络浏览器(如果你没有这个信息,请参阅下一个标题下的说明,以了解您的公共IP地址):
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地址,您都可以在浏览器的地址栏中输入您的服务器。

第二步 - 安装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 ,并按照instuctions:
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”键接受默认值。这将删除一些示例用户和数据库,禁用远程根登录,并加载这些新规则,以便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 of 3
listen = /var/run/php-fpm/php-fpm.sock
接下来,找到设置的线条listen.ownerlisten.group并取消他们。他们应该看起来像这样:
/etc/php-php.d/www.conf - 2 of 3
listen.owner = nobody
listen.group = nobody
最后,设置usergroup ,并从“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 - original
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根目录”。 在CentOS 7,此目录位于/usr/share/nginx/html/ 。我们可以通过键入以下内容在该位置创建文件:
sudo vi /usr/share/nginx/html/info.php
这将打开一个空白文件。我们想把以下文本,这是有效的PHP代码,在文件内:
测试PHP脚本
<?php phpinfo(); ?>
完成后,保存并关闭文件。 现在我们可以测试我们的Web服务器是否可以正确显示由PHP脚本生成的内容。要尝试这个,我们只需要在我们的网络浏览器访问此页面。您将需要您的服务器的公共IP地址。 您要访问的地址将是:
http://your_server_IP_address/info.php
你来的页面应该看起来像这样: CentOS 7默认PHP信息 从PHP的角度来看,这个页面基本上提供了你的服务器的信息。它对于调试和确保您的设置正确应用非常有用。 如果这是成功的,那么你的PHP工作正常。 您可能想要在此测试后删除此文件,因为它实际上可能会向未经授权的用户提供有关您的服务器的信息。为此,您可以键入:
sudo rm /usr/share/nginx/html/info.php
如果以后需要再次访问信息,您可以随时重新创建此页面。

结论

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