CentOS 7 上安装 LNMP(LEMP)服务 Linux,Nginx,MySQL,PHP
介绍
LNMP 是现在非常流行的 web 环境, 是Linux,Nginx,MySQL(使用MariaDB),PHP的缩写。数据存储在MySQL中,动态内容由 PHP 处理。 在本指南中,我们将演示如何在 CentOS 7 服务器上安装 LNMP 服务。
在本指南中,我们将在CentOS 7 VPS上安装一个LEMP堆栈。CentOS将满足我们的第一个要求:一个Linux操作系统。
第一步 – 安装Nginx
为了向我们的网站访问者显示网页,我们将使用 Nginx,一种现代化的高效网页服务器。
要添加CentOS 7 EPEL存储库,请打开终端并使用以下命令:
sudo yum install epel-release
由于我们使用sudo
命令,这些操作将以 root 用户权限执行。它会询问您的常规用户密码,以验证您是否有权利以 root 权限运行命令。
现在,您的服务器上安装了 Nginx 存储库,请使用以下 yum 命令安装 Nginx :
sudo yum install nginx
一旦安装,您可以在启动 Nginx:
sudo systemctl start nginx
您可以立即进行检查,通过访问您的网络浏览器中的服务器的公共IP地址或者域名来验证一切是否都按计划进行:
http://server_domain_name_or_IP/
您将看到默认的CentOS 7 Nginx网页,这是为了信息和测试目的。它应该看起来像这样:
如果您看到此页面,则您的Web服务器现在已正确安装。
在继续之前,您将要做的是启动 Nginx 启动。使用以下命令执行此操作:
sudo systemctl enable nginx
第二步 – 安装 MySQL(MariaDB)
现在我们的Web服务器启动并运行了,现在是安装MariaDB的时候了,MariaDB 是开源版本的 MySQL 分支,在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同。目前 MariaDB 是发展最快的 MySQL 分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。
再次,我们可以yum
用来获取和安装我们的软件。这一次,我们还将安装一些其他“帮助”软件包,帮助我们使组件相互通信:
sudo yum install mariadb-server mariadb
安装完成后,我们需要使用以下命令启动 MariaDB:
sudo systemctl start mariadb
现在我们的 MySQL 数据库正在运行,我们希望运行一个简单的安全脚本,它将删除一些危险的默认值,并锁定对我们的数据库系统的访问。运行以下操作启动交互式脚本:
sudo mysql_secure_installation
提示将询问您当前的 root 密码。既然你刚刚安装了 MySQL,你很可能没有一个,所以按 Enter 键留空。然后提示将询问您是否要设置 root 密码。继续输入Y
,并按照以下步骤进行:
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”来更改这两个条件:
cgi.fix_pathinfo=0
完成后保存并关闭文件。
接下来,打开 php-fpm 配置文件 www.conf:
sudo vi /etc/php-fpm.d/www.conf
找到指定参数的行 listen
,然后更改它,如下所示:
listen = /var/run/php-fpm/php-fpm.sock
接下来,找到设置的线条listen.owner
和listen.group
并取消他们。他们应该是这样的:
isten.owner = nobody listen.group = nobody
最后,找到 user 和 group 把 “apache” 改成 “nginx”:
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默认服务器块如下所示:
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 地址替换值:
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
。为了使 Nginx 能够找到文件并正确地提供该文件,它必须保存到一个特定的目录,称为“Web根目录”。
在 CentOS 7 中,此目录位于/usr/share/nginx/html/。我们可以通过键入以下内容在该位置创建文件:
sudo vi /usr/share/nginx/html/info.php
这将打开一个空白文件。我们想在文件中放入以下文本,这是有效的PHP代码:
<?php phpinfo(); ?>
完成后,保存并关闭文件。
现在我们可以测试我们的Web服务器是否可以正确显示PHP脚本生成的内容。要想这样做,我们只需要在我们的网络浏览器中访问这个页面。您将需要您的服务器的公共IP地址。
您要访问的地址将是:
http://your_server_IP_address/info.php
你所来的页面应该是这样的:
这个页面基本上是从PHP的角度给出你关于你的服务器的信息。它对调试非常有用,并确保正确应用您的设置。
如果这是成功的,那么您的PHP正在按预期工作。
您可能希望在此测试后删除此文件,因为它可以向未经授权的用户实际提供有关您的服务器的信息。为此,您可以键入以下内容:
sudo rm /usr/share/nginx/html/info.php
如果您以后再次访问该信息,您可以随时重新创建此页面。
结论
现在您已经安装了LEMP堆栈,您可以选择下一步做什么。基本上,您已经安装了一个平台,您可以在服务器上安装大多数网站和网络软件。