环境准备

# cat /etc/centos-release

CentOS Linux release 7.6.1810 (Core)

# uname -r

3.10.0-957.el7.x86_64

# getenforce

Disabled

# systemctl status firewalld.service

● firewalld.service - firewalld - dynamic firewall daemon

Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)

Active: inactive (dead)

Docs: man:firewalld(1)

解决依赖关系

# yum install -y gcc gcc-c++  make zlib zlib-devel pcre pcre-devel  libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers libXpm-devel postgresql-devel re2c libxslt libxslt-devel

#这里要配置好epel源  re2c是epel源软件。

安装libiconv 字符编码强制转换

# wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv版本号  #地址随时变动

# tar xf libiconv-1.15.tar.gz

# cd libiconv-1.15/

# ./configure --prefix=/usr/local/libiconv

# make && make install

php7.2下载地址

https://www.php.net/downloads.php  #地址可能会变动,找到php-7.2.16.tar.gz

# tar xf php-7.2.16.tar.gz

# cd php-7.2.16

创建用户

groupadd nginx

useradd -r -g nginx -s /bin/false -M nginx

编译安装php

./configure  --prefix=/application/php-7.2.16 --with-libxml-dir=/usr --with-curl --disable-rpath --with-xsl --with-jpeg-dir --with-png-dir --with-pdo-mysql  --with-mysqli --with-xmlrpc --with-zlib --enable-sysvsem --enable-mbregex --with-openssl --enable-sockets --enable-fpm --with-iconv-dir=/usr/local/libiconv --enable-bcmath --with-mhash --enable-inline-optimization --enable-pcntl --with-gd --with-fpm-user=nginx  --with-fpm-group=nginx --enable-opcache --enable-soap --enable-mbstring --enable-xml --with-pgsql --enable-calendar --enable-sysvshm --enable-exif --with-pcre-regex --with-zlib-dir --with-pdo-pgsql --with-freetype-dir --with-xpm-dir=/usr --with-gettext --with-libdir=/lib/x86_64-linux-gnu/ --with-freetype-dir --enable-shmop --enable-short-tags  --enable-static  --enable-ftp

# 部分安装参数说明:测试中发现7.2不提供压缩功能,所以有些类似的编译参数就删除了。

--prefix=/application/php-7.2.16 \              #编译安装目录

#  --with-pdo-mysql=mysqlnd \                     #mysql扩展,php已经不支持了,这里已经改为mysqli扩展了,后面会提到,如果没有安装的,后边又编译安装方法

--with-iconv-dir=/usr/local/libiconv \          #字符编码强制转换

--with-freetype-dir \                         # 打开对freetype字体库的支持

--with-jpeg-dir \                            # 打开对jpeg图片的支持

--with-png-dir \                             # 打开对png图片的支持

--with-zlib \                                 # 打开zlib库的支持

--with-libxml-dir=/usr \                    # 打开libxml2库的支持

--enable-xml \                                # 开启xml

--disable-rpath \                             # 关闭额外的运行库文件

--enable-bcmath \                           # 打开图片大小调整,用到zabbix监控的时候用到了这个模块

--enable-shmop \                            # 允许PHP读取、写入、创建和删除Unix共享内存段的函数集。

--enable-sysvsem \                          # 处理相关的IPC函数

--enable-inline-optimization \             # 优化线程

--with-curl \                                 # 打开curl浏览工具的支持

--enable-mbregex \               # 此配置项用于禁用具有多字节字符支持的正则表达式函数

--enable-fpm \                 # 打上PHP-fpm 补丁后才有这个参数。CGI方式安装的启动程序

--enable-mbstring \                         # 多字节,字符串的支持

--with-gd \                                 # 打开gd库的支持

--with-openssl \                      # openssl的支持,加密传输https时用到的

--with-mhash \                              #  mhash算法扩展

--enable-pcntl \                     # freeTDS需要用到的,可能是链接mssql 才用到

--enable-sockets \                          # 打开 sockets 支持

