• centos7.4 编译安装PHP+Nginx+Mysql


    博文参考 https://blog.csdn.net/faith306/article/details/78541974#1%E5%89%8D%E8%A8%80 

         https://blog.csdn.net/z13615480737/article/details/78906598

    1. 前言:

      centos7.4

      php7.1.11+nginx1.15.2+mysql5.7

      编译安装比较复杂,但是可以自定义安装路径,可以自定义安装配置库

    2. 准备工作

      2.1 创建文件夹  

    本文中所有文件放在/usr目录下,进入usr目录中
    mkdir lnmp  // php+nginx+mysql安装目录
    mkdir lnmp/php // php安装目录
    mkdir lnmp/nginx // nginx 安装目录
    mkdir lnmp/mysql // mysql安装目录
    mkdir lnmp/logs // 日志目录
    mkdir origindatas // 安装包存放目录
    mkdir lnmp/package // package目录用来存放安装过程中需要用到的编译后的库文件

      2.2 安装make

    yum -y install gcc automake autoconf libtool make

      2.3 安装g++

    yum install gcc gcc-c++ glibc

    3. 安装Nginx

      3.1 下载并解压pcre

    /usr/origindatas目录下执行
    wget https://sourceforge.net/projects/pcre/files/pcre/8.41/pcre-8.41.tar.gz tar -zxvf pcre-8.41.tar.gz

      3.2 下载并解压zlib

    /usr/origindatas目录下执行
    wget https://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz tar –zxvf zlib-1.2.11.tar.gz

      3.3 下载并解压openssl

    // 同上
    wget https://www.openssl.org/source/openssl-1.1.0b.tar.gz tar –zxvf openssl-1.1.0b.tar.gz

      3.4 为nginx添加用户组

    // nginx的进程需要以某一个用户的权限进行运行,为了服务器安全,一般指定一个普通用户作为nginx的运行角色,这里创建一个www用户作为nginx工作进程的用户,后续安装的PHP也以www用户做为工作进程用户
    groupadd -r www useradd -r -g www www

      3.5 下载并安装nginx

    // 网站 http://nginx.org/
    // 在/usr/origindatas目录下执行
    wget http://nginx.org/download/nginx-1.12.2.tar.gz tar –zxvf nginx-1.12.2.tar.gz

      完成了以上下载解压操作,接下来编译安装

    // 进入解压后的nginx文件中,执行以下操作
    ./configure --prefix=/usr/lnmp/nginx/nginx-1.12.2 --sbin-path=/usr/lnmp/nginx/nginx-1.12.2/sbin/nginx --conf-path=/usr/lnmp/nginx/nginx-1.12.2/nginx.conf --pid-path=/usr/lnmp/nginx/nginx-1.12.2/nginx.pid --user=www --group=www --with-http_ssl_module --with-http_flv_module --with-http_mp4_module --with-http_stub_status_module --with-select_module --with-poll_module --error-log-path=/usr/lnmp/logs/nginx/error.log --http-log-path=/usr/lnmp/logs/nginx/access.log --with-pcre=/usr/origindatas/pcre-8.41 --with-zlib=/usr/origindatas/zlib-1.2.11 --with-openssl=/usr/origindatas/openssl-1.1.0b

    // ./configure执行完成后执行
    make
    make install // 安装成功后便可在/usr/lnmp/nginx目录下看见nginx

      关于./configure内容

    --prefix=/usr/lnmp/nginx/nginx-1.15.2   // --prefix nginx安装在哪个路径下
    --sbin-path=/usr/lnmp/nginx/nginx-1.15.2/sbin/nginx // 可执行文件存放路径
    --conf-path=/usr/lnmp/nginx/nginx-1.15.2/nginx.conf // nginx的主配置文件存放路径
    --pid-path=/usr/lnmp/nginx/nginx-1.15.2/nginx.pid  // nginx.pid文件的存放路径,将存储的主进程的进程号
    --user=www // 表示nginx工作进程的用户 
    --group=www //表示nginx工作进程的用户组 --with-http_ssl_module // 表示使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的 --with-http_flv_module --with-http_mp4_module --with-http_stub_status_module --with-select_module // 表示启用或禁用构建一个模块来允许服务器使用select()方法 --with-poll_module // 表示启用或禁用构建一个模块来允许服务器使用poll()方法 --error-log-path=/usr/lnmp/logs/nginx/error.log // 表示nginx的主错误、警告、和诊断文件存放路径 --http-log-path=/usr/lnmp/logs/nginx/access.log // 表示nginx的主请求的HTTP服务器的日志文件的存放路径 --with-pcre=/usr/origindatas/pcre-8.41 // 表示pcre的源码路径,因为解压后的pcre存放目录 --with-zlib=/usr/origindatas/zlib-1.2.11 // 表示zlib的源码路径,这里因为解压后的zlib存放目录 --with-openssl=/usr/origindatas/openssl-1.1.0b // 表示openssl库的源码路径

      3.6 配置nginx配置文件

      打开配置文件

    vi /usr/lnmp/nginx/nginx-1.12.2/nginx.conf

      修改成如下

    #user  nobody;
    worker_processes  1;
    
    error_log  /usr/lnmp/logs/nginx/error.log;  // 错误日志路径
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    pid        /usr/lnmp/logs/nginx/nginx.pid; // pid文件路径
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        #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  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        gzip  on;
    
        include /usr/lnmp/nginx/nginx-1.12.2/conf/vhosts/*.conf;   // 引入配置了域名信息的文件注意路径
    }

      添加配置文件最后一行引入的域名文件

    server {
        listen       80;
        server_name  www.itryfirst.top;
        root /usr/webapps;
        index index.php index.html index.htm;
    
    
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    
        location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires 30d;
        }
        location ~ .*.(js|css)?$
        {
            expires 1h;
        }

      #使其可以解析php文件
      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;
        } }

      完成后启动nginx

    /usr/lnmp/nginx/nginx-1.12.2/sbin/nginx

      如果启动报错如下

     nginxnginx: [emerg] unknown directive "  " in /usr/lnmp/nginx/nginx-1.15.2/conf/vhosts/try.conf:22

      将这段代码删除,再从编辑器中复制进来,在保存重启即可!

      查看nginx进程是否启动成功

    ps aux | grep nginx

      3.7 加入系统环境变量

    vi /etc/profile
    // 最后一行加入
    export PATH=$PATH:/usr/lnmp/nginx/nginx-1.12.2/sbin

      保存修改后,使用source命令重新加载配置文件

    source /etc/profile

      查看系统环境变量

    echo $PATH

      3.8 加入系统服务

      执行命令打开文件

    vim /etc/init.d/nginx

      添加如下内容

    #!/bin/bash
    # chkconfig: - 85 15
    PATH=/usr/lnmp/nginx/nginx-1.12.2  // nginx安装路径
    DESC="nginx daemon"
    NAME=nginx
    DAEMON=$PATH/sbin/$NAME
    CONFIGFILE=$PATH/$NAME.conf
    PIDFILE=$PATH/logs/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
    set -e
    [ -x "$DAEMON" ] || exit 0
    do_start() {
    $DAEMON -c $CONFIGFILE || echo -n "nginx already running"
    }
    do_stop() {
    $DAEMON -s stop || echo -n "nginx not running"
    }
    do_reload() {
    $DAEMON -s reload || echo -n "nginx can't reload"
    }
    case "$1" in
    start)
    echo -n "Starting $DESC: $NAME"
    do_start
    echo "."
    ;;
    stop)
    echo -n "Stopping $DESC: $NAME"
    do_stop
    echo "."
    ;;
    reload|graceful)
    echo -n "Reloading $DESC configuration..."
    do_reload
    echo "."
    ;;
    restart)
    echo -n "Restarting $DESC: $NAME"
    do_stop
    do_start
    echo "."
    ;;
    *)
    echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" &gt &amp 2
    exit 3
    ;;
    esac
    exit 0

      保存完成后,赋予权限

    chmod +x /etc/init.d/nginx

      启动nginx

    service nginx start

      3.9 设置nginx开机自启

    chkconfig --add nginx
    chkconfig nginx on

     4. 安装PHP

      4.1 通过yum安装php需要的常用库

    yum -y install libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel

      4.2 下载并安装php

    // 网站 http://www.php.net/downloads.php
    // 进入/usr/origindatas目录下执行
    wget http://cn2.php.net/distributions/php-7.1.11.tar.gz tar –zxvf php-7.1.11.tar.gz

      完成了下载和解压,接下来进行安装操作

    // 进入加压的目录下,执行语句,注意修改前两个参数的路径
    ./configure --prefix=/usr/lnmp/php/php-7.1.11 --with-config-file-path=/usr/lnmp/php/php-7.1.11/etc --enable-fpm --with-mcrypt --enable-mbstring --enable-pdo --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysqli --with-gd --with-jpeg-dir --with-freetype-dir --enable-calendar
    // 继续执行
    make
    make install

      4.3 修改配置文件

      将官方提供的配置模板拷贝到配置参数(上面configure中第二个路径)中所指定的目录中

    // php.ini文件根据自己的需要进行修改
    cp /usr/origindatas/php-7.1.11/php.ini-production /usr/lnmp/php/php-7.1.11/etc/php.ini

      4.4 设置php-fpm配置文件

    // 依次执行下面语句
    cd /usr/lnmp/php/php-7.1.11/etc cp php-fpm.conf.default php-fpm.conf cd /usr/lnmp/php/php-7.1.11/etc/php-fpm.d cp www.conf.default www.conf

      修改php-fpm.conf文件(如果下面启动失败,就不要这个)

    user = www
    group = www
    listen = 127.0.0.1:9000
    pm.max_children = 100
    pm.start_servers = 20
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35

      启动php-fpm

    /usr/lnmp/php/php-7.1.11/sbin/php-fpm

      查看是否启动成功

    ps aux | grep php-fpm

      4.5 加入系统环境变量

    vi /etc/profile
    // 最后一行加入
    export PATH=$PATH:/usr/lnmp/php/php-7.1.11/bin // 注意此处路径修改
    // 保存退出执行
    source /etc/profile // 重新加载配置文件

      4.6 加入系统服务

    // 使用vi命令在/etc/init.d/目录下创建一个php-fpm文件
    vi /etc/init.d/php-fpm

      内容如下(注意路径修改)

    #!/bin/bash
    # php-fpm startup script for the php-fpm 
    # php-fpm version:7.1.11
    # chkconfig: - 85 15
    # description: php-fpm
    # processname: php-fpm
    # pidfile: /usr/lnmp/php/php-7.1.11/var/run/php-fpm.pid
    # config: /usr/lnmp/php/php-7.1.11/etc/php-fpm.conf
    
    php_command=/usr/lnmp/php/php-7.1.11/sbin/php-fpm
    php_config=/usr/lnmp/php/php-7.1.11/etc/php-fpm.conf
    php_pid=/usr/lnmp/php/php-7.1.11/var/run/php-fpm.pid
    RETVAL=0
    prog="php-fpm"
    
    #start function
    php_fpm_start() {
        /usr/lnmp/php/php-7.1.11/sbin/php-fpm
    }
    
    start(){
        if [ -e $php_pid  ]
        then
        echo "php-fpm already start..."
        exit 1
        fi
        php_fpm_start
    }
    
    stop(){
        if [ -e $php_pid ]
        then
        parent_pid=`cat $php_pid`
        all_pid=`ps -ef | grep php-fpm | awk '{if('$parent_pid' == $3){print $2}}'`
        for pid in $all_pid
        do
                kill $pid
            done
            kill $parent_pid
        fi
        exit 1
    }
    
    restart(){
        stop
        start
    }
    
    # See how we were called.
    case "$1" in
    start)
            start
            ;;
    stop)
            stop
            ;;
    restart)
            stop
            start
            ;;
    status)
            status $prog
            RETVAL=$?
            ;;
    *)
            echo $"Usage: $prog {start|stop|restart|status}"
            exit 1
    esac
    exit $RETVAL

      设置开机自启

    chkconfig --add php-fpm
    chkconfig php-fpm on

      此时php还未安装openssl扩展,安装方法:https://www.cnblogs.com/cyclzdblog/p/9424686.html

    5. mysql安装配置(使用yum安装)

      官网教程:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

      5.1 安装mysql的repo源

    进入/usr/origindatas目录下依次执行下面代码
    wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
    rpm -ivh mysql57-community-release-el7-8.noarch.rpm 
    yum -y install mysql-server 

      这样装环境变量配置都不用你管,装上直接启动就行。安装路径是默认的。

      安装完成后

      默认配置文件路径: 
      配置文件:/etc/my.cnf 
      日志文件:/var/log/mysqld.log 
      服务启动脚本:/usr/lib/systemd/system/mysqld.service 
      socket文件:/var/run/mysqld/mysqld.pid

      5.2 配置my.cnf文件

    vi /etc/my.cnf // 打开文件将下面内容复制进去,无需修改
    [mysqld]
    #
    # Remove leading # and set to the amount of RAM for the most important data
    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    # innodb_buffer_pool_size = 128M
    #
    # Remove leading # to turn on a very important data integrity option: logging
    # changes to the binary log between backups.
    # log_bin
    #
    # Remove leading # to set options mainly useful for reporting servers.
    # The server defaults are faster for transactions and fast SELECTs.
    # Adjust sizes as needed, experiment to find the optimal values.
    # join_buffer_size = 128M
    # sort_buffer_size = 2M
    # read_rnd_buffer_size = 2M
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    server_id = 1
    expire_logs_days = 3
     
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
     
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid

      配置完成后启动mysql

    service mysqld restart

      5.3 连接mysql,修改初始密码等

      安装完成后会生成一个复杂的初始密码,获取方式

    grep "password" /var/log/mysqld.log

      使用获取的密码连接mysql即可成功

      修改密码

    alter user 'root'@'localhost' identified by '123456';  

      如果报错如下

    ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

      先执行

    // 设置安全级别
    set
    global validate_password_policy=0;
    // 设置密码长度
    set global validate_password_length=6;

      然后在执行上面的修改密码的语句即可成功

      最后刷新权限

    flush privileges;

      5.4 如果发现找不到密码,解决如下

    vi /etc/my.cnf

      打开文件最末尾加上下面语句,保存退出

    skip-grant-tables   // 取消密码登陆

      重新启动mysql后就可以连接上,记住不需要加-p

    use mysql 
    update user set password=password("123456") where user="root";
    // mysql 5.7的数据库没有了password字段 用的是authentication_string字段
    update mysql.user set authentication_string=password('123456') where user='root' ;
    flush privileges;

      修改密码之后将配置文件改回来即可

      5.4 开启mysql远程连接访问权限

    mysql -u root -p     //输入密码进入mysql控制台
    mysql>use mysql;
    mysql>update user set host = '%' where user = 'root';    //这个命令执行错误时可略过 
    mysql>flush privileges;
    mysql>select host, user from user; //检查‘%’ 是否插入到数据库中
    mysql>quit
  • 相关阅读:
    apt 安装 Oracle Java JDK
    apt 安装 tomcat
    apt安装mysql
    yum 常用命令
    Ubuntu apt-get 更换源
    没有解决不了的bug,静下心一步步排查,早上一个小时就找出问题了
    关于看书学习的一点感悟
    利用暗时间看好了六大原则,下面开始练习23种设计模式
    养成看书思考的习惯
    凡事预则立,有时候还是得不断的去巩固一些基础知识的
  • 原文地址:https://www.cnblogs.com/cyclzdblog/p/9408693.html
Copyright © 2020-2023  润新知