重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

CentOS7.2上NginxPHPMariadb环境搭建-创新互联

最近有个ERP+PHP-web 測試頁面環境部署需求,需要部署nginx+php的cgi+socket的模式、mysql环境。查看服务端口是否起来,我们习惯使用netstat指令查看,所以如果你的系统里尚未安装netstat,可直接安裝 yum install -y net-tools即可

创新互联建站联系热线:18980820575,为您提供成都网站建设网页设计及定制高端网站建设服务,创新互联建站网页制作领域十载,包括VR全景等多个行业拥有多年设计经验,选择创新互联建站,为企业锦上添花!

实验环境:

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组和用户,不创建家目录,不允许登陆系统

#groupadd  nginx #useradd  -M  -s /sbin/nologin  -g  nginx  nginx

安裝nginx採取的是nginx-1.10.1.tar.gz

# tar xf nginx-1.10.1.tar.gz  # cd nginx-1.10.1

指定安装目錄和運行时用的属主和属组,並啟用狀態監控模塊等

#  ./configure \   --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 \   --with-http_flv_module \   --with-http_stub_status_module \   --with-http_gzip_static_module \   --http-client-body-temp-path=/var/tmp/nginx/client/ \   --http-proxy-temp-path=/var/tmp/nginx/proxy/ \   --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \   --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \   --http-scgi-temp-path=/var/tmp/nginx/scgi \   --with-pcre

大致的配置结果

Configuration summary   + using system PCRE library   + using system OpenSSL library   + md5: using OpenSSL library   + sha1: using OpenSSL library   + using system zlib library   nginx path prefix: "/usr/local/nginx"   nginx binary file: "/usr/local/nginx/sbin/nginx"   nginx modules path: "/usr/local/nginx/modules"   nginx configuration prefix: "/usr/local/nginx/conf"   nginx configuration file: "/usr/local/nginx/conf/nginx.conf"   nginx pid file: "/var/run/nginx/nginx.pid"   nginx error log file: "/usr/local/nginx/logs/error.log"   nginx http access log file: "/usr/local/nginx/logs/access.log"   nginx http client request body temporary files: "/var/tmp/nginx/client/"   nginx http proxy temporary files: "/var/tmp/nginx/proxy/"   nginx http fastcgi temporary files: "/var/tmp/nginx/fcgi/"   nginx http uwsgi temporary files: "/var/tmp/nginx/uwsgi"   nginx http scgi temporary files: "/var/tmp/nginx/scgi"

上述配置完,就進行編譯安裝

#make && make install  #mkdir /var/tmp/nginx/client/ -pv

等编译安装完成后在 /usr/local 下就会出现 nginx 这个目录了,进入这个目录后发现目录非常简单。

它的配置文件存放在 conf 目录中,网页文件存放在 html 中,日志文件存放在 logs 中,

sbin 目录下只有一个可执行程序 "nginx"

二、部署php環境

a. FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口

b. Nginx是个轻量级的HTTP server,必须借助第三方的FastCGI处理器才可以对PHP进行解析

c. PHP-FPM是一个第三方的FastCGI进程管理器,它是作为PHP的一个补丁来开发的,在安装的时候也需要和PHP源码一起编译,

也就是说PHP-FPM被编译到PHP内核中,因此在处理性能方面更加优秀;同时它在处理高并发方面也比spawn-fcgi引擎好很多,

因此,推荐Nginx+PHP/PHP-FPM这个组合对PHP进行解析。

首先安裝php的一些依賴包

yum install -y gcc gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel

然後解壓下載好的tar包

# tar -xvzf php-5.6.5.tar.gz

進入到解壓後的php-5.6.5中

# cd php-5.6.5 # ./configure --prefix=/usr/local/php –enable-fpm –enable-mbstring –with-mysql=mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd # make && make install

查看php版本

# php -v PHP 5.6.5 (cli) (built: Jan 10 2017 03:53:13)  Copyright (c) 1997-2014 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies

如果不行,則直接在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就可以了,进去把 daemonize改成yes,以后台服务的运行方式启动。然后捏,whereis php-fpm,

这个是个可执行文件,直接执行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 # whereis php-fpm

配置与优化PHP-FPM

PHP的全局配置文件是php.ini,在上面的步骤中,已经将此文件复制到了/usr/local/php/lib/php.ini下。可以根据每个应用需求的不同,对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,端口可更改

127.0.0.1:9000

标签display_errors用来设置是否显示PHP错误信息,默认是0,不显示错误信息,设置为1可以显示PHP错误信息。

0

标签user和group用于设置运行FastCGI进程的用户和用户组。需要注意的是,这里指定的用户和用户组要和Nginx配置文件中指定的用户和用户组一致。

nobody  nobody

标签max_children用于设置FastCGI的进程数。根据官方建议,小于2GB内存的服务器,可以只开启64个进程,4GB以上内存的服务器可以开启200个进程。

5

标签request_terminate_timeout用于设置FastCGI执行脚本的时间。默认是0s,也就是无限执行下去,可以根据情况对其进行修改。

0s

标签rlimit_files用于设置PHP-FPM对打开文件描述符的限制,默认值为1024。这个标签的值必须和Linux内核打开文件数关联起来,例如要将此值设置为65535,

就必须在Linux命令行执行'ulimit -HSn 65536'。

1024