--with-xmlrpc \                             # 打开xml-rpc的c语言

--enable-soap \                       # SOAP扩展用来编写SOAP服务端和客户端

--enable-short-tags \                    # 短标记

--enable-static \                           # 生成静态链接库

--with-xsl \                   #打开XSLT文件支持,扩展了libXML2库 ,需要libxslt软件

--with-fpm-user=nginx \                       #用户名

--with-fpm-group=nginx \                  #用户组

--enable-ftp \                              # 打开ftp的支持

--enable-opcache=no                       # 性能加速

编译安装

# make && make install

# 创建软连接

# ln -s /绝对路径/php-7.2.16 /绝对路径/php

配置php

注:目前位置在源码包解压目录

# cp php.ini-production /application/php/php.ini

# 配置php启动为systemctl管理(php编译安装个性化的编写好了systemctl文件复制到systemctl目录即可使用)

cp /php-7.2.16/sapi/fpm/php-fpm.service /usr/lib/systemd/system/php-fpm.service

注:切换至安装目录

修改 php.ini 文件 设置 expose_php = Off
vim /application/php/etc/php.ini
找到 expose_php = On
改为 expose_php = Off

# cd /application/php/etc/

# cp php-fpm.conf.default php-fpm.conf

# vim php-fpm.conf

去掉 pid = run/php-fpm.pid 前面的分号

# cd php-fpm.d/

# cp www.conf.default www.conf

#  vim www.conf

修改user和group的用户为当前用户(也可以不改,默认会添加nobody这个用户和用户组

# sed -i 's#user = www#user = nginx#g;s#group = www#group = nginx#g' /application/php-5.5.32/etc/php-fpm.conf

启动php-fpm

# /etc/init.d/php-fpm start        #php-fpm启动命令

# /etc/init.d/php-fpm stop         #php-fpm停止命令

# /etc/init.d/php-fpm restart        #php-fpm重启命令

# ps -ef | grep php 或者 ps -A | grep -i php  #查看是否已经成功启动PHP

安装mysqli扩展

注:默认在源码安装包中就有mysqli扩展包

# cd /源码包位置/php-7.2.16/ext/mysqli

# /php安装位置/bin/phpize   # 侦测环境建立configure文件

# ./configure --with-php-config=/application/php/bin/php-config

# make &&  make install

# ls /application/php-7.2.16/lib/php/extensions/no-debug-non-zts-20170718/  # 此地址就是安装后的mysqli的扩展了。

mysqli.so    # mysqli扩展文件

# vim php.ini  # 修改php.ini 配置文件

找到extension字段,在下方添加mysqli扩展位置

extension = /application/php/lib/php/extensions/no-debug-non-zts-20170718/mysqli.so

# 重启php-fpm和nginx通过phpinfo();查看安装的安装的扩展,效果如下

# 下边的页面需要等nginx配置好后才能正常访问到

# vim /nginx安装目录/html/test_info.php

<?php

phpinfo();

?>

编译安装nginx

# 将下载好的nginxnginx-1.14.2.tar.gz压缩包解压 #用上面创建的nginx用作为启动用户

注:在后期添加模块的时候只需要重新make即可,不要make install后者会覆盖前者,即指覆盖安装的意思。

# cd /nginxnginx-1.14.2

# ./configure \

--prefix=/application/nginx-1.14.2 \    # 编译安装位置

--user=nginx --group=nginx \        # 启动用户组和用户

--with-http_stub_status_module  \    # 用于查看Nginx的一些状态信息

--with-http_ssl_module              # 添加ssl模块

# make && make install

# ln -s /绝对路径/nginxnginx-1.14.2 /绝对路径/nginx

# cd /nginx安装目录/nginx/conf/

# 精简nginx配置文件

# egrep -v '^$|#' nginx.conf.default > nginx.conf

# cat nginx.conf

worker_processes  1;

events {

worker_connections  1024;

}

http {

include       mime.types;

default_type  application/octet-stream;

sendfile        on;

keepalive_timeout  65;

server {

listen       80;

server_name  localhost;

location / {

root   html;

index  index.html index.htm;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

}

# 下边是php解析配置部分

location ~ \.php$ {

root           html;

fastcgi_pass   127.0.0.1:9000;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  /application/nginx/html$fastcgi_script_name;

include        fastcgi_params;

}

}

}

启动nginx

# /绝对路径/nginx           # 启动nginx

# /绝对路径/nginx/ -c    # 指定配置文件,来取代默认的配置文件

# /绝对路径/nginx -t     # 检查配置文件 每次nginx配置文件变更,都检查一次

# /绝对路径/nginx -s reload   # 平滑重启

# /绝对路径/nginx -s stop     # 停止nginx

配置PATH环境  #注意符号,空格等

# export PATH=/usr/local/nginx/sbin:$PATH

# echo "export PATH=/application/nginx/sbin:$PATH" >>/root/.bash_profile

# source /root/.bash_profile

查看进程

# ps -ef |grep -E 'nginx|php'

root       8806      1  0 21:41 ?        00:00:00 nginx: master process nginx

nginx      8807   8806  0 21:41 ?        00:00:00 nginx: worker process

root       9244      1  0 21:59 ?        00:00:00 php-fpm: master process (/application/php-7.2.16/etc/php-fpm.conf)

nginx      9245   9244  0 21:59 ?        00:00:00 php-fpm: pool www

nginx      9246   9244  0 21:59 ?        00:00:00 php-fpm: pool www

# netstat -antup|grep -E 'nginx|php'

tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      9244/php-fpm: maste

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      8806/nginx: master

扩展整理,

nginx反向代理

# vim nginx.conf

worker_processes  1;

events {

worker_connections  1024;

}

http {

include       mime.types;

default_type  application/octet-stream;

sendfile        on;

keepalive_timeout  65;

upstream server_pools{

server 192.168.1.11:80;

}

server {

listen       80;

server_name  www.wordpress.com;

location / {

proxy_pass http://server_pools;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

}

}

}

通过php查看mysql5.7连接状态

# vim test_mysql.php

<?php

$mysqli = new mysqli("主机地址","用户","密码","访问的库");

if(!$mysqli)  {

echo"database error";

}else{

echo"php env successful";

}

$mysqli->close();

?>

# 效果展示

负载均衡配置:

# vim /application/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html/wordpress;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ .*\.(php|php7)?$ {
root html/wordpress;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}

}
}

编译装php7.2 && nginx-1.14的更多相关文章

  1. 全志a20安卓电视盒子安装可道云kodexplorer服务-编译安装php7.3+nginx

    可道云真的很强大,安装包很小,功能却很齐全,还可以自定义轻应用如果有手机客户端就更好了 研究了一下,可道云根目录放到外置存储设备(移动硬盘)会更合适,改路径的方法下面有提到上传文件时一个文件会在用户目 ...

  2. nginx php-fpm安装配置 CentOS编译安装php7.2

    CentOS编译安装php7.2 介绍: 久闻php7的速度以及性能那可是比php5系列的任何一版本都要快,具体性能有多好,建议还是先尝试下再说.如果你是升级或新安装,那你首先需要考虑php7和程序是 ...

  3. 编译安装 nginx -1.14.2

    编译安装 nginx -1.14.2 1 ) 下载nginx-1.14.2 源码包: wget http://nginx.org/download/nginx-1.14.2.tar.gz 2 ) 编译 ...

  4. 在openwrt 17.01上编译最新nginx 1.14.2的笔记

    openwrt 17.01源码对应的nginx版本是1.10.2,有些新功能没有,所以需要升级到nginx 1.14.2最新的稳定版 https://github.com/macports/macpo ...

  5. centos7下编译安装php-7.0.15(PHP-FPM)

    centos7下编译安装php-7.0.15(PHP-FPM) 一.下载php7源码包 http://php.net/downloads.php 如:php-7.0.15.tar.gz 二.安装所需依 ...

  6. 编译安装PHP7并安装Redis扩展Swoole扩展

    编译安装PHP7并安装Redis扩展Swoole扩展 在编译php7的机器上已经有编译安装过php5.3以上的版本,从而依赖库都有了 本php7是编译成fpm-php 使用的, 如果是apache那么 ...

  7. 【安装PHP】如何在openSUSE42.1下编译安装PHP7

    首先推荐一篇文章PHP 7 Release Date Arrived: Will Developers Adopt PHP 7? - PHP Classes blog. 里面说到是否会去使用PHP7, ...

  8. centos7.6编译安装php7.2.11及redis/memcached/rabbitmq/openssl/curl等常见扩展

    centos7.6编译安装php7..11及redis/memcached/rabbitmq/openssl/curl等常见扩展 获取Php的编译参数方法: [root@eus-api-cms-bac ...

  9. centos6.9 PHP的编译安装并连接nginx

    1.安装yum -y install libxml2-devel openssl-devel bzip2-devel libmcrypt-devel 解决php包的依赖关系,可能libmcrypt会报 ...

随机推荐

  1. hover如何在移动浏览器上触发

    例如HTML结构如下 <div>menu<ul> <li>item1</li> <li>item2</li> </ul&g ...

  2. 阿里如何实现海量数据实时分析技术-AnalyticDB

    导读:随着数据量的快速增长,越来越多的企业迎来业务数据化时代,数据成为了最重要的生产资料和业务升级依据.本文由阿里AnalyticDB团队出品,近万字长文,首次深度解读阿里在海量数据实时分析领域的多项 ...

  3. 实战经验|大神战队都在i春秋教你打CTF

    全国大学生信息安全竞赛创新实践能力赛旨在培养.选拔.推荐优秀信息安全专业人才创造条件,促进高等学校信息安全专业课程体系.教学内容和方法的改革,培养学生的创新意识与团队合作精神,普及信息安全知识,增强学 ...

  4. Linux 使用 top 命令查看系统的运行情况

    top命令显示界面 top命令默认在一个特定间隔(3秒)后刷新显示.要手动刷新,用户可以输入回车或者空格. top - 18:32:45 up 230 days, 2:01, 1 user, load ...

  5. 栈到CLR

    提起栈想必会听到这样几个关键词:后进先出,先进后出,入栈,出栈. 栈这种数据结构,数组完全可以代替其功能. 但是存在即是真理,其目的就是避免暴漏不必要的操作. 如角色一样,不同的情景或者角色拥有不同的 ...

  6. springboot集合jpa使用

    现目前java中用较多的数据库操作框架主要有:ibatis,mybatis,hibernate:今天分享的是jpa框架,在springboot框架中能够很快并方便的使用它,就我个人而言觉得如果是做业务 ...

  7. What?VS2019创建新项目居然没有.NET Core3.0的模板?Bug?

    今天是个值得欢喜的日子,因为VS2019在今天正式发布了.作为微软粉,我已经用了一段时间的VS2019 RC版本了.但是,今天有很多小伙伴在我的<ASP.NET Core 3.0 上的gRPC服 ...

  8. Spring之旅第六篇-事务管理

    一.什么是事务 什么是事务(Transaction)?事务是数据库中的概念,是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit). 有个非常经典的转账问题:A向B转款1000元,A转出成 ...

  9. [开源]WinForm 控件使用总结

    背景 都2019年了,还在用WinForm吗?哈哈,其实我也没在用,都是很多年前一些项目积累,所以代码写的有些屎,之所以开源出来,希望能给大家有所帮助,喜欢的话给 一个Star以资鼓励~: 具体代码: ...

  10. 使用cobbler工具实现centos 6,7系统的自动化安装

    vmware里面准备两台虚拟机,一台用于安装cobbler服务器,另一台当作测试机使用,cobbler服务器需要两块网卡,一块需要连接外网,需要使用epel源.测试机使用一块仅主机的模式的网卡,注意要 ...