Linux配置nginx、PHP7详解

阿里云为例,安装nginx和最新的PHP7.0.10!

一.安装Nginx

  • 下载并安装nginx

    # yum install nginx

  • 启动nginx服务

    systemctl start nginx

    安装后,输入 :nginx -v 查看安装版本,确认安装成功,至于修改配置文件nginx.conf 我们下面再说!

    二.安装PHP7.0.10

    阿里云默认支持wget下载

    cd /usr/local
    wget  http://cn2.php.net/get/php-7.0.10.tar.gz/from/this/mirror
    tar zxvf php-7.0.10.tar.gz
    cd php-7.0.10
    首先查看安装帮助
     ./configure   –help
    然后复制下面的代码,黏贴后回车,把这些代码标记为“XXX命令”,后面会多次使用
     ./configure --prefix=/usr/local/php \
    --with-curl \
    --with-freetype-dir \
    --with-gd \
    --with-gettext \
    --with-iconv-dir \
    --with-kerberos \
    --with-libdir=lib64 \
    --with-libxml-dir \
    --with-mysqli \
    --with-openssl \
    --with-pcre-regex \
    --with-pdo-mysql \
    --with-pdo-sqlite \
    --with-pear \
    --with-png-dir \
    --with-xmlrpc \
    --with-xsl \
    --with-zlib \
    --enable-fpm \
    --enable-bcmath \
    --enable-libxml \
    --enable-inline-optimization \
    --enable-gd-native-ttf \
    --enable-mbregex \
    --enable-mbstring \
    --enable-opcache \
    --enable-pcntl \
    --enable-shmop \
    --enable-soap \
    --enable-sockets \
    --enable-sysvsem \
    --enable-xml \
    --enable-zip
    由于缺少很多编译工具,安装下面工具!
    yum install libxslt-devel
    yum -y install curl-devel
    yum install openssl openssl-devel
    yum install gcc
    yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel MySQLpcre-devel
    yum install make apr* autoconf automake bzip2 bzip2-devel curl curl-devel gcc gcc-c++ gcc-g77 e2fsprogs e2fsprogs-devel zlib* zlib-devel openssl openssl-devel pcre-devel gd gd-devel kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* libvpx libjpeg libpng zlib libXpm libXpm-devel t1lib libt1-devel freetype freetype-devel libpng* libpng10 libpng10-devel libpng-devel php-common php-gd ncurses* ncurses-devel libtool* libtool-libs libxml2-devel patch glibc glibc-devel glib2 glib2-devel krb5 krb5-devel libevent libevent-devel libidn libidn-devel nss_ldap openldap openldap-clients openldap-devel openldap-servers openssl openssl-devel pspell-devel net-snmp* net-snmp-devel -y
    直接运行上面两条命令即可!此时再次运行“XXX命令”,如果出现报错,如cc、gcc、openSSL什么的没有安装,直接百度命令yum安装即可!
    切记,安装一个编译工具,执行一次“XXX命令”!直到出现 类似Thanks php的语句,并没有任何报错,说明预编译成功!
    然后编译安装

    make &&  make install
    安装过程较长,耐心等待!
    然后复制配置文件
    # cp php.ini-development /usr/local/php/lib/php.ini
    # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
    # cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
    # cp -R ./sapi/fpm/php-fpm /etc/init.d/php-fpm
    修改nginx配置文件
    vi /etc/nginx/nginx.conf  #编辑
    user   nginx  nginx;  #修改nginx运行账号为:nginx组的nginx用户
    :wq!    #保存退出
    然后修改php-fpm.conf
    vi /usr/local/php/etc/php-fpm.conf
    将文件中的user 和group均改为nginx
    :wq!    #保存退出
    然后继续修改nginx配置文件,根据以下配置,对比修改!
    # For more information on configuration, see:
    # * Official English Documentation: http://nginx.org/en/docs/
    # * Official Russian Documentation: http://nginx.org/ru/docs/user nginx nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;events {
    worker_connections 1024;
    }http {
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;
    
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
    
    server {
    listen 80;
    #listen [::]:80 default_server;
    server_name localhost,*.godforheart.tech;
    root /home/web;
    index index.html index.htm index.php;
    
    if ( $host ~ ^(java|php)\.godforheart\.tech$ )
    {
    set $erji $1;
    rewrite ^(.*)$ /$erji$1 last;
    }
    
    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
    
    location / {
    }
    location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
    error_page 404 /404.html;
    location = /40x.html {
    }
    
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
    }
    }
    保存后,需要重启php-fpm、nginx,下面的命令可以帮到你!
    二级域名无限制分级
    http://java.godforheart.tech/t.php
    http://www.godforheart.tech/
    在nginx.conf中加入下面代码。注意if和(之间必须有空格
    if ( $host ~ ^(java|php)\.godforheart\.tech$ )
    {
    set $erji $1;
    rewrite ^(.*)$ /$erji$1 last;
    }
    php加入环境变量:export PATH=$PATH:/usr/local/php/bin
    修改php-fpm配置文件
    vi /usr/local/php/etc/php-fpm.d/www.conf
    查看端口以及进程pid
    netstat -ntlp
    F41025A0-FD69-45DF-9B02-E19CB507E7A0
    重启php-fpm
    上图可知php-fpm的pid为26437
    杀死进程:kill 26437
    重启php-fpm: /usr/local/php/sbin/php-fpm
    修改nginx配置文件
    vi /etc/nginx/nginx.conf
    重启nginx,重启后进程pid会变化
    杀死进程:kill 1527
    输入:nginx
    linux查看某一进程,如PHP进程:
    ps -ef | grep java
    linux打开端口命令的使用方法。
    nc -lp 23 &(打开23端口,即telnet)
    netstat -an | grep 23 (查看是否打开23端口)
    出现权限问题,无法访问,修改权限!
    chown nginx.nginx /home/web/ -R #设置目录所有者
    chmod 700 /home/web/ -R #设置目录权限
    如果nginx无法访问,请注意清除防火墙!
    #首先在清除前要将policy INPUT改成ACCEPT,表示接受一切请求。
    #这个一定要先做,不然清空后可能会悲剧
    iptables -P INPUT ACCEPT#清空默认所有规则
    iptables -F#清空自定义的所有规则
    iptables -X#计数器置0
    iptables -Z
    清除后,重新建立防火墙:
    #允许来自于lo接口的数据包
    #如果没有此规则,你将不能通过127.0.0.1访问本地服务,例如ping 127.0.0.1
    iptables -A INPUT -i lo -j ACCEPT#ssh端口22
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT#FTP端口21
    iptables -A INPUT -p tcp --dport 21 -j ACCEPT#web服务端口80
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT#tomcat
    iptables -A INPUT -p tcp --dport xxxx -j ACCEPT
    
    #mysql
    iptables -A INPUT -p tcp --dport xxxx -j ACCEPT
    
    #允许icmp包通过,也就是允许ping
    iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
    
    #允许所有对外请求的返回包
    #本机对外请求相当于OUTPUT,对于返回数据包必须接收啊,这相当于INPUT了
    iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
    
    #如果要添加内网ip信任(接受其所有TCP请求)
    iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
    
    #过滤所有非以上规则的请求
    iptables -P INPUT DROP
    此时所有的配置均已完成,继续安装mysql,直接yum命令即可!

打赏此文

如果您觉得本站的内容对您有所帮助,您可以扫描下面的二维码小额支付请我喝杯茶,感谢!打赏记录
支付宝
微信
承诺:凡打赏捐助的朋友,留言备注自己的邮箱,在打赏捐助时间点的6个月内,本站会每周邮件推送原创专业技术博文,供大家学习和参考!

2 条评论

  1. Raul说道:

    yum install epel-release -y
    yum update
    yum install nginx php -y

  2. PHP程序员雷雪松说道:

    很详细的PHP7 + Nginx配置教程。

留下评论

All fields marked (*) are required