标签max_requests指明了每个children最多处理多少个请求后便会被关闭,默认的设置是500。

500

标签allowed_clients用于设置允许访问FastCGI进程解析器的IP地址。如果不在这里指定IP地址,Nginx转发过来的PHP解析请求将无法被接受。

127.0.0.1

管理FastCGI进程,在配置完php-fpm后,就可以启动FastCGI进程

/usr/local/php/sbin/php-fpm

FastCGI进程启动后,其监听的IP地址和端口也随即启动,可以通过ps和netstat查看相关信息

由于Nginx本身不会对PHP进行解析,因此要实现Nginx对PHP的支持,其实是将对PHP页面的请求交给fastCGI进程监听的IP地址及端口。

如果把php-fpm当做动态应用服务器,那么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之后,为了保证Nginx下PHP环境的高速稳定运行,需要添加一些FastCGI优化指令。下面给出一个优化实例,

将下面代码添加到Nginx主配置文件中的HTTP层级

location ~ \.php$ {           root           html;           fastcgi_pass   127.0.0.1:9000;           fastcgi_index  index.php;           fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;           include        fastcgi_params;          # fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;               fastcgi_connect_timeout 300;               fastcgi_send_timeout 300;               fastcgi_read_timeout 300;               fastcgi_buffer_size 64k;               fastcgi_buffers 4 64k;               fastcgi_busy_buffers_size 128k;               fastcgi_temp_file_write_size 128k;              # fastcgi_cache TEST;               fastcgi_cache_valid 200 302 1h;               fastcgi_cache_valid 301 1d;               fastcgi_cache_valid any 1m;         }

下面是对上述代码的含义进行介绍。

第一行代码是为FastCGI缓存指定一个文件路径、目录结构等级、关键字区域存储时间和非活动删除时间。

fastcgi_connect_timeout指定连接到后端FastCGI的超时时间。

fastcgi_send_timeout指定向FastCGI传送请求的超时时间,这个值是已经完成两次握手后向FastCGI传送请求的超时时间。

fastcgi_read_timeout指定接收FastCGI应答的超时时间,这个值是已经完成两次握手后接收FastCGI应答的超时时间。

fastcgi_buffer_size用于指定读取FastCGI应答第一部分需要用多大的缓冲区,这个值表示将使用1个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应答缓存一个小时,将301应答缓存1天,其他应答均缓存1分钟。

测试Nginx对PHP的解析功能

这里在/usr/local/nginx/html目录下创建一个phpinfo.php文件,内容如下:

然后通过浏览器访问http://ip/index.html,默认会在浏览器显示“Welcome to Nginx!”表示Nginx正常运行。

接着在浏览器中访问http://ip/phpinfo.php,如果PHP能够正常解析,会出现PHP安装配置以及功能列表统计信息。

三.yum 安装Mariadb数据库

删除全部MySQL/MariaDB相关的rpm包

MySQL 已经不再包含在 CentOS 7 的源中,而改用了 MariaDB;

1、使用rpm -qa | grep mariadb搜索 MariaDB 现有的包:

如果存在,使用rpm -e --nodeps mariadb-*将全部删除

2、使用rpm -qa | grep mysql搜索 mysql现有的包:

如果存在,使用yum remove mysql mysql-server mysql-libs compat-mysql全部删除;

我比较推荐使用系统自带的mariadb,所以直接yum安装比较方便

3、yum安装mariadb

# yum install -y mariadb mariadb-server

注:mariadb为数据库客户端,mariadb-server是数据库服务器端

4、命令启动MariaDB 服务

# systemctl start mariadb

5、查看mariadb进程服务是否在跑

# ps -ef | grep mariadb root     10131 10095  0 19:24 pts/2    00:00:00 grep --color=auto mariadb mysql    10197 10009  0 Jan19 ?       15:56:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/lib/mysql/zgz.pid --socket=/var/lib/mysql/mysql.sock

6、查看數據庫狀態

#systemctl status mariadb

7、接着运行 mysql_secure_installation初始化配置MariaDB:

#mysql_secure_installation

在这个阶段进入时root初始密码为空,所以回车即可。我个人觉得可以选择在这个时候修改设定数据库root密码,然后接下来的设定中,除了Disallow root login remotely 、Remove test database and accesss to it 可以為n,其他都是y

8、登录 MariaDB 并创建相应的数据库用户与数据库

 (1)使用mysql -uroot -p登录,回车之后会提示输入密码。

 (2)创建新用户,其中$password填写自己设置的密码。当然后面也可以修改;

CREATE USER 'git'@'localhost' IDENTIFIED BY '$password';

 (3)设置存储引擎

mariadb[none]> set storage_engine=INNODB;

(4)创建数据库

 mariadb[none]>create database database_name character set utf8;

(5)设置用户权限

grant all privileges on *.* to 'root'@'%' identified by '$password' with option;

  #上述可以定义为:root用户可以从任何机器上远程连接数据库里的所有内容且具备高权限,并且具有授予权他人远程连接的权限。

经过上述操作步骤,lnmp环境就算是基本搭建完毕。后面只需要把应用代码放进Nginx的html内,并将应用与数据库连接的配置文件设定完毕即可。

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前名称:CentOS7.2上NginxPHPMariadb环境搭建-创新互联
网站地址:http://cqcxhl.com/article/dgpdjp.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP