CentOS7.5利用OneinStack搭建環(huán)境(包括PostgreSQL、Kafka、RabbitMQ等)

1、準(zhǔn)備

# 安裝之前先檢查一下系統(tǒng)是否有默認(rèn)安裝的`apache`或者`php`
$ rpm -qa|grep httpd
$ rpm -qa|grep php
$ rpm -qa|grep mysql

# 把上面指令列出來的包刪除
$ rpm -e ****(包名)

# 安裝一些必備的包
$ yum -y install gcc gcc-c++ make screen wget net-tools curl python
$ screen -S bt

# 編譯安裝`hiredis`
$ git clone https://github.com/redis/hiredis.git
$ cd hiredis
$ make && make install
$ mkdir /usr/lib/hiredis
$ cp libhiredis.so /usr/lib/hiredis
$ mkdir /usr/include/hiredis
$ cp hiredis.h /usr/include/hiredis
$ echo '/usr/local/lib' >>/etc/ld.so.conf 
$ ldconfig

2、修改CentOS默認(rèn)yum源為國內(nèi)yum鏡像源

  1. 備份/etc/yum.repos.d/CentOS-Base.repo
    $ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    
  2. 下載163yum源配置文件到上面那個文件夾內(nèi)
    $ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
    
  3. 運行yum makecache生成緩存
    $ yum makecache
    
  4. 更新系統(tǒng)
    $ yum -y update
    

3. 將已經(jīng)掛載在 home 目錄上的硬盤掛載到 data 目錄上

$ df -h                   #(查看分區(qū)情況及數(shù)據(jù)盤名稱)
$ mkdir /data              #(如果沒有data目錄就創(chuàng)建,否則此步跳過)
$ umount /home            #(卸載硬盤已掛載的home目錄)
$ mount /dev/mapper/centos-home /data    #(掛載到data目錄)
$ vi /etc/fstab           #(編輯fstab文件修改或添加,使重啟后可以自動掛載)
$ mount /dev/mapper/centos-home /data ext3 auto 0 0

4. 交互式安裝 OneinStack

  • 安裝 OneinStack
    $ wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz
    $ tar xzf oneinstack-full.tar.gz
    $ cd oneinstack
    $ screen -S oneinstack 
    # 如果網(wǎng)路出現(xiàn)中斷,可以執(zhí)行命令`screen -R oneinstack`重新連接安裝窗口
    $ ./install.sh          # 安裝
    $ ./addons.sh           # 添加附加組件
    $ ./vhost.sh            # 添加虛擬主機
    $ ./pureftpd_vhost.sh   # 管理FTP賬號
    $ ./backup_setup.sh     # 備份
    $ ./upgrade.sh          # 更新版本
    $ ./uninstall.sh        # 卸載
    
  • 管理服務(wù)
    # webmin
    $ rpm -Uvh https://prdownloads.sourceforge.net/webadmin/webmin-1.881-1.noarch.rpm
    
    # Nginx/Tengine/OpenResty
    $ service nginx {start|stop|status|restart|reload|configtest}
    
    # MySQL/MariaDB/Percona:
    $ service mysqld {start|stop|restart|reload|status}
    
    # PostgreSQL
    $ service postgresql {start|stop|restart|status}
    
    # MongoDB
    $ service mongod {start|stop|status|restart|reload}
    
    # PHP
    $ service php-fpm {start|stop|restart|reload|status}
    
    # HHVM
    $ service supervisord {start|stop|status|restart|reload}
    
    # Apache
    $ service httpd {start|restart|stop}
    
    # Tomcat
    $ service tomcat {start|stop|status|restart}
    
    # Pure-Ftpd
    $ service pureftpd {start|stop|restart|status}
    
    # Redis
    $ service redis-server {start|stop|status|restart}
    
    # Memcached
    $ service memcached {start|stop|status|restart|reload}
    

5. 安裝 Gearman

