当前位置: 首页 > 科技观察

CentOS下安装LEMP服务(Nginx、MariaDB-MySQL和PHP)_1

时间:2023-03-14 16:57:12 科技观察

LEMP包是一个越来越受欢迎的网站服务包,在很多生产环境中对核心网站服务起到了强大的作用。顾名思义,LEMP包由Linux、nginx、MariaDB/MySQL和PHP组成。传统LAMP包中使用的ApacheHTTP协议服务器性能低,难以大规模集群。与nginx的高性能和轻量级特点相比,是它的替代品。MariaDB是MySQL数据库的社区支持分支,具有更多功能和更好的性能。PHP,服务器端编程语言,专门经过PHPFastCGI增强的PHP-FPM组件处理,生成动态网页内容。(LCTT译注:为什么用LEMP的缩写而不是LNMP?根据https://lemp.io/,Nginx的读音是Engine-X,重要的读音不是第一个字母,LEMP其实是可读的。和LNMP只是看起来像字母表。)在本文中,我们将演示如何在CentOS操作平台上安装LEMP包。我们安装的目标是CentOS6和CentOS7运行平台,如有不同会指出。第1步:Nginx作为第一步,让我们在CentOS上安装nginx,然后对其进行一些配置,例如使其在开机时启动并个性化防火墙。安装Nginx让我们可以从其官方RPM源安装一个预构建的稳定版本的nginx包。在CentOS7系统上:$sudorpm--importhttp://nginx.org/keys/nginx_signing.key$sudorpm-ivhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm$sudoyuminstallnginx在CentOS6系统上:$sudorpm--importhttp://nginx.org/keys/nginx_signing.key$sudorpm-ivhhttp://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm$sudoyuminstallnginx注意在安装nginxRPM包之前,如果您没有导入nginx的官方GPG密钥,会出现如下图警告:warning:/var/tmp/rpm-tmp.KttVHD:HeaderV4RSA/SHA1Signature,keyID7bd9bf62:NOKEY安装完成后启动Nginx,nginx不会自动启动。现在让我们启动它并将其配置为随操作系统一起启动。我们还需要在防火墙中打开TCP/80端口,以便远程访问nginxweb服务。所有这些操作和设置只需输入以下命令即可实现。在CentOS7系统上:$sudosystemctlstartnginx$sudosystemctlenablenginx$sudofirewall-cmd--zone=public--add-port=80/tcp--permanent$sudofirewall-cmd--reload在CentOS6系统以上:$sudoservicenginxstart$sudochkconfignginxon$sudoiptables-IINPUT-ptcp-mtcp--dport80-jACCEPT$sudoserviceiptablessave默认测试Nginx的文件目录是/usr/share/nginx/HTML。默认的index.html文件必须已经在这个目录中。我们看看是否可以访问这个测试网页,输入http://nginx的ip地址/访问。如果看到如上所示的页面,说明nginx已经正常启动了。继续往下。#p#步骤2:MariaDB/MySQL下一步是安装LEMP包的数据库组件。CentOS/RHEL6或更早版本提供了MySQL服务器/客户端包,但CentOS/RHEL7已将默认的MySQL替换为MariaDB。作为MySQL的直接替代品,MariaDB保证与MySQL的API和命令行使用的最大兼容性。以下是如何在CentOS上安装和配置MaraDB/MySQL的示例。在CentOS7系统上:安装MariaDB服务/客户端包,启动MariaDB服务。$sudoyuminstallmariadb-server$sudosystemctlstartmariadb$sudosystemctlenablemariadb在CentOS6系统上:安装MySQL服务/客户端包并启动MySQL服务,如下所示。$sudoyuminstallmysql-server$sudoservicemysqldstart$sudochkconfigmysqldon成功启动MariaDB/MySQL服务后执行MariaDB/MySQL服务包中的脚本。此运行将为数据库服务器执行一些安全加固措施,例如设置(非空)root密码、删除匿名用户和锁定远程访问。$sudomysql_secure_installation这就是数据库的设置方式。现在进行下一步。#p#第三步:PHPPHP是LEMP包中的一个重要组件,负责提取存储在MariaDB/MySQL服务器中的数据,生成动态内容。对于LEMP需求,你至少需要安装PHP-FPM和PHP-MySQL两个模块。PHP-FPM(FastCGIProcessManager)实现了nginx服务器与生成动态内容的PHP应用程序之间的访问接口。PHP-MySQL模块使PHP程序能够访问MariaDB/MySQL数据库。在CentOS7系统上安装PHP模块:$sudoyumphpphp-fpmphp-mysql在CentOS6系统上:首先,您需要从存储库(参见本指南)安装REMI存储库,然后安装软件包。$sudoyum--enablerepo=remiinstallphpphp-fpmphp-mysql在安装PHP的时候需要注意两个地方:在CentOS6系统中,在REMI仓库安装最新的php-mysql模块时,MySQL服务器包和客户端包作为依赖项的一部分自动更新。在CentOS6和CentOS7中,安装PHP包时会安装ApacheWeb服务器(即httpd)作为其依赖包。这将与nginx网络服务器发生冲突。这个问题将在下一节中讨论。根据您的用例,您可以使用yum命令自定义您的PHP引擎,并且您可能想要安装以下任何扩展PHP模块包。php-cli:PHP的命令行界面。从命令行测试PHP时很有用。php-gd:PHP的图形支持。php-bcmath:PHP的数学支持。php-mcrypt:PHP的加密算法支持(如DES、Blowfish、CBC、CFB、ECBciphers等)。php-xml:对PHP的XML解析和处理支持。php-dba:PHP的数据抽象层支持。php-pecl-apc:PHP加速器/缓存支持。要在安装期间查看可用PHP模块的完整列表,请运行:$sudoyumsearchphp-(CentOS7)$sudoyum--enablerepo=remisearchphp-(CentOS6)要启动PHP-FPM,您需要启动PHP-FPM,然后将其放入自动启动服务列表中。CentOS7系统上:$sudosystemctlstartphp-fpm$sudosystemctlenablephp-fpmCentOS6系统上:$sudochkconfigphp-fpmon$sudoservicephp-fpmstart#p#第四步:配置LEMP组合包最后本教程中的步骤是调整LEMP复合包的配置。禁用Httpd首先,让我们禁用之前随PHP包安装的httpd服务。在CentOS7系统上:$sudosystemctldisablehttpd在CentOS6系统上:$sudochkconfighttpdoff配置Nginx下面我们来配置nginx虚拟主机,让nginx通过PHP-FPM来处理PHP任务。用文本编辑器打开/etc/nginx/conf.d/default.conf,修改如下图。$sudovi/etc/nginx/conf.d/default.confserver{listen80;服务器名称www.server_domain.com;根/usr/share/nginx/html;indexindex.phpindex.htmlindex.htm;location/{}#将服务器错误页面重定向到静态页面/50x.htmlerror_page500502503504/50x.html;location=/50x.html{}#nginx通过TCP/9000套接字将PHP脚本传递给FastCGI服务器#这个设置与/etc/php-fpm.d/www.conf一致#try_files防止nginx将错误的脚本传递给FastCGI服务器位置~\.php${try_files$uri=404;fastcgi_pass127.0.0.1:9000;fastcgi_index索引。PHP;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;包括fastcgi_params;nginx的默认工作线程数(在/etc/nginx/nginx.conf文件中指定)是1,让我们也调整这个数字。一般来说,我们创建的工作线程数应该和CPU核心数一样。要确定您的CPU的核心数,请运行以下命令:$grepprocessor/proc/cpuinfo|wc-l如果你的CPU是4核,修改/etc/nginx/nginx.conf文件如下图。$sudovi/etc/nginx/nginx.confworker_processes4;配置PHP接下来,让我们对PHP配置文件/etc/php.ini进行自定义设置。更具体地说,将以下两行添加到/etc/php.ini文件中。cgi.fix_pathinfo=0date.timezone="PRC"为了安全起见,我们想要的是PHP解释器只处理指定文件路径的文件任务,而不是预测性地搜索一些不存在的文件任务。这就是上面第一行所做的。(LCTT译注:原文使用的时区是“America/NewYork”,根据国内情况,应该使用PRC或Asia下的中国城市。)第二行定义了日期/时间相关的默认使用的时区PHP中的函数。使用本指南,找出您所在的时区,并相应地设置date.timezone的值。测试PHP最后,让我们测试一下nginx是否可以处理PHP页面。在测试之前,请确保重启nginx和PHP-FPM。CentOS7系统:$sudosystemctlrestartnginx$sudosystemctlrestartphp-fpmCentOS6系统:$sudoservicenginxrestart$sudoservicephp-fpmrestart创建一个名为test.php的文件,写入以下内容,放入进入/var/www/html/目录。打开浏览器,输入http://nginxIP地址/test.php。如果您能看到如上图所示的页面,则LEMP设置已完全成功!via:http://xmodulo.com/install-lemp-stack-centos.html作者:DanNanni译者:runningwater校对:wxy

最新推荐
猜你喜欢