Centos7 Nginx+PHP7 配置

内容:

  • 源码编译安装Nginx和PHP
  • 配置PHP和Nginx,实现Nginx转发到PHP处理
  • 测试
  • 设置Nginx、PHP开机自启

安装的版本:

  • Nginx:1.18.0 读音engine x
  • PHP:7.4.8
1. 源码编译安装Nginx和PHP

  安装是执行源码编译安装,需要有对应的库工具,如gcc编译和zlib压缩这些,执行命令安装:

  1. shell> yum install -y openssl openssl-devel zlib zlib-devel pcre pcre-devel gcc gcc-c++ libxml2-devel libsqlite3x-devel

  如果执行配置时,./configure提示缺少某些库时,可以再复制搜索查询所需的库。

  过程:下载->解压->配置->编译->安装

  1. shell> wget http://nginx.org/download/nginx-1.18.0.tar.gz #wget下载nginx源码包,或者使用curl下载:curl -O http://nginx.org/download/nginx-1.18.0.tar.gz -O是--remote-name Write output to a file named as the remote file
  2. shell> tar -zxvf nginx-1.18.0.tar.gz #解压下载的源码压缩包 -z(--gzip)针对gzip的压缩,-x(--extract)是提取,-f保留原有压缩包的文件结构,-v打印详情
  3. shell> cd nginx-1.18.0 #进入目录
  4. shell> ./configure --prefix=/usr/local/nginx --with-http_ssl_module #执行configure会检查所需的库,成功后会生成一个Makefile文件,--prefix是执行安装的路径,--with-http_ssl_module是添加ssl模块支持,这里不会用到
  5. shell> make -j 8 #编译,-j为--job,开启8个工作任务
  6. shell> make install #执行安装,这里会把编译生成的程序文件拷贝到安装目录下并创建相关的文件夹

  过程:下载->解压->配置->编译->安装

  1. shell> wget https://www.php.net/distributions/php-7.4.8.tar.gz #如果下载慢的话,可以用迅雷粘贴url下载,应该会比这样下载快点
  2. shell> tar -zxvf php-7.4.7.tar.gz #解压
  3. shell> cd cd php-7.4.7/ #进入解压目录
  4. shell> ./configure --prefix=/usr/local/php -with-config-file-path=/usr/local/php/etc --enable-fpm #执行配置检查,--enable-fpm是开启PHP的fpm资源管理,关于fpm可以查阅资料了解一下
  5. shell> make -j 8 #编译,-j为--job,开启8个工作任务
  6. shell> make install #执行安装
  7. shell> cp php.ini-development /usr/local/php/php.ini #拷贝php初始化配置文件,this file is responsible for configuring many of the aspects of PHP's behavior.
2. 配置PHP和nginx,实现Nginx转发到PHP处理
  • nginx
  1. shell> cd /usr/local/nginx #进入编译安装的nginx目录
  2. shell> vim conf/nginx.conf #修改nginx的配置文件

  修改默认的location块:

  1. location / {
  2. root html;
  3. index index.html index.htm index.php; #添加PHP的index首页
  4. }

  再添加处理以.php结尾的location块:

  1. location ~* \.php$ {
  2. fastcgi_index index.php; #PHP index页面
  3. fastcgi_pass 127.0.0.1:9000; #配置fastcgi服务器,请求会转发到fastcgi服务器(可以理解为PHP解析器),IP和端口在php中配置
  4. include fastcgi_params; #加入fastcgi_params,如下面的fastcgi_param参数
  5. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  6. fastcgi_param SCRIPT_NAME $fastcgi_script_name;
  7. }
  • php
  1. shell> cd /usr/local/php #进入编译安装的php目录
  2. shell> cp etc/php-fpm.d/www.conf{.default,} #拷贝默认的的配置文件,相当于执行了cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf,配置包括了php解析器的IP和端口,用户和用户组等配置
  3. shell> cp etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf #拷贝默认的php-fpm的启动配置文件
  4. shell> groupadd www-data #创建www-data用户组
  5. shell> useradd -g www-data -s /sbin/nologin www-data #创建www-data用户,属于www-data用户组(-g --group),类型为不可登录(-s --shell)

  再修改php www的用户和用户组,设置为www-data,www.conf文件:

  1. ; Unix user/group of processes
  2. ; Note: The user is mandatory. If the group is not set, the default user's group
  3. ; will be used.
  4. user = www-data
  5. group = www-data

  再修改php-fpm的配置文件,设置启动的进程pid文件存储位置,后面设置服务需要用到进程运行IDpidphp-fpm.conf文件:

  1. [global]
  2. ; Pid file
  3. ; Note: the default prefix is /usr/local/php/var
  4. ; Default Value: none
  5. pid = /usr/local/php/var/run/php-fpm.pid
3. 测试

  编写测试的php页面

  1. shell> rm /usr/local/nginx/html/index.html #删除nginx默认的首页文件
  2. shell> echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php #创建测试文件,使用php的信息函数显示信息

  启动php和nginx

  1. shell> /usr/local/php/sbin/php-fpm #启动php-fpm
  2. shell> /usr/local/nginx/sbin/nginx #启动nginx

  接着,就可以浏览器输入nginx的服务器ip进行http访问了,我的这里是输入http://172.16.11.141:80,如下图所示:

  至此,nginx+php的安装和测试成功。

4. 设置Nginx、PHP开机自启
  • nginx

  在centos7中,服务都是使用systemdctl命令而不是service了,即使是使用service命令其实也是链接到systemdctl命令,关于systemd的介绍可以参考阮一峰老师的:Systemd 入门教程:命令篇

  1. shell> cd /lib/systemd/system/ #切换目录到关于系统进程的目录
  2. shell> vim nginx.service #在目录下新建nginx.service文件,填入以下内容

nginx.service文件

  1. [Unit]
  2. Description=nginx service
  3. After=network.target
  4. [Service]
  5. Type=forking
  6. ExecStart=/usr/local/nginx/sbin/nginx
  7. ExecReload=/usr/local/nginx/sbin/nginx -s reload
  8. ExecStop=/usr/local/nginx/sbin/nginx -s quit
  9. PrivateTmp=true
  10. [Install]
  11. WantedBy=multi-user.target

  [Unit]块是这个服务单元的描述;[Service]块是服务的配置,如启动命令,停止命令,其中的Type=forking表示后台执行;[Install]块是安装的配置,multi-user.target是运行级别为3,Linux有0-6歌运行级别。最后,执行命令执行开启开机自启:

  1. shell> systemctl enalbe nginx.service #开启nginx开机自启服务,关闭对应dsiable

  关于systemctl的详细使用介绍可以查阅这篇文章:How To Use Systemctl to Manage Systemd Services and Units

  • php

  php的服务也差不多,不过php在5.3.3以后的版本不再支持 (start|stop|reload) 等命令,需要使用Linux的信号量:INT,USR1,USR2,QUIT等。

  1. shell> cd /lib/systemd/system/ #切换目录到关于系统进程的目录
  2. shell> vim php-fpm.service #在multi-user.target.wants目录下新建php-fpm.service文件,填入以下内容

php-fpm文件:

  1. [Unit]
  2. Description=php-fpm service
  3. After=network.target
  4. [Service]
  5. Type=forking
  6. ExecStart=/usr/local/php/sbin/php-fpm
  7. ExecReload=kill -USR2 $(cat /usr/local/php/var/run/php-fpm.pid)
  8. ExecStop=kill -INT $(cat /usr/local/php/var/run/php-fpm.pid)
  9. PrivateTmp=true
  10. [Install]
  11. WantedBy=multi-user.target

  关于Linux的信号量,可以查阅这篇文章介绍:Signals in Linux ,最后开启php-fpm服务:

  1. shell> systemctl enable php-fpm.service #开启php-fpm开机自启服务,关闭对应dsiable
5. 最后

  最后重启进行测试:

  1. shell> reboot #重启
  2. shell> ps aux | grep php-fpm #查看php-fpm相关进程是否运行
  3. shell> ps aux | grep nginx #查看nginx相关进程是否运行

Centos7 Nginx+PHP7 配置的更多相关文章

  1. nginx php7 配置 备用

    yum install epel-* -y yum install -y wget unzip gcc gcc-c++ make zlib zlib-devel pcre pcre-devel lib ...

  2. centos7: nginx安装配置

    centos平台编译环境使用如下指令 安装make: yum -y install gcc automake autoconf libtool make 安装g++: yum install gcc ...

  3. centos7 nginx yum 配置

    [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck= enabled=

  4. CentOS7 nginx简单配置pathinfo模式(ThinkPHP)

    location ~ \.php {    #去掉$ root          H:/PHPServer/WWW; fastcgi_pass   127.0.0.1:9000; fastcgi_in ...

  5. Vmware搭建LNMP环境(Centos7+Nginx+Mysql+PHP7.1.8)

    参考:1.Linux学习之CentOS(一)----在VMware虚拟机中安装CentOS 7(图文教程) 2.Centos7搭建LNMP环境 3.MySQL5.7修改默认root密码 4.CentO ...

  6. [原创]Centos7 从零配置Nginx+PHP+MySql

    序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...

  7. Ubuntu17.04配置LNMP(Nginx+PHP7+MySQL)简单教程 快速 易学 简单易懂

    我安装的是当前最新的Ubuntu版本17.04,在虚拟机中先试用一下,如果没有什么不稳定的现象,准备以后作为主力操作系统 Ubuntu属于Debian系的Linux系统,拥有着一个很NB的软件包管理器 ...

  8. CentOS7 Nginx安装及配置反向代理

    背景: Mono (Mono JIT compiler version 5.4.0.201 ) jexus-5.8.2-x64(<CentOS7 安装 jexus-5.8.2-x64>) ...

  9. [Centos7]无法访问配置好的nginx

    Centos7无法访问配置好的nginx 临时生效 # 重启虚拟机,将失效 iptables -I INPUT -p TCP --dport 80 -j ACCEPT 永久有效 # 在防火墙中开放80 ...

随机推荐

  1. Codeforces Edu Round 61 A-C + F

    A. Regular Bracket Sequence 显然,"\(()\)"不影响结果它是自我匹配的,可以把所有的\(((\)和\())\)都放在左边/右边,这样只要检查它们的数 ...

  2. Java并发编程的艺术(十一)——Executor与线程池

    Executor框架简介 从JDK5开始,把工作单元和执行机制分离开来了,工作的单元包括Runnable和Callable,执行机制就是由Executor框架提供. Executor两级调度模型 Ho ...

  3. C++ cin.ignore() 的使用

    cin.sync()的功能是清空缓冲区,而cin.ignore()虽然也是删除缓冲区中数据的作用,但其对缓冲区中的删除数据控制的较精确. 有时候你只想取缓冲区的一部分,而舍弃另一部分,这是就可以使用c ...

  4. 不会吧不会吧,还有开发不会Java填充PDF模板数据的,赶紧看看吧

    思路 根据业务需求,获取实际业务数据,借助itext库功能,将业务数据填充入提前制作好的PDF模板中 操作步骤 制作PDF模板:提前下载好Adobe Acrobat Pro DC 效果展示 准备PDF ...

  5. 自动化管理平台rundeck的安装方法

    简介 RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程.通过命令行或者web界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自 ...

  6. Bug java 安全证书

    在一个改修项目里,安全性方面总是出一个bug,错误信息如下: xception in thread "main" javax.crypto.BadPaddingException: ...

  7. securecrt7.1注册方法

    本文出自 "Kinslayer 's Blog" 博客,请务必保留此出处http://kinslayer.blog.51cto.com/3681810/833438

  8. [IOI1994]The Castle

    开了博客之后一直没动今天水完题手痒想起这个就来水一篇陈年水题(雾 题目链接<< 题意:给一张n*m个格子的地图信息,求连通块个数以及最大连通块面积. 每个格子四个方向可以有墙,输入用一个十 ...

  9. PHPCMS V9.6.0 SQL注入漏洞分析

    0x01 此SQL注入漏洞与metinfo v6.2.0版本以下SQL盲注漏洞个人认为较为相似.且较为有趣,故在此分析并附上exp. 0x02 首先复现漏洞,环境为: PHP:5.4.45 + Apa ...

  10. kali docker简单使用-vulhub搭建fastjson漏洞环境

    准备环境 安装kali和docker参考: https://www.cnblogs.com/lijingrong/p/13396884.html sudo service docker start / ...