美文网首页
12.CentOS7.5源码编译搭建LNMP架构+Swoole+

12.CentOS7.5源码编译搭建LNMP架构+Swoole+

作者: 一枼落知天下 | 来源:发表于2019-06-26 18:51 被阅读0次

    部署 LNMP 架构需要安装依赖包

    [root@ZhouShuai ~]# yum -y install make gcc gcc-c++ flex bison file libtool libtool-libs autoconf kernel-devel libjpeg libjpeg-devel libpng libpng-devel gd freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libevent ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel gettext gettext-devel ncurses-devel gmp-devel unzip libcap lsof
    

    安装 epel 扩展 yum 源

    [root@ZhouShuai ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    [root@ZhouShuai ~]# yum clean all
    [root@ZhouShuai ~]# yum list
    

    一、安装并配置Nginx

    所需依赖包

    [root@ZhouShuai ~]# yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre*
    zlib:Nginx 提供 gzip 模块,需要 zlib 的支持
    openssl:Nginx 提供 SSL 的功能
    

    另外:需要在安装 Nginx 需要用到 pcre 程序,因此需要下载 pcre 程序包

    ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz

    注:解压即可,不用安装,Nginx 安装时指定 pcre 的解压路径即可

    [root@ZhouShuai ~]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz
    [root@ZhouShuai ~]# tar zxvf pcre-8.41.tar.gz -C /usr/local/src/
    [root@ZhouShuai ~]# ls /usr/local/src/
    pcre-8.41
    [root@ZhouShuai ~]# 
    

    创建 Nginx 运行用户

    [root@ZhouShuai ~]# useradd -M -s /sbin/nologin nginx
    [root@ZhouShuai ~]#  tail -1 /etc/passwd
    nginx:x:1001:1001::/home/nginx:/sbin/nologin
    [root@ZhouShuai ~]# 
    

    下载安装Nginx

    [root@ZhouShuai ~]# wget http://nginx.org/download/nginx-1.16.0.tar.gz
    [root@ZhouShuai ~]# tar zxf nginx-1.16.0.tar.gz -C /usr/local/src
    [root@ZhouShuai ~]# cd  /usr/local/src/
    [root@ZhouShuai src]# ll
    total 12
    drwxr-xr-x 8 nginx nginx  158 Apr 23 21:13 nginx-1.16.0
    drwxr-xr-x 7  1169  1169 8192 Jul  5  2017 pcre-8.41
    [root@ZhouShuai src]# cd /usr/local/src/nginx-1.16.0/
    [root@ZhouShuai nginx-1.16.0]# 
    [root@ZhouShuai nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.41 --user=nginx --group=nginx
    [root@ZhouShuai nginx-1.16.0]# make -j 4 && make install
    [root@ZhouShuai nginx-1.16.0]# echo $?
    
    [root@ZhouShuai nginx-1.16.0]# ll /usr/local/nginx/
    total 0
    drwxr-xr-x 2 root root 333 Jun 26 13:21 conf
    drwxr-xr-x 2 root root  40 Jun 26 13:21 html
    drwxr-xr-x 2 root root   6 Jun 26 13:21 logs
    drwxr-xr-x 2 root root  19 Jun 26 13:21 sbin
    [root@ZhouShuai nginx-1.16.0]# 
    

    配置 Nginx 支持 php 文件

    [root@ZhouShuai nginx-1.16.0]# cp /usr/local/nginx/conf/nginx.conf{,.bak}
    [root@ZhouShuai nginx-1.16.0]# ls /usr/local/nginx/conf/
    fastcgi.conf          fastcgi_params.default  mime.types          nginx.conf.bak      scgi_params.default   win-utf
    fastcgi.conf.default  koi-utf                 mime.types.default  nginx.conf.default  uwsgi_params
    fastcgi_params        koi-win                 nginx.conf          scgi_params         uwsgi_params.default
    [root@ZhouShuai nginx-1.16.0]# vim /usr/local/nginx/conf/nginx.conf
    

    修改用户为 nginx:

    启用 PHP 支持

            location ~ \.php$ {
                root           html;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
            #   fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
    
    

    启动 Nginx 服务

    [root@ZhouShuai nginx-1.16.0]#  /usr/local/nginx/sbin/nginx
    

    编辑配置环境变量,让系统读到 Nginx 路径

    [root@ZhouShuai nginx-1.16.0]# vim /etc/profile.d/nginx.sh
    export PATH=usr/local/nginx/sbin/nginx:$PATH
    
    [root@ZhouShuai nginx-1.16.0]# . /etc/profile.d/nginx.sh
    [root@ZhouShuai ~]# nginx
    ngettext  nginx     
    

    使用软连接也可以

    [root@ZhouShuai html]#  ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
    [root@ZhouShuai html]# nginx -s reload
    

    生成服务启动脚本

    [root@ZhouShuai ~]# vim /etc/init.d/nginx
    #!/bin/bash
    # chkconfig: - 99 2
    # description: Nginx Service Control Script
    PROG="/usr/local/nginx/sbin/nginx"
    PIDF="/usr/local/nginx/logs/nginx.pid"
    case "$1" in
            start)
            $PROG
            ;;
            stop)
            kill -3 $(cat $PIDF)
            ;;
            restart)
            $0 stop &> /dev/null
            if [ $? -ne 0 ] ; then continue ; fi
            $0 start
            ;;
            reload)
            kill -1 $(cat $PIDF)
            ;;
            *)
            echo "Userage: $0 { start | stop | restart | reload }"
            exit 1
    esac
    exit 0
    
    >####配置服务开机自动启动
    [root@ZhouShuai ~]# chmod +x /etc/init.d/nginx
    [root@ZhouShuai ~]# chkconfig --add nginx
    [root@ZhouShuai ~]# chkconfig nginx on
    [root@ZhouShuai ~]# 
    
    

    先关闭iptables 在浏览器访问验证:

    Nginx维护 相关命令

    [root@ZhouShuai ~]# nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    [root@ZhouShuai ~]# nginx -v
    nginx version: nginx/1.16.0
    [root@ZhouShuai ~]# nginx -V
    nginx version: nginx/1.16.0
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
    built with OpenSSL 1.0.2k-fips  26 Jan 2017
    TLS SNI support enabled
    configure arguments: --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.41 --user=nginx --group=nginx
    [root@ZhouShuai ~]# nginx -s reload
    [root@ZhouShuai ~]# 
    
    

    二、安装并配置 MySQL

    1. MySQL从5.7版本之后,boost是必须的,建议把系统自带的boost库卸载,源码编译安装高版本

    [root@ZhouShuai ~]# yum -y remove boost-*
    

    卸载系统自带的mysql

    [root@ZhouShuai ~]# yum -y remove mysql mariadb-*
    

    2. 安装依赖包

    [root@ZhouShuai ~]# yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel
    

    3. 添加用户和组

    [root@ZhouShuai ~]#  groupadd mysql
    [root@ZhouShuai ~]# useradd -M -s /sbin/nologin -r -g mysql mysql
    [root@ZhouShuai ~]# 
    

    mysql-5.7.26程序包下载

    [root@ZhouShuai ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26.tar.gz
    [root@ZhouShuai ~]# wget http://liquidtelecom.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
    #带boost的mysql源码
    [root@ZhouShuai ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.26.tar.gz
    [root@ZhouShuai ~]# 
    

    4. 解压源码包

    [root@ZhouShuai ~]#  tar xf mysql-5.7.26.tar.gz -C /usr/local/src/
    [root@ZhouShuai ~]# tar xf boost_1_59_0.tar.gz -C /usr/local/src/
    [root@ZhouShuai ~]# cd /usr/local/src/mysql-5.7.26/
    

    5. 规划安装目录:

    安装目录: /var/lib/mysql
    数据目录: /var/lib/mysql/data

    [root@ZhouShuai mysql-5.7.26]# mkdir -p /var/lib/mysql/data
    [root@ZhouShuai mysql-5.7.26]# chown -R mysql:mysql /var/lib/mysql
    [root@ZhouShuai mysql-5.7.26]# 
    

    6. 编译安装:

    [root@ZhouShuai mysql-5.7.26]# cmake -DCMAKE_INSTALL_PREFIX=/var/lib/mysql  -DMYSQL_DATADIR=/var/lib/mysql/data  -DSYSCONFDIR=/etc  -DWITH_MYISAM_STORAGE_ENGINE=1  -DWITH_INNOBASE_STORAGE_ENGINE=1  -DWITH_MEMORY_STORAGE_ENGINE=1  -DWITH_READLINE=1  -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock  -DMYSQL_TCP_PORT=3306  -DENABLED_LOCAL_INFILE=1  -DWITH_PARTITION_STORAGE_ENGINE=1  -DEXTRA_CHARSETS=all  -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci  -DDOWNLOAD_BOOST=1  -DWITH_BOOST=/usr/local/src/boost_1_59_0
    
    

    编译参数的帮助寻找方法(官方):
    http://www.mysql.com → Documentation → MySQL Server MySQL栏的 Reference Manual (选择对应的版本5.7(MySQL 5.7 Reference Manual))→ Installation and Upgrades MySQL → Installing MySQL from Source → MySQL Source-Configuration Options。
    **最终的URL是 https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html **

    7. 编译

    mysql-5.7.19编译时会占用大量的系统资源,建议使用多个核心同时进行编译,否则可能会编译失败

    [root@ZhouShuai mysql-5.7.26]# make -j 4
    make -j 4   #注:-j 用来指定CPU核心数,可加快编译速度。 加 -j 4我用4核心来编译的,可以提高编译速度;当然你要确定CPU多少核心
    [root@ZhouShuai mysql-5.7.26]# make
    [root@ZhouShuai mysql-5.7.26]# echo $?
    0
    
    

    8. 安装

    [root@ZhouShuai mysql-5.7.26]# make install
    [root@ZhouShuai mysql-5.7.26]# echo $?
    0
    

    9. 编辑配置文件

    [root@ZhouShuai ~]# vim /etc/my.cnf
    [mysqld]
    basedir=/var/lib/mysql
    datadir=/var/lib/mysql/data
    port=3306
    socket=/var/lib/mysql/mysql.sock
    character-set-server=utf8
    log-error=/var/log/mysqld.log
    pid-file=/tmp/mysqld.pid
    [mysql]
    socket=/var/lib/mysql/mysql.sock
    [client]
    socket=/var/lib/mysql/mysql.sock
    

    10. 添加path路径,让系统能读到mysql的命令:

    [root@ZhouShuai ~]# vim /etc/profile.d/mysql.sh
    export PATH=/var/lib/mysql/bin:$PATH
    

    11. 使修改生效

    [root@ZhouShuai ~]# . /etc/profile.d/mysql.sh
    [root@ZhouShuai ~]# source /etc/profile.d/mysql.sh
    

    12. 生成服务启动脚本

    [root@ZhouShuai ~]# cp /var/lib/mysql/support-files/mysql.server /etc/init.d/mysqld
    [root@ZhouShuai ~]# chmod +x /etc/init.d/mysqld
    [root@ZhouShuai ~]# chkconfig --add mysqld
    [root@ZhouShuai ~]# chkconfig  mysqld  on
    

    13. 初始化数据库

    [root@ZhouShuai ~]# cd /var/lib/mysql/data/
    [root@ZhouShuai data]# rm -rf ./*
    [root@ZhouShuai data]# /var/lib/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/var/lib/mysql --datadir=/var/lib/mysql/data
    [root@ZhouShuai data]# /etc/init.d/mysqld start
    Starting MySQL. SUCCESS!
    [root@ZhouShuai data]# mysql
    mysql> set password  for  root@localhost = password('123456');
    Query OK, 0 rows affected, 1 warning (0.01 sec)
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    mysql> 
    

    14.安全初始化:

    [root@ZhouShuai data]# mysql_secure_installation
    

    15.增加一个新用户用于navicat远程连接

    [root@ZhouShuai data]# mysql -uroot -p123456
    mysql> set global validate_password_policy=0;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> set global validate_password_length=1;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'zhoushuai'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION ;
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> 
    
    

    三、安装并配置PHP

    1. 安装依赖关系

    2. 解决依赖:yum安装解决

    [root@ZhouShuai ~]# yum -y install php-mcrypt  libmcrypt  libmcrypt-devel php-pear libxml2 libxml2-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype-devel
    [root@ZhouShuai ~]#yum -y install lrzsz
    

    1.下载 官网地址:http://php.net/

    [root@ZhouShuai ~]# wget https://www.php.net/distributions/php-7.3.6.tar.gz
    [root@ZhouShuai ~]# tar xf php-7.3.6.tar.gz -C /usr/local/src
    [root@ZhouShuai ~]# cd /usr/local/src/php-7.3.6/
    
    

    2. php7.3-编译安装过程中碰到的3个错误

    configure: error: Please reinstall the libzip distribution

    #解决方法:
    wget https://nih.at/libzip/libzip-1.2.0.tar.gz
    tar -zxvf libzip-1.2.0.tar.gz
    cd libzip-1.2.0
    ./configure
    make && make install
    

    configure: error: off_t undefined; check your library configuration

    #解决方法
    vim /etc/ld.so.conf 
    #添加如下几行
    /usr/local/lib64
    /usr/local/lib
    /usr/lib
    /usr/lib64 
    #保存退出
    :wq
    ldconfig -v # 使之生效
    或者
    #解决方法
    # 添加搜索路径到配置文件
    echo '/usr/local/lib64
    /usr/local/lib
    /usr/lib
    /usr/lib64'>>/etc/ld.so.conf
    # 更新配置
    ldconfig -v
    
    

    /usr/local/include/zip.h:59:21: fatal error: zipconf.h: No such file or dire

    #解决方法:手动复制过去
    cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h
    

    4. 编译并安装

    [root@ZhouShuai php-7.3.6]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/ --enable-fpm  --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-zts
    
    [root@ZhouShuai php-7.3.6]# make -j 4 
    [root@ZhouShuai php-7.3.6]# make install
    
    

    配置php和php-fpm

    [root@ZhouShuai php-7.3.6]# cp /usr/local/src/php-7.3.6/php.ini-production /usr/local/php/php.ini #生成php自身配置文件
    [root@ZhouShuai php-7.3.6]# php -i | grep php.ini
    Configuration File (php.ini) Path => /usr/local/php/
    Loaded Configuration File => /usr/local/php/php.ini
    [root@ZhouShuai php-7.3.6]# 
    
    [root@ZhouShuai php-7.3.6]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.conf #生成php-fpm配置文件
    [root@ZhouShuai php-7.3.6]# 
    PHP-FPM启动脚本
    修改 /usr/local/php/etc/php-fpm.conf 运行用户和组改为nginx
    [root@ZhouShuai php-7.3.6]# vim /usr/local/php/etc/php-fpm.conf
     user = nginx
     group = nginx
    
    [root@ZhouShuai php-7.3.6]# cp /usr/local/src/php-7.3.6/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm  #生成php-fpm启动脚本
    [root@ZhouShuai php-7.3.6]# chmod +x /etc/init.d/php-fpm
    [root@ZhouShuai php-7.3.6]# chkconfig php-fpm on
    [root@ZhouShuai php-7.3.6]# /etc/init.d/php-fpm start
    Starting php-fpm  done
    
    #检测PHP-FPM启动成功与否
    [root@ZhouShuai php-7.3.6]# netstat -antup | grep php-fpm
    tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      130020/php-fpm: mas 
    [root@ZhouShuai php-7.3.6]# echo "<?php phpinfo(); ?>" > /usr/local/nginx/html/index.php
    [root@ZhouShuai php-7.3.6]# 
    [root@ZhouShuai ~]# ln -s /usr/local/php/bin/php /usr/local/bin/php
    
    安装完成

    三、redis模块安装http://pecl.php.net/package/redis

    [root@ZhouShuai ~]# wget http://pecl.php.net/get/redis-4.3.0.tgz
    [root@ZhouShuai ~]#  tar xf redis-4.3.0.tgz -C /usr/local/src
    [root@ZhouShuai ~]# cd /usr/local/src/redis-4.3.0/
    [root@ZhouShuai redis-4.3.0]# 
    [root@ZhouShuai redis-4.3.0]# /usr/local/php/bin/phpize 
    Configuring for:
    PHP Api Version:         20180731
    Zend Module Api No:      20180731
    Zend Extension Api No:   320180731
    [root@ZhouShuai redis-4.3.0]# ./configure --with-php-config=/usr/local/php/bin/php-config
    Build complete.
    Don't forget to run 'make test'.
    
    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20180731/
    [root@ZhouShuai redis-4.3.0]# php -i | grep php.ini
    Configuration File (php.ini) Path => /usr/local/php/
    Loaded Configuration File => /usr/local/php/php.ini
    [root@ZhouShuai redis-4.3.0]# 
    [root@ZhouShuai redis-4.3.0]# vim /usr/local/php/php.ini
    extension=redis.so
    
    [root@ZhouShuai redis-4.3.0]# /etc/init.d/php-fpm restart
    Gracefully shutting down php-fpm . done
    Starting php-fpm  done
    [root@ZhouShuai redis-4.3.0]# 
    
    

    四、 memcached 模块安装http://pecl.php.net/package/memcached

    [root@ZhouShuai ~]# wget http://pecl.php.net/get/memcached-3.1.3.tgz
    [root@ZhouShuai ~]# tar zxvf memcached-3.1.3.tgz -C /usr/local/src
    [root@ZhouShuai ~]# cd /usr/local/src/memcached-3.1.3/
    [root@ZhouShuai memcached-3.1.3]# /usr/local/php/bin/phpize
    Configuring for:
    PHP Api Version:         20180731
    Zend Module Api No:      20180731
    Zend Extension Api No:   320180731
    [root@ZhouShuai memcached-3.1.3]# 
    [root@ZhouShuai memcached-3.1.3]# yum -y install libmemcached libmemcached-devel
    [root@ZhouShuai memcached-3.1.3]#  ./configure --with-php-config=/usr/local/php/bin/php-config
    [root@ZhouShuai memcached-3.1.3]# make && make install
    Build complete.
    Don't forget to run 'make test'.
    
    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20180731/
    [root@ZhouShuai memcached-3.1.3]# echo $?
    0
    [root@ZhouShuai redis-4.3.0]# vim /usr/local/php/php.ini
    extension=memcached.so
    [root@ZhouShuai memcached-3.1.3]# /etc/init.d/php-fpm restart
    Gracefully shutting down php-fpm . done
    Starting php-fpm  done
    [root@ZhouShuai memcached-3.1.3]# 
    

    五、Swoole模块安装https://www.swoole.com/

    [root@ZhouShuai ~]# wget https://github.com/swoole/swoole-src/archive/v4.3.5.tar.gz
    [root@ZhouShuai ~]# tar zxvf v4.3.5.tar.gz -C /usr/local/src
    [root@ZhouShuai ~]# cd /usr/local/src/swoole-src-4.3.5/
    [root@ZhouShuai swoole-src-4.3.5]# yum install -y autoconf
    [root@ZhouShuai swoole-src-4.3.5]# /usr/local/php/bin/phpize 
    Configuring for:
    PHP Api Version:         20180731
    Zend Module Api No:      20180731
    Zend Extension Api No:   320180731
    [root@ZhouShuai swoole-src-4.3.5]# 
    [root@ZhouShuai swoole-src-4.3.5]# ./configure --with-php-config=/usr/local/php/bin/php-config
    [root@ZhouShuai swoole-src-4.3.5]#  make && make install
    Build complete.
    Don't forget to run 'make test'.
    
    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20180731/
    Installing header files:          /usr/local/php/include/php/
    [root@ZhouShuai swoole-src-4.3.5]# ls /usr/local/php/lib/php/extensions/no-debug-zts-20180731/
    memcached.so  opcache.a  opcache.so  redis.so  swoole.so
    [root@ZhouShuai swoole-src-4.3.5]# 
    [root@ZhouShuai swoole-src-4.3.5]# vim /usr/local/php/php.ini
    extension=swoole
    [root@ZhouShuai swoole-src-4.3.5]# /etc/init.d/php-fpm restart
    Gracefully shutting down php-fpm . done
    Starting php-fpm  done
    [root@ZhouShuai swoole-src-4.3.5]# 
    
    [root@ZhouShuai swoole-src-4.3.5]# php --ri swoole
    
    swoole
    
    Swoole => enabled
    Author => Swoole Team <team@swoole.com>
    Version => 4.3.5
    Built => Jun 26 2019 18:46:30
    coroutine => enabled
    epoll => enabled
    eventfd => enabled
    signalfd => enabled
    cpu_affinity => enabled
    spinlock => enabled
    rwlock => enabled
    http2 => enabled
    pcre => enabled
    zlib => enabled
    mutex_timedlock => enabled
    pthread_barrier => enabled
    futex => enabled
    async_redis => enabled
    
    Directive => Local Value => Master Value
    swoole.enable_coroutine => On => On
    swoole.display_errors => On => On
    swoole.use_shortname => On => On
    swoole.unixsock_buffer_size => 8388608 => 8388608
    [root@ZhouShuai swoole-src-4.3.5]# 
    
    

    六、Composer安装

    阿里云 Composer 全量镜像

    [root@ZhouShuai ~]# curl -sS https://getcomposer.org/installer | php
    [root@ZhouShuai ~]# mv composer.phar /usr/local/bin/composer
    [root@ZhouShuai ~]# 
    [root@ZhouShuai ~]# composer config -g repo.packagist composer https://packagist.phpcomposer.com
    [root@ZhouShuai ~]# composer config -g repo.packagist composer https://packagist.laravel-china.org
    

    七、 Yaconf – 一个高性能的配置管理扩展

    [root@ZhouShuai ~]# git clone https://github.com/laruence/yaconf.git
    [root@ZhouShuai ~]# cd yaconf/
    [root@ZhouShuai yaconf]# /usr/local/php/bin/phpize
    Configuring for:
    PHP Api Version:         20180731
    Zend Module Api No:      20180731
    Zend Extension Api No:   320180731
    [root@ZhouShuai yaconf]# 
    [root@ZhouShuai yaconf]#  ./configure --with-php-config=/usr/local/php/bin/php-config
    [root@ZhouShuai yaconf]# make 
    Build complete.
    Don't forget to run 'make test'.
    [root@ZhouShuai yaconf]# make install
    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20180731/
    Installing header files:          /usr/local/php/include/php/
    [root@ZhouShuai yaconf]# ls  /usr/local/php/lib/php/extensions/no-debug-zts-20180731/
    memcached.so  opcache.a  opcache.so  redis.so  swoole.so  yaconf.so
    [root@ZhouShuai yaconf]# vim /usr/local/php/php.ini
    [Yaconf]
    extension=yaconf.so 
    yaconf.directory=/home/swooleApp/ini
    yaconf.check_delay=100 
    [root@ZhouShuai yaconf]# /etc/init.d/php-fpm restart
    Gracefully shutting down php-fpm . done
    Starting php-fpm  done
    [root@ZhouShuai yaconf]# 
    

    Kafka[高吞吐量的分布式发布订阅消息系统]

    https://github.com/edenhill/librdkafka
    https://github.com/arnaud-lb/php-rdkafka
    https://arnaud.le-blanc.net/php-rdkafka/phpdoc/rdkafka.installation.manual.html

    #一、安装librdkafka
    [root@ZhouShuai ~]# cd /usr/local/src/
    [root@ZhouShuai src]# git clone https://github.com/edenhill/librdkafka.git
    [root@ZhouShuai src]# cd librdkafka/
    [root@ZhouShuai librdkafka]# ./configure
    [root@ZhouShuai librdkafka]# make
    [root@ZhouShuai librdkafka]# make install
    [root@ZhouShuai librdkafka]# ln -s /usr/local/lib/librdkafka.so.1 /usr/lib/
    
    #二、安装php-rdkafka
    [root@ZhouShuai ~]# cd /usr/local/src/
    [root@ZhouShuai src]# git clone https://github.com/arnaud-lb/php-rdkafka.git
    [root@ZhouShuai src]# cd php-rdkafka
    [root@ZhouShuai php-rdkafka]# /usr/local/php/bin/phpize 
    Configuring for:
    PHP Api Version:         20180731
    Zend Module Api No:      20180731
    Zend Extension Api No:   320180731
    [root@ZhouShuai php-rdkafka]# ./configure --with-php-config=/usr/local/php/bin/php-config
    [root@ZhouShuai php-rdkafka]# make all -j 5
    [root@ZhouShuai php-rdkafka]# make install
    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20180731/
    [root@ZhouShuai php-rdkafka]# ls /usr/local/php/lib/php/extensions/no-debug-zts-20180731/
    ldap.so  memcached.so  opcache.a  opcache.so  rdkafka.so  redis.so  swoole.so  yaconf.so
    [root@ZhouShuai php-rdkafka]# 
    
    #三、修改php.ini
    [root@ZhouShuai php-rdkafka]# vim /usr/local/php/php.ini
    extension=rdkafka.so
    [root@ZhouShuai php-rdkafka]# /usr/local/php/bin/php  -m | grep rdk
    rdkafka
    
    #四、重启php-fpm
    [root@ZhouShuai php-rdkafka]# /etc/init.d/php-fpm restart
    Gracefully shutting down php-fpm . done
    Starting php-fpm  done
    [root@ZhouShuai php-rdkafka]# 
    

    Yar 是一个轻量级, 高效的RPC框架

    它提供了一种简单方法来让PHP项目之间可以互相远程调用对方的本地方法. 并且Yar也提供了并行调用的能力. 可以支持同时调用多个远程服务的方法.

    
    

    ZooKeeper

    Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination.

    
    

    Yaml

    YAML-1.1 parser and emitter

    相关文章

      网友评论

          本文标题:12.CentOS7.5源码编译搭建LNMP架构+Swoole+

          本文链接:https://www.haomeiwen.com/subject/xzozqctx.html