$ yum install -y uuid-devel libuuid libuuid-devel uuid boost-devel libevent libevent-devel gperf
$ wget https://launchpad.net/gearmand/1.2/1.1.12/+download/gearmand-1.1.12.tar.gz
$ tar zxvf gearmand-1.1.12.tar.gz
$ cd gearmand-1.1.12
$ ./configure --prefix=/usr/local/gearmand
$ make && make install
$ vi /etc/init.d/gearmand
#!/bin/bash  
# chkconfig: - 85 15  
#descrīption: service(/usr/local/gearmand/sbin/gearmand)  
. /etc/rc.d/init.d/functions  
start() {  
   echo -n $"Starting $prog"  
   echo -e " gearman :                                               [確定]"  
   /usr/local/gearmand/sbin/gearmand &  
   sleep 1  
   echo -e "running..."  
}  
stop() {  
   echo -n $"Stopping $prog"  
   echo -e " gearman :                                               [確定]"  
   kill -9 `ps -ef | grep "/usr/local/gearmand/sbin/gearmand" | awk '{print $2}' | awk 'NR==1'`  
   sleep 1  
   echo -e "stoped"  
}  
case "$1" in  
   start)  
      start  
      ;;  
   stop)  
      stop  
      ;;  
   restart)  
      stop  
      start  
      ;;  
   status)  
      ps -ef | grep "/usr/local/gearmand/sbin/gearmand"  
      ;;  
   *)  
      echo $"Usage: $prog {start|stop|restart|status}" >&2  
      exit 1  
      ;;  
esac  
exit 0  
$ chkconfig --add gearmand
$ chkconfig gearmand on
$ chkconfig --list

6. 安裝 PostgreSQL

  1. 安裝
    $ yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
    $ yum install postgresql96 postgresql96-server postgresql96-contrib postgresql96-devel postgresql96-libs
    
  2. 初始化 PostgreSQL 數(shù)據(jù)庫
    $ mkdir /data/pgsql
    $ chown -R postgres:postgres /data/pgsql
    $ su postgres
    $ /usr/pgsql-9.6/bin/initdb -D /data/pgsql/data
    $ vi /usr/lib/systemd/system/postgresql-9.6.service
    Environment=PGDATA=/data/pgsql/data
    $ systemctl daemon-reload
    $ systemctl enable postgresql-9.6
    $ systemctl start postgresql-9.6
    
  3. 配置默認(rèn) postgres 用戶及密碼并創(chuàng)建新的用戶和數(shù)據(jù)庫
    $ cd data
    $ su postgres
    $ createuser gadfly
    $ createdb gadfly_db
    $ psql
    psql (9.6)
    Type "help" for help.
    Postgres=# 
    postgres=# \password postgres
    Enter new password:
    Enter it again:
    postgres=# CREATE EXTENSION adminpack;
    CREATE EXTENSION
    postgres=# alter user gadfly with encrypted password 'centos';
    ALTER ROLE 
    postgres=# grant all privileges on database gadfly_db to gadfly;
    GRANT
    postgres=# \q
    $ exit
    
  4. 配置 PostgreSQL
    • 配置 PostgreSQL-MD5 認(rèn)證
      $ vi /data/pgsql/data/pg_hba.conf
      # "local" is for Unix domain socket connections only
      local        all      all                     md5
      # IPv4 local connections:
      host        all      all    192.168.1.0/24    md5
      host        all      all    127.0.0.1/32      md5
      # IPv6 local connections:
      host        all      all    ::1/128           md5
      
    • 配置 PostgreSQL-Configure TCP/IP
      $ vi /data/pgsql/data/postgresql.conf 
      [...]
      listen_addresses = '*’
      [...]
      port = 5432
      [...]
      
  5. 安裝 redis_fdw 外部表插件
    $ git clone -b REL9_6_STABLE https://github.com/pg-redis-fdw/redis_fdw.git
    $ cd redis_fdw
    $ export PATH=/usr/pgsql-9.6//bin:$PATH
    $ make USE_PGXS=1
    $ make USE_PGXS=1 install
    $ su postgres
    bash-4.2$ psql -U postgres -d postgres
    postgres=# create extension redis_fdw;
    CREATE EXTENSION
    postgres=# CREATE SERVER redis_server
    postgres-#     FOREIGN DATA WRAPPER redis_fdw
    postgres-#     OPTIONS (address '127.0.0.1', port '6379');
    CREATE SERVER
    postgres=# CREATE USER MAPPING FOR PUBLIC
    postgres-#     SERVER redis_server
    postgres-#     OPTIONS (password '');
    CREATE USER MAPPING
    

    redis_fdw 詳細(xì)的用法介紹
    1. CREATE SERVER 支持的 option(指定地址和端口)
    address: The address or hostname of the Redis server. Default: 127.0.0.1 port: The port number on which the Redis server is listening. Default: 6379
    2. CREATE USER MAPPING 支持的 option (指定密碼)
    password: The password to authenticate to the Redis server with. Default:
    3. CREATE FOREIGN TABLE 支持的 option
    * 指定數(shù)據(jù)庫ID
    * 表類型(hash,list,set,zsetscalar)
    * key 前綴 key 集合 singleton_key 指定 KEY
    conf database: The numeric ID of the Redis database to query. Default: 0 tabletype: can be 'hash', 'list', 'set' or 'zset' Default: none, meaning only look at scalar values. tablekeyprefix: only get items whose names start with the prefix Default: none tablekeyset: fetch item names from the named set Default: none singleton_key: get all the values in the table from a single named object. Default: none, meaning don't just use a single object.

7. 安裝MySQL 5.7UDF函數(shù)

  • CentOS7 系統(tǒng)上安裝 mysql-udf-http
    $ export PKG_CONFIG=/usr/bin/pkg-config
    $ export PKG_CONFIG_PATH=/usr/share/pkgconfig:/usr/lib/pkgconfig
    $ echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
    $ /sbin/ldconfig
    $ git clone https://github.com/y-ken/mysql-udf-http.git
    $ cd mysql-udf-http
    $ chmod +x ./configure
    $ ./configure --with-mysql=/usr/local/mysql/bin/mysql_config --prefix=/usr --libdir=/usr/local/mysql/lib/plugin
    $ make && make install
    $ cd ../
    
  • CentOS7 系統(tǒng)上安裝 mysql-udf-sys
    $ git clone https://github.com/mysqludf/lib_mysqludf_sys.git
    $ cd lib_mysqludf_sys
    $ gcc -DMYSQL_DYNAMIC_PLUGIN -fPIC -Wall -I/usr/local/mysql/include -I. -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so
    $ cp lib_mysqludf_sys.so /usr/local/mysql/lib/plugin
    
  • CentOS7 系統(tǒng)上安裝 gearman-mysql-udf
    $ wget https://launchpad.net/gearman-mysql-udf/trunk/0.6/+download/gearman-mysql-udf-0.6.tar.gz
    $ tar xf gearman-mysql-udf-0.6.tar.gz -C ./  
    $ cd gearman-mysql-udf-0.6  
    $ ./configure --with-mysql=/usr/local/mysql/bin/mysql_config --libdir=/usr/local/mysql/lib/plugin 
    $ make && make install
    
  • 創(chuàng)建 MySQL 自定義函數(shù)
    mysql> DROP FUNCTION IF EXISTS http_get; 
    mysql> DROP FUNCTION IF EXISTS http_post; 
    mysql> DROP FUNCTION IF EXISTS http_put; 
    mysql> DROP FUNCTION IF EXISTS http_delete; 
    mysql> create function http_get returns string soname 'mysql-udf-http.so';
    mysql> create function http_post returns string soname 'mysql-udf-http.so'; 
    mysql> create function http_put returns string soname 'mysql-udf-http.so'; 
    mysql> create function http_delete returns string soname 'mysql-udf-http.so';
    mysql> DROP FUNCTION IF EXISTS lib_mysqludf_sys_info; 
    mysql> DROP FUNCTION IF EXISTS lib_mysqludf_sys_info;
    mysql> DROP FUNCTION IF EXISTS sys_set;
    mysql> DROP FUNCTION IF EXISTS sys_exec;
    mysql> DROP FUNCTION IF EXISTS sys_eval;
    mysql> CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME 'lib_mysqludf_sys.so';
    mysql> CREATE FUNCTION sys_get RETURNS string SONAME 'lib_mysqludf_sys.so';
    mysql> CREATE FUNCTION sys_set RETURNS int SONAME 'lib_mysqludf_sys.so';
    mysql> CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.so';
    mysql> CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sys.so';
    mysql> DROP FUNCTION IF EXISTS gman_do_background;
    mysql> DROP FUNCTION IF EXISTS gman_servers_set;
    mysql> CREATE FUNCTION gman_do_background RETURNS STRING SONAME 'libgearman_mysql_udf.so';
    mysql> CREATE FUNCTION gman_servers_set RETURNS STRING SONAME 'libgearman_mysql_udf.so';
    

8. 安裝RabbitMQ

  1. 安裝Erlang

    $ rpm --import https://packages.erlang-solutions.com/rpm/erlang_solutions.asc
    $ rpm -Uvh https://bintray.com/rabbitmq/rpm/download_file?file_path=erlang%2F21%2Fel%2F7%2Fx86_64%2Ferlang-21.0.2-1.el7.centos.x86_64.rpm
    
  2. 安裝RabbitMQ

    $ rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
    $ wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.7/rabbitmq-server-3.7.7-1.el7.noarch.rpm
    $ yum install rabbitmq-server-3.7.7-1.el7.noarch.rpm
    
  3. 關(guān)于RabbitMQ的一些基本操作

    $ chkconfig rabbitmq-server on  # 添加開機啟動RabbitMQ服務(wù)
    $ service rabbitmq-server start # 啟動服務(wù)
    $ service rabbitmq-server status  # 查看服務(wù)狀態(tài)
    $ service rabbitmq-server stop   # 停止服務(wù)
    
    # 查看當(dāng)前所有用戶
    $ rabbitmqctl list_users
    
    # 查看默認(rèn)guest用戶的權(quán)限
    $ rabbitmqctl list_user_permissions guest
    
    # 由于RabbitMQ默認(rèn)的賬號用戶名和密碼都是guest。為了安全起見, 先刪掉默認(rèn)用戶
    $ rabbitmqctl delete_user guest
    
    # 添加新用戶
    $ rabbitmqctl add_user username password
    
    # 設(shè)置用戶tag
    $ rabbitmqctl set_user_tags username administrator
    
    # 賦予用戶默認(rèn)vhost的全部操作權(quán)限
    $ rabbitmqctl set_permissions -p / username ".*" ".*" ".*"
    
    # 查看用戶的權(quán)限
    $ rabbitmqctl list_user_permissions username
    
  4. 查看RabbitMQ日志

    • 日志中給出了 rabbitmq 啟動的重要信息,如 node 名,$home 目錄,cookie hash 值,日志文件,數(shù)據(jù)存儲目錄等;
    • 給出的信息會指出無配置文件(如下圖),默認(rèn)安裝沒有此文件
      $ cat /var/log/rabbitmq/rabbit@rmq-node1.log
      
  5. 開啟web管理接口

    通過瀏覽器訪問 http://localhost:15672
    shell $ rabbitmq-plugins enable rabbitmq_management

  6. rabbitmq.conf

    • 手工建目錄,將配置樣例文件拷貝到配置目錄并改名
      $ mkdir -p /etc/rabbitmq
      $ cp /usr/share/doc/rabbitmq-server-3.6.10/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
      
    • 配置重啟生效
      $ systemctl restart rabbitmq-server
      

    另外還可以建環(huán)境配置文件:/etc/rabbitmq/rabbitmq-env.conf

  7. 設(shè)置iptables

    • tcp4369 端口用于集群鄰居發(fā)現(xiàn);
    • tcp56715672 端口用于 AMQP 0.9.1 and 1.0 clients 使用;
    • tcp15672 端口用于 http apirabbitadmin 訪問,后者僅限在 management plugin 開啟時;
    • tcp25672 端口用于 erlang 分布式節(jié)點/工具通信
    $ vi /etc/sysconfig/iptables
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 4369 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 5671 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 25672 -j ACCEPT
    $ service iptables restart
    

9、安裝 kafka

  1. 安裝 JDK

    $ yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel java-1.8.0-openjdk-javadoc
    $ vi  /etc/profile
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64
    export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    $ source /etc/profile     #使配置文件立即生效
    
  2. 安裝 zookeeper

    $ cd /www/software
    $ wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
    $ tar -zxvf zookeeper-3.4.9.tar.gz
    $ mv /www/software/zookeeper-3.4.9 /www/server/zookeeper
    $ vi /etc/profile
    export ZOOKEEPER_HOME=/www/server/zookeeper
    export PATH=$ZOOKEEPER_HOME/bin:$PATH
    export PATH
    $ source /etc/profile
    $ cd /www/server/zookeeper/conf
    $ cp zoo_sample.cfg zoo.cfg
    $ vi /www/server/zookeeper/conf/zoo.cfg
    # zookeeper 定義的基準(zhǔn)時間間隔,單位:毫秒
    tickTime=2000
    # 數(shù)據(jù)文件夾
    dataDir=/www/server/zookeeper/data
    # 日志文件夾
    dataLogDir=/www/server/zookeeper/logs
    # 客戶端訪問 zookeeper 的端口號
    clientPort=2181
    $ /www/server/zookeeper/bin/zkServer.sh start 
    ZooKeeper JMX enabled by default
    Using config: /www/server/zookeeper/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    
    # 安裝 `zookeeper c client`
    $ cd /www/server/zookeeper/src/c
    $ ./configure
    $ make && make install
    
  3. 安裝 kafka

    $ cd /www/software
    $ wget https://archive.apache.org/dist/kafka/1.1.0/kafka_2.12-1.1.0.tgz
    $ tar -xzvf kafka_2.12-1.1.0.tgz
    $ mv /www/software/kafka_2.12-1.1.0 /www/server/kafka
    
    • 配置 kafka,修改 server.properties

      $ mkdir /www/wwwlogs/kafka                #創(chuàng)建kafka日志目錄
      $ cd /www/server/kafka/config             #進入配置目錄
      $ vi server.properties                    #編輯修改相應(yīng)的參數(shù)
      broker.id=0
      port=9092                                 #端口號
      host.name=192.168.137.254                 #服務(wù)器IP地址,修改為自己的服務(wù)器IP
      log.dirs=/www/wwwlogs/kafka               #日志存放路徑,上面創(chuàng)建的目錄
      zookeeper.connect=localhost:2181    #zookeeper地址和端口,單機配置部署,localhost:2181
      
    • 配置 kafka 下的 zookeeper

      $ mkdir /www/server/zookeeper        #創(chuàng)建zookeeper目錄
      $ mkdir /www/wwwlogs/zookeeper    #創(chuàng)建zookeeper日志目錄
      $ cd /www/server/kafka/config              #進入配置目錄
      $ vi zookeeper.properties                 #編輯修改相應(yīng)的參數(shù) 
      dataDir=/www/server/kafka/zookeeper        #zookeeper數(shù)據(jù)目錄 
      dataLogDir=/www/server/kafka/log/zookeeper #zookeeper日志目錄 
      clientPort=2181 
      maxClientCnxns=100 
      tickTime=2000 
      initLimit=10
      
    • 創(chuàng)建啟動 kafka 腳本

      $ vi kafkastart.sh
      #!/bin/bash
      #啟動zookeeper
      /www/server/kafka/bin/zookeeper-server-start.sh /www/server/kafka/config/zookeeper.properties &
      sleep 3 #等3秒后執(zhí)行
      #啟動kafka
      /www/server/kafka/bin/kafka-server-start.sh /www/server/kafka/config/server.properties &
      
    • 創(chuàng)建關(guān)閉 kafka 腳本

      $ vi kafkastop.sh
      #!/bin/bash
      #關(guān)閉zookeeper
      /www/server/kafka/bin/zookeeper-server-stop.sh /www/server/kafka/config/zookeeper.properties &
      sleep 3 #等3秒后執(zhí)行
      $ /www/server/kafka/bin/kafka-server-stop.sh /www/server/kafka/config/server.properties &
      
    • 添加腳本執(zhí)行權(quán)限

      $ chmod +x kafkastart.sh
      $ chmod +x kafkastop.sh
      
    • 設(shè)置腳本開機自動執(zhí)行

      $ vi /etc/rc.d/rc.local                 # 編輯,在最后添加一行
      $ sh /www/server/kafka/kafkastart.sh &   # 設(shè)置開機自動在后臺運行腳本
      $ sh /www/server/kafka/kafkastart.sh     # 啟動kafka
      $ sh /www/server/kafka/kafkastop.sh      # 關(guān)閉kafka
      
  4. 測試 kafka

    • 步驟1:啟動 zookeeper
      $ /www/server/zookeeper/bin/zkServer.sh start
      JMX enabled by default
      Using config: /home/laoyang/zookeeper/bin/../conf/zoo.cfg
      grep: /home/laoyang/zookeeper/bin/../conf/zoo.cfg: No such file or directory
      Starting zookeeper ... STARTED
      
    • 步驟2:啟動 kafka
      $ ./kafkastart.sh
      
    • 步驟3:測試創(chuàng)建 topic
      $ cd /www/server/kafka/bin 
      $ ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
      
    • 步驟4:通過 list命令查看創(chuàng)建的 topic
      $ cd /www/server/kafka/bin
      $ ./kafka-topics.sh –list –zookeeper localhost:2181
      
    • 步驟5:生產(chǎn)消息測試
      $ ./kafka-console-producer.sh --broker-list localhost:9092 --topic test 
      laoyang I love you! 
      
    • 步驟6:消費消息測試
      $ ./kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
      I'm laoyang #之前測試輸入的內(nèi)容
      laoyang I love you!
      

    經(jīng)過以上6步,代表kafka安裝成功。

    • 停止 kafka
      • 步驟1:停止 Kafka
        $ cd /usr/local/kafka
        $ ./kafkastop.sh
        
      • 步驟2:停止 Zookeeper server
        $ /www/server/zookeeper/bin/zkServer.sh stop
        

10. 為 PHP 添加擴展

  1. 添加 PostgreSQL 擴展
    $ cd ~/oneinstack/src
    $ tar zxvf php-7.2.6.tar.gz
    $ cd php-7.2.6/ext/pgsql
    $ /usr/local/php/bin/phpize
    $ ./configure --with-php-config=/usr/local/php/bin/php-config --with-pgsql=/usr/pgsql-9.6
    $ make && make install
    
  2. 添加 PDO-PostgreSQL 擴展
    $ cd ~/oneinstack/src/php-7.2.6/ext/pdo_pgsql
    $ /usr/local/php/bin/phpize
    $ ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-pgsql=/usr/pgsql-9.6
    $ make && make install
    
  3. 添加 Gearman 擴展
    $ git clone https://github.com/wcgallego/pecl-gearman.git
    $ cd pecl-gearman
    $ /usr/local/php/bin/phpize
    $ ./configure --with-php-config=/usr/local/php/bin/php-config --with-gearman=/usr/local/gearmand/
    $ make && make install
    
  4. 添加rabbitmq擴展
    1. 安裝rabbitmq-c
      $ yum install libtool autoconf
      $ wget https://github.com/alanxz/rabbitmq-c/archive/v0.9.0.tar.gz
      $ tar zxvf v0.9.0.tar.gz
      $ cd rabbitmq-c-0.9.0/
      $ autoreconf -i
      #這一步是在rabbitmq-c的根目錄下創(chuàng)建一個build子目錄
      $ mkdir build && cd build
      
      # 這一步是讓cmake根據(jù)../CMakeList.txt,即rabbitmq-c的根目錄下的CMakeList.txt創(chuàng)建Makefile文件
      # Makefile文件會被創(chuàng)建到build目錄中
      $ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq-c ..
      
      # 這一步是真正的build rabbitmq-c庫的,注意,不要漏掉點 ‘.‘
      $ cmake --build . --target install
      $ ln -s /usr/local/rabbitmq-c/lib64 /usr/local/rabbitmq-c/lib
      
    2. 安裝amqp擴展
      $ wget http://pecl.php.net/get/amqp-1.9.3.tgz
      $ tar zxvf amqp-1.9.3.tgz
      $ cd amqp-1.9.3
      $ phpize
      $ ./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c
      $ make
      $ make install
      
  5. PHP 添加 zookeeper 擴展
    • PHP 添加 libzookeeper 擴展
      $ git clone https://github.com/Timandes/libzookeeper.git
      $ cd libzookeeper
      $ /www/server/php/72/bin/phpize
      $ ./configure --with-php-config=/www/server/php/72/bin/php-config --with-libzookeeper=/usr/local/bin/cli_mt
      $ make && make install
      
    • PHP 添加 zookeeper 擴展
      $ git clone -b php7 https://github.com/jbboehr/php-zookeeper.git
      $ cd /www/server/php-zookeeper
      $ /www/server/php/72/bin/phpize
      $ ./configure --with-php-config=/www/server/php/72/bin/php-config
      $ make && make install
      
  6. 配置 PHP 支持自定義擴展
    $ vi /usr/local/php/etc/php.d/90-pgsql.ini
    extension=pgsql.so
    extension=pdo_pgsql.so
    extension=gearman.so
    extension=amqp.so
    $ service httpd restart
    

11. Composer安裝和使用

  1. 安裝 Composer
    # 下載composer.phar 
    $ wget https://dl.laravel-china.org/composer.phar -O /usr/local/bin/composer
    
    # 把composer.phar移動到環(huán)境下讓其變成可執(zhí)行 
    $ chmod a+x /usr/local/bin/composer
    $ composer config -g repo.packagist composer https://packagist.phpcomposer.com
    
    # 測試
    $ composer -V 
    
  2. 使用 Composer 安裝 ThinkPHP 5.1
    $ composer create-project topthink/think thinkphp5.1 --prefer-dist
    $ cd thinkphp5.1
    $ composer require topthink/think-swoole
    $ composer require flc/alidayu
    $ composer require topthink/think-helper
    $ composer require topthink/think-image
    $ composer require topthink/think-captcha
    $ composer require nmred/kafka-php
    $ composer require adodb/adodb-php
    $ composer require phpoffice/phpspreadsheet
    $ composer require phpoffice/phpexcel
    $ composer require phpoffice/phpword
    $ composer require tecnickcom/tcpdf
    $ composer require mpdf/mpdf
    $ composer require gmars/tp5-qiniu
    $ composer require apache/log4php
    $ composer require ccampbell/chromephp
    $ composer require php-amqplib/php-amqplib
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,238評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,430評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,134評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,893評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,653評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,136評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,212評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,372評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,888評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,738評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,482評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,179評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,588評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,829評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,610評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,916評論 2 372