zoukankan      html  css  js  c++  java
  • centos 7 配置php运行环境 (新)

    Building nginx from Sources

    Centos7.2通过源码编译安装Nginx

    第一步:安装编译所需工具

    命令如下:【

    yum install gcc

    第二步:安装依赖包

    命令如下:

    yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel

    • zlib: 为nginx提供gzip模块,需要zlib库支持,传输数据打包,省流量(但消耗资源)
    • openssl: 为nginx提供ssl功能
    • pcre: 为支持地址重写rewrite功能

    第三步:下载nginx-1.12.0.tar.gz

    http://nginx.org/en/download.html

    命令如下:[

    cd /usr/local/src

    wget http://nginx.org/download/nginx-1.12.0.tar.gz

    tar -xvzf nginx-1.12.0.tar.gz

    cd nginx-1.12.0/

    ]

    第四步:创建用来运行nginx的用户及组

    groupadd www

     useradd -g www -M -s /bin/false www

    -g参数为www 用户指定了一个组。-M参数保证其不自动生成home目录。

    -s 使用-s选项改变用户的登陆shell。

    useradd --help 查看命令帮助

    【备注:userdel -r username删除系统非root用户, 例如: userdel -r raocui

    【备注: id wwww  

    //查看用户www的信息 uid=1005(www) gid=1006(www) groups=1006(www)

    【备注: 查看系统用户组cat /etc/group | grep wwww

    【备注: 查看系统用户cat /etc/passwd| grep wwww

     

    第五步:编译源代码:

    先使用./configure –help 查看编译帮助:

    命令如下:

    ./configure  

    --prefix=/usr/local/programfile/nginx 

        --sbin-path=/usr/local/programfile/nginx/sbin/nginx

        --conf-path=/usr/local/programfile/nginx/nginx.conf

        --pid-path=/usr/local/programfile/nginx/logs/nginx.pid

    --error-log-path=/usr/local/programfile/nginx/logs/error.log

    --http-log-path=/usr/local/programfile/nginx/logs/access.log

    --build=nginxBuildName  

    --user=www 

    --group=www 

        --with-http_ssl_module

    第六步:执行make make install完成安装

    编译好的nginx可以通过 /usr/local/nginx/nginx -V  (具体路径以安装的为主) 查看编译时候的参数

     

     

     

    Nginx 配置 域名

    Configure NGINX to recognize new VirtualHosts (Server Blocks)

    (https://www.godaddy.com/garage/how-to-install-and-configure-nginx-on-centos-7/)

    Configure NGINX to serve for your domain

    第一步:Create a new user for the webspace

    $ groupadd www

      $ useradd -g www -M -s /bin/false www

    第二步:Create a new directory for the site DocumentRoot

    $ sudo mkdir -p /usr/local/sites/evamtime.com/lumen_html

    第三步:Let’s create a test index.html in this directory so that we have something to look at when we test the configuration later:

    $ sudo vi /usr/local/sites/evamtime.com/lumen_html/index.html

    第四步:Now that our directory and test index is created, we must give ownership of that directory over to the user in question. So following our previous example:

    $ sudo chown -R www:www /usr/local/sites/evamtime.com/lumen_html

    第五步:We need to also set permissions for this folder so that it can be viewed by the outside world:

    $ sudo chmod 755 /usr/local/sites/evamtime.com/lumen_html

    Configure NGINX to recognize new VirtualHosts (Server Blocks)

    第一步:First, we need to set up our directories where the server blocks will live:

       $ sudo mkdir /usr/local/programfile/nginx/vhost

    第二步:Now we need to tell NGINX to use look at those directories for the server blocks. Open the global NGINX configuration file in the text editor of your choice. We will use vim: 

    $ sudo vi /usr/local/programfile/nginx/nginx.conf

    第三步:Add these lines to the end of the http {} block, then save the file:

      include /usr/local/programfile/nginx/vhost/*.conf;

    Server_names_hash_bucket_size 64;

    第四步:将所有的server{}注释掉

    Configure the actual NGINX server blocks

    第一步:Create a new file specifically for the server block for your site. The line below will do this and open it in vim.

    sudo vi  /usr/local/programfile/nginx/vhost/lumen.evamtime.com.conf

    第二步:We are going to paste a new NGINX server block in here, which should look like this:(备注:如下server{}只是demo, 而且仅用于html文件)

    server {

      listen       80;

      server_name  nginxsite.com www.nginxsite.com;

      location / {

        root   /var/www/nginxsite.com/public_html;

        index  index.html index.htm;

        try_files $uri $uri/ =404;

      }    

      error_page   500 502 503 504  /50x.html;

      location = /50x.html {

        root   html;

      }

    }

    Nginx php 配置域名访问:

    vi   /usr/local/programfile/nginx/vhost/lume.evamtime.com.conf

    server {
    listen 80;
    server_name lumen.evamtime.com;
    index index.html index.htm index.php;
    root /usr/local/sites/evamtime.com/lumen_html/public;
    #charset koi8-r;

    #access_log logs/host.access.log main;


    #error_page 404 /404.html;

    # redirect server error pages to the static page /50x.html
    #

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ .php$ {
    # proxy_pass http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #

    #
    location ~ .php$ {
    root /usr/local/sites/evamtime.com/lumen_html/public;
    fastcgi_pass unix:/var/run/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }

    location / {
    try_files $uri $uri/ /index.php?$query_string;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /.ht {
    # deny all;
    #}

    #location /nginx_status
    #{
    #stub_status on;
    #access_log off;
    #}

    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
    {
    expires 30d;
    }

    location ~ .*.(js|css)?$
    {
    #expires 12h;
    }

    location ~ /.
    {
    deny all;

     

    }

     

    access_log /usr/local/programfile/nginx/logs/lumen_access.log;
    }

    $ sudo vi /usr/local/programfile/nginx/nginx.conf

    http{}的大括号里新增:

    include vhost/*.conf;

    server_names_hash_bucket_size 64;

    ln -s /usr/local/programfile/nginx/sites-available/lumen.evamtime.conf /usr/local/programfile/nginx/sites-enabled/lumen.evamtime.conf

    【备注1使用 sudo /usr/local/programfile/nginx/sbin/nginx -t

    nginx配置文件进行检查

    【备注2保存服务器名字的hash表是由指令 server_names_hash_max_size server_names_hash_bucket_size所控制的

    【备注3sudo /usr/local/programfile/nginx/sbin/nginx -s reload

     

    Nginx+Center OS 7.2 开机启动设置

    centos 7以上是用Systemd进行系统初始化的,Systemd Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度。

     

    Systemd服务文件以.service结尾,比如现在要建立nginx为开机启动,如果用yum install命令安装的,yum命令会自动创建nginx.service文件,直接用命令systemcel enable nginx.service设置开机启动即可。

    在这里我是用源码编译安装的,所以要手动创建nginx.service服务文件。
    开机没有登陆情况下就能运行的程序,存在系统服务(system)里,即:

    /lib/systemd/system/

     

    步骤如下:

    第一步:在系统服务目录里创建nginx.service文件

    vi /lib/systemd/system/nginx.service

    内容如下:

    [Unit]

    Description=nginx

    After=network.target

    [Service]

    Type=forking

    ExecStart=/usr/local/programfile/nginx/sbin/nginx

    ExecReload=//usr/local/programfile/nginx/sbin/nginx -s reload

    ExecStop=/usr/local/programfile/nginx/sbin/nginx -s quit

    PrivateTmp=true

    [Install]

    WantedBy=multi-user.target

    [Unit]:服务的说明
    Description:描述服务
    After:描述服务类别
    [Service]服务运行参数的设置
    Type=forking是后台运行的形式
    ExecStart为服务的具体运行命令
    ExecReload为重启命令
    ExecStop为停止命令
    PrivateTmp=True表示给服务分配独立的临时空间
    注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
    [Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

    保存退出。

    第二步:设置开机启动

    systemctl enable nginx.service

    第三步:其他命令:

    启动nginx服务

    Systemctl start nginx.service

    设置开机启动

    Systemctl enable nginx.service

    停止开机自启动

    Systemctl disable nginx.service

    查看服务当前状态:

    Systemctl status nginx.service

    重新启动服务:

    Systemctl restart nginx.service

    查看所有已启动的服务:

    Systemctl list-units --type=service

    腾讯云主机需要开放安全组里的80端口

    Centos 7防火墙firewalld开放80端口

    命令如下:【

    firewall-cmd --zone=public --add-port=80/tcp --permanent

    centos7 安装 mariadb 的正确命令

    (https://www.liquidweb.com/kb/how-to-install-mysql-mariadb-on-centos-7/)

    命令: yum -y install mariadb*  

    yum -y install mariadb-server mariadb

    systemctl start/restart/stop/status  mariadb

    systemctl enable mariadb

    ps -ef | grep msyqld

    [root@localhost ~]# mysql 

    [root@localhost ~]# mysql_secure_installation  

     

     

    Centos7.2 编译安装PHP7

    http://cn2.php.net/manual/zh/install.unix.nginx.php --官网文档,源码安装PHP

    安装前 检查PHP是否已经安装:

    $  php -v

    $ find / -name “*php*”

    $ rpm -q -a | grep php

    【针对rpm查出来的包, 用命令 sudo rpm -e php71w-common删除】

    直接下载PHP7.0.2的安装包解压,编译,安装:

    下载php7,并解压

    cd /usr/src/

    wget http://cn2.php.net/distributions/php-7.0.25.tar.gz

    #解压

    tar -xzxvf php-7.0.2.tar.gz

    cd php-7.0.2

    解压完后先不要编译,请检查是否安装了gcc ,没有的话执行yum install gcc

    检查是否安装了libxml2 ,没有的话执行yum install libxml2

    检查是否安装了libxml2-devel,没有的话执行yum install libxml2-devel

    注:因为改为用nginx了,所以编译参数中的--with-apxs2=/usr/bin/apxs去掉了,如果要配置apache用,安装PHP前,请先安装apache。

    编译参数配置

    './configure' '--prefix=/usr/local/programfile/php' '--with-pdo-pgsql' '--with-zlib-dir' '--with-freetype-dir' '--enable-mbstring' '--with-libxml-dir=/usr' '--enable-soap' '--enable-calendar' '--with-curl' '--with-mcrypt' '--with-gd' '--with-pgsql' '--disable-rpath' '--enable-inline-optimization' '--with-bz2' '--with-zlib' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-pcntl' '--enable-mbregex' '--enable-exif' '--enable-bcmath' '--with-mhash' '--enable-zip' '--with-pcre-regex' '--with-pdo-mysql' '--with-mysqli' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--with-openssl' '--with-fpm-user=www-data' '--with-fpm-group=www-data' '--with-libdir=/lib/x86_64-linux-gnu/' '--enable-ftp' '--with-gettext' '--with-xmlrpc' '--with-xsl' '--enable-opcache' '--enable-fpm' '--with-iconv' '--with-xpm-dir=/usr'

    出现报错 Cannot find OpenSSL's <evp.h>

    则执行 yum install openssl openssl-devel

    出现报错 Please reinstall the libcurl distribution

    则执行 yum -y install curl-devel

    出现报错 jpeglib.h not found

    则执行 yum install libjpeg.x86_64 libpng.x86_64 freetype.x86_64 libjpeg-devel.x86_64 libpng-devel.x86_64 freetype-devel.x86_64 -y

    和执行yum install libjpeg-devel

    checking for BZip2 in default path... not found

    configure: error: Please reinstall the BZip2 distribution

    这是bzip2软件包没有安装

    解决办法

    yum install bzip2-devel.x86_64 -y

    configure: error: xpm.h not found.

    yum install libXpm-devel

    error: Unable to locate gmp.h

    Fix: yum install gmp-devel

    现象:Unable to detect ICU prefix or /usr//bin/icu-config failed. Please verify ICU install

     prefix and make sure icu-config works

    解决办法:sudo yum install -y icu.x86_64  libicu libicu_devel

    错误:mcrypt.h not found. Please reinstall libmcrypt.

    解决办法:sudo yum install php-mcrypt.x86_64  libmcrypt libmcrypt-devel.x86_64

    错误: configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path

    解决办法:sudo yum install postgresql-devel.x86_64 

    错误  configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution

    解决: yum install libxslt-devel

    配置的checking 结束后,执行:

     

    make clean && make && make install

    安装完成后,我们要把源码包中的配置文件复制到PHP安装目录下,源码包中有两个配置  php.ini-development  php.ini-production  ,看名字就知道,一个是开发环境,一个是生产环境,我们这里就复制开发环境的

     sudo cp /usr/local/src/php-7.0.25/php.ini-development /usr/local/programfile/php/php.ini

    sudo cp /usr/local/programfile/php/etc/php-fpm.conf.default  /usr/local/programfile/php/etc/php-fpm.conf

    sudo vi /usr/local/programfile/php/php.ini

    修改:cgi.fix_pathinfo=0

    另外还需要设置环境变量

    修改/etc/profile文件使其永久性生效,并对所有系统用户生效,在文件末尾加上如下两行代码

    PATH=$PATH:/usr/local/php/bin

    export PATH

    然后执行 命令 source /etc/profile

    php -v 就可以看到PHP版本信息了。

    此时还需要配置PHP-fpm:

    cp /usr/local/programfile/php/etc/php-fpm.conf.default /usr/local/programfile/php/etc/php-fpm.conf

    cp /usr/local/programfile/php/etc/php-fpm.d/www.conf.default /usr/local/programfile/php/etc/php-fpm.d/www.conf

    启动php-fpm:

     

    cp /usr/local/src/php-7.0.25/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

    chmod +x /etc/init.d/php-fpm

    /etc/init.d/php-fpm start

    重启php-fpm:

    $ /etc/init.d/php-fpm restart

    sudo /etc/init.d/php-fpm status

    报错: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)

    解决方案:

    $ netstat -ntlp | grep 9000

    $ killall php-fpm

    $ /etc/init.d/php-fpm start

     

     备注:sudo cp /usr/local/src/php-7.0.25/sapi/fpm/php-fpm /usr/local/bin

    启动php-fpm:

    $ /usr/local/bin/php-fpm

    修改 PHP-FPM listen 的方式 

    nginx与php-fpm通信的两种方式


    若想將 PHP-FPM listen 的方式,改成 unix socket,可以編輯

    sudo /usr/local/programfile/php/etc/php-fpm.d/www.conf

    listen = 127.0.0.1:9000

    改成

    listen = /var/run/php-fpm.sock

    註:不要改成 listen = /tmp/php-fcgi.sock (將 php-fcgi.sock 設定在 /tmp 底下), 因為系統產生 php-fcgi.sock 時,會放在 /tmp/systemd-private-*/tmp/php-fpm.sock 隨機私有目錄下, 除非把 /usr/lib/systemd/system/ 裡面的 PrivateTmp=true 設定改成 PrivateTmp=false, 但還是會產生其他問題,所以還是換個位置最方便 

    sudo  vi /usr/local/programfile/nginx/enable-php-lumen.conf

    fastcgi_pass unix:/var/run/php-fpm.sock;

    重启nginx php-fpm后,

    这样配置好后,就会在/var/run/php-fpm/目录下自动生成一个php5-fpm.sock文件,然后一切OK

    【备注:php-fpm.sock不存在, 怎么生成?见自己博客

    配置Nginxphp-fpmSock套接字连接时,找不到php-fpm.sock的原因

    然後重新啟動 php-fpm

    systemctl restart php-fpm

    Nginx访问PHP文件的File not found错误处理,

  • 相关阅读:
    主线程 Looper.loop() 死循环为何不会ANR
    AIDL实例
    AIDL 的工作原理
    Flutter文本框TextField
    原理
    linux安装mysql可视化界面
    MySQL Workbench gnome-keyring-daemon错误的解决
    linux安装mysql以及修改密码和重启mysql等相关命令
    linux安装vlc视频播放器
    centos调整屏幕亮度
  • 原文地址:https://www.cnblogs.com/huaerr/p/7838351.html
Copyright © 2011-2022 走看看