建设工作站服务器
最近有部署ERP PHP-web测试页环境的需求,需要部署nginx php的CGI套接字模式、mysql环境。 要确定是否存在服务端口,请直接安装yum install -y net-tools (如果系统上尚未安装netstat,因为您已经习惯使用netstat命令)
实验环境:
Linux版: CentOS 7.2
nginx版本: nginx-1.10.1
PHP版本: php-5.6.5
Mysql版本: MariaDB-5.5.52
一.首先引入nginx
安装了相关的依赖软件包
openssl-devel、zlib-devel、pcre-devel
程序默认以nobody身份运行,并使用nginx用户运行。 首先添加nginx组和用户,不创建主目录,不允许登录系统
#groupaddnginx
# useradd-m-s/sbin/nolog in-gnginxnginx
要安装nginx,请使用nginx-1.10.1.tar.gz
#tarxfnginx-1.10.1.tar.gz
#cdnginx-1.10.1
指定安装目录和运行时使用的所有者和所属组,并启用状态监视模块等
#./configure\\\\&; quot;
--prefix=/usr/local/nginx\\\\
- PID-path=/usr/local/nginx/logs/nginx.PID\\
- lock-path=/var/lock/nginx.lock\\
--user=nginx\\\\
--group=nginx\\\\
--with-http_ssl_module\\\\&; quot;
--with-http_flv_module\\\\&; quot;
- with-http _ stub _ status _ module\\
- with-http _ gzip _ static _ module\\ & amp; quot;
- http-client-body-temp-path=/var/tmp/nginx/\\& amp; quot;
- http-proxy-temp-path=/var/tmp/nginx/proxy/\ & amp; quot;
- http-fastcgi-temp-path=/var/tmp/nginx/fcgi/\ \
- http-uw SGI-temp-path=/var/tmp/nginx/uw SGI\\
- http-scgi-temp-path=/var/tmp/nginx/scgi\\
--with-pcre
大致配置结果
配置摘要
usingsystemPCRElibrary
通用系统组件库
md5:usingOpenSSLlibrary
sha1:usingOpenSSLlibrary
通用系统库
nginxpathprefix:/usr/local/nginx
nginx binary file:/usr/local/nginx/sbin/nginx
nginxmodulespath:/usr/local/nginx/modules
nginxconfigurationprefix:/usr/local/nginx/conf
nginxconfigurationfile:/usr/local/nginx/conf/nginx.conf
nginx pidfile:/var/run/nginx/nginx.PID
nginxerrorlogfile:/usr/local/nginx/logs/error.log
nginxhttpaccesslogfile:/usr/local/nginx/logs/access.log
nginxhttpclientrequestbodytemporaryfiles:/var/tmp/nginx/client /
nginxhttpproxytemporaryfiles:/var/tmp/nginx/proxy /
nginxhttpfastcgitemporaryfiles:/var/tmp/nginx/fcgi /
nginxhttpuwsgitemporaryfiles:/var/tmp/nginx/uw SGI
nginxhttpscgitemporaryfiles:/var/tmp/nginx/scgi
上述配置完成后,编译并安装
#makemakeinstall
# mkdir/var/tmp/nginx/client/- PV
编译并安装后,/usr/local下会出现名为nginx的目录。 进入这个目录的话目录会非常简单。
配置文件存储在conf目录中,web文件存储在html中,日志文件存储在logs中。
sbin目录中只能运行一个程序nginx
二.引入php环境
答: a. FastCGI是http服务器和动态脚本语言之间可扩展、快速通信的接口
b. Nginx是一个轻量级的http服务器,必须使用第三方FastCGI处理器才能分析PHP
c. PHP-FPM是第三方FastCGI进程管理器,作为PHP的修补程序开发,在安装过程中也必须与PHP源代码一起编译。
也就是说,PHP-FPM被编译成PHP内核,因此在处理性能方面更为出色; 同时,它在更高的并发处理方面也优于spawn-fcgi引擎。
因此,建议使用Nginx PHP/PHP-FPM组合分析PHP。
首先安装php依赖软件包
yum install-ygccgcc-clib xml2 libxml2- develautoconflibjpeglibjpeg-devellibpnglibpng-develfreetypefreeetype-develzllibzlibzlibjpe
解压缩下载的tar软件包
#tar-xvzfphp-5.6.5.tar.gz
进入解冻后的php-5.6.5
#cdphp-5.6.5
#./configure-- prefix=/usr/local/PHPenable-fpmenable-mbstringwith-MySQL=MySQL ndwith-mysqli=
#makemakeinstall
查看php版本
#php-v
PHP5.6.5(CLI ) built:Jan10201703:53:13 ) ) ) ) ) ) ) ) PHP5.6.5(CLI ) built:Jan10201703:53:13 ) ) )
版权所有( c ) 1997-2014ThePHPGroup
ZendEnginev2.6.0,版权所有( c ) 1998-2014ZendTechnologies
如果不能,可以通过在php可执行文件中创建软链接并将其复制到/usr/bin/php或复制到/usr/bin/下来验证php的版本
# ln-s/usr/local/PHP/bin/PHP/usr/bin/PHP
或者
# CP-RAF/usr/local/PHP/bin/PHP/usr/bin/PHP
将php配置文件php.ini和安装目录中名为php.ini-development的配置文件模板复制到php目录中
# CP-RAF PHP-5.6.5/PHP.ini-development/usr/local/PHP/lib/PHP.ini
当然,还需要配置php-fpm。 安装php时,已经创建了配置模板。 位于/usr/local/PHP/etc/php-fpm.conf.default中,所以复制此模板并将其命名为PHP-fpm.conf就可以了,然后抓住它
这是一个可执行文件,可以直接运行php-fpm来执行。 还有netstat -an| grep php-fpm,你看,果然是9000号端口在监听
# CP-RAF/usr/local/PHP/etc/PHP-fpm.conf.default/usr/local/PHP/etc/PHP-fpm.conf
#whereisphp-fpm
PHP-FPM的结构与优化
PHP的全局配置文件是php.ini,在上一步中将其复制到/usr/local/php/lib/php.ini下。 根据每个APP应用的需要,可以正确配置php.ini。
以PHP-FPM引擎的性能分析为中心进行说明。
根据上面指定的安装路径,PHP-FPM的缺省配置文件为/usr/local/PHP/etc/PHP-fpm.conf。
php-fpm.conf是XML格式的纯文本文件,内容简单易懂。 这里重点介绍几个重要的配置标签。
标签listen_address是fastcgi进程配置为监听的IP地址和端口。默认值为127.0.0.1:9000,可以更改端口
value name=listen _ address 127.0.0.1:9000/value
标签display_errors用于设置是否显示PHP错误消息。 默认值为0,不显示错误消息。 如果设置为1,则可以显示PHP错误消息。
value name=display _ errors0/value
标签user和group用于设置运行FastCGI进程的用户和用户组。 请注意,此处指定的用户和用户组将与在Nginx配置文件中指定的用户和用户组相匹配。
valuename=usernobody/value
valuename=groupnobody/value
标签max_children用于设置FastCGI的进程数。 根据官方的建议,对于内存小于2GB的服务器,只能开启64个进程,而对于内存大于4GB的服务器,可以开启200个进程。
valuename=max_children5/value
request_terminate_timeout标签用于设置FastCGI执行脚本的时间。 默认值为0s,即无限运行,可以根据情况进行修改。
value name=request _ termin ate _ time out 0s/value
标签rlimit_files用于设置PHP-FPM打开的文件描述符的限制,默认值为1024。 此标签的值必须与Linux内核打开的文件数量相关联。 例如,要将此值设置为65535,请单击,
在Linux命令行中: quot; ulimit-HSN65536\\&; quot; 中选择另一种天花板类型。
value name=rlimit _ files 1024/value
标签max_requests指示每个children处理的最大请求数,缺省设置为500。
value name=max _ requests 500/value
allowed_clients标签用于设置允许访问FastCGI进程解析器的IP地址。 如果不在此指定IP地址,则不接受从Nginx转发的PHP解析请求。
value name=allowed _ clients 127.0.0.1/value
在管理FastCGI进程并配置php-fpm后,可以启动FastCGI进程
/usr/local/php/sbin/php-fpm
FastCGI进程启动后,它接收的IP地址和端口也会启动,并可以通过ps和netstat查看相关信息
由于Nginx本身不解析PHP,因此要实现Nginx对PHP的支持,实际上必须将对PHP页面的请求传递到fastCGI进程监听的IP地址和端口。
如果将php-fpm视为动态APP应用服务器,则Nginx实际上是反向代理服务器。 Nginx通过反向代理功能实现PHP的分析,这是Nginx实现PHP动态分析的原理
Nginx配置文件的路径为/usr/local/nginx/conf/nginx.conf。 以下是在Nginx上支持PHP分析的示例虚拟主机配置示例
# VI/usr/local/nginx/conf/nginx.conf
fastcgi_param命令指定PHP动态程序所在的主目录,即在$fastcgi_script_name之前指定的路径。 这里是/usr/local/nginx/html目录
FastCGI_params文件是FastCGI进程参数设置文件,在安装Nginx后缺省生成。 本节使用include命令包括fastcgi参数配置文件
配置Nginx FastCGI后,需要添加一些FastCGI优化指令,以确保PHP环境在Nginx上快速稳定地运行。 优化的例子如下所示。
将以下代码添加到Nginx主配置文件的HTTP级别
location~\\\\.php${
roothtml;
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
fastcgi _ param script _ filename $ document _ root $ fastcgi _ script _ name;
includefastcgi_params;
# fastcgi _ cache _ path/usr/local/nginx/fastcgi _ cache levels=1:2keys _ zone=test:10 min active=5m;
fastcgi_connect_timeout300;
fastcgi_send_timeout300;
fastcgi_read_timeout300;
fastcgi_buffer_size64k;
fastcgi_buffers464k;
fastcgi_busy_buffers_size128k;
fastcgi _ temp _ file _ write _ size 128 k;
#fastcgi_cacheTEST;
fastcgi_cache_valid2003021h;
fastcgi_cache_valid3011d;
fastcgi_cache_validany1m;
}
说明上述代码的含义。
第一行代码指定FastCGI缓存的文件路径、目录结构级别、关键字区域的保存时间和非活动删除时间。
FastCGI_connect_timeout指定与后端fastcgi的连接的超时时间。
FastCGI_send_timeout指定向FastCGI发送请求的超时时间。 这是在两次握手完成后向fastcgi发送请求的超时时间。
FastCGI_read_timeout指定接收FastCGI响应的超时时间。 此值是在两次握手完成后接收fastcgi响应的超时时间。
FastCGI_buffer_size用于指定读取fastcgi响应的第一部分所需的缓冲区大小。 此值表示使用一个64KB的缓冲区读取响应的第一部分(响应标头),可以设置为fastcgi_buffers选项指定的缓冲区大小。
FastCGI_buffers指定本地缓冲fastcgi响应请求所需的缓冲区数量和大小。 如果PHP脚本生成的页面大小为256KB,则为缓存分配4个64KB的缓冲区。 如果页面大小大于256KB,则大于256KB的部分将缓存在fastcgi_temp指定的路径中,但这不是一个好方法,因为内存处理数据的速度比硬盘快。 通常,此值应该是站点中PHP脚本生成的页面大小的中间值。 如果站点中的大多数脚本生成的页面大小为256KB,则可以将此值设置为16 16k、4 64k等。
fastcgi_busy_buffers_size的默认值是fastcgi_buffers的两倍。
fastcgi_temp_file_write_size表示写入缓存文件时使用的数据块的大小,默认值是fastcgi_buffers的两倍。
FastCGI_cache意味着打开fastcgi缓存并为其分配名称。 打开缓存可以有效地减轻CPU的负担并防止502错误,但在某些情况下,打开缓存会带来许多问题。
fastcgi_cache_valid和fastcgi用于指定响应代码的缓存时间。 实例的值表示高速缓存200和302个响应1小时,301个响应1天,其他响应1分钟。
用Nginx测试PHP的分析功能
在本部分中,将在/usr/local/nginx/html目录下创建phpinfo.php文件。 内容如下。
? phpphpinfo (;
下次从浏览器访问http://ip/index.html时,默认情况下浏览器会显示“Welcome to Nginx! 显示“”。 表示Nginx正常工作。
然后,在浏览器中访问http://ip/phpinfo.php并成功解析PHP后,将显示PHP安装配置和功能列表的统计信息。
三. yum安装Mariadb数据库
删除所有与MySQL/MariaDB相关的rpm程序包
CentOS 7源中不再包含MySQL,而是更改为MariaDB。
1、使用rpm-QA搜索mariadb中的现有程序包:
如果存在,则使用rpm-enodepsmariadb-*将删除所有内容
2、使用rpm -qa | grep mysql查找mysql现有程序包:
如果存在,请使用yumremovemysqlmysql-server MySQL-libs compat-MySQL删除所有内容;
我推荐使用系统附带的mariadb,所以直接安装yum很方便
3、yum安装玛丽亚数据库
# yum install-ymariadbmariadb-server
注: mariadb是数据库客户端,mariadb-server是数据库服务器端
4、命令启动MariaDB服务
#systemctlstartmariadb
5、查看mariadb流程服务是否在跑
#ps-ef|grepmariadb
root 1013110095019:24 pts/200:00:00 grep-- color=automariadb
mysql10197100090Jan19? 15:56:01/usr/sbin/mysqld-- basedir=/usr-- datadir=/var/lib/MySQL-- plugin-dir=/usr/lib 64/mysqld
6、查看数据库状态
#systemctlstatusmariadb
7 .然后运行mysql_secure_installation初始化配置MariaDB :
#mysql_secure_installation
在这个阶段进入的话,root初始密码为空,回到车上就可以了。 我个人认为,此时可以选择修改和设置数据库的root密码。 而且,在以下设置中,我认为Disallow root login remotely、removetestdatabaseandaccesstoit除了n以外还可以是y
8、登录MariaDB,创建相应的数据库用户和数据库
)1)使用mysql -uroot -p登录,回车后系统会提示输入密码。
)2)创建新用户,其中$password填写自己设置的密码。 当然也可以稍后修改;
创建用户\\& amp; quot; git\\&; quot; $password\\&; quot; \&; quot; localhost\\&; quot; identifiedby\\&; quot;
)3)安装存储引擎
Maria db [ none ] set storage _ engine=innodb;
(4)建立数据库
Maria db [ none ] createdatabasedatabase _ namecharactersetutf 8;
(5)用户权限设定
grantallprivilegeson *.* to\\ & amp; quot; root\\\&; quot; \&; quot; @\\&; quot; \&; #039; %\\&; quot; identifiedby\\&; quot; \\&; quot; $password\\&; quot;
#上面的定义可以是,root用户可以从任何计算机远程连接到数据库中的所有内容,拥有最高权限,并且有权允许他人进行远程连接。
经过以上操作步骤,即使lnmp环境基本上已经构建完毕。 然后,只需将APP应用程序代码放入Nginx的html中,并设置APP应用程序和数据库连接的配置文件即可。
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn