2016年5月

Linux下安装Kafka和PHP的相关扩展

以下操作在 Ubuntu 16.04 下进行,其他系统可能略有不同:

安装kafka

  1. 配置防火墙,开启9092端口,编辑 \etc\iptables.up.rules 文件,添加一行:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9092 -j ACCEPT

保存后执行:

iptables-apply /etc/iptables.up.rules
  1. Ubuntu 16.04 自带 JDK,其他系统如果未安装则需要安装。

  2. 安装 kafka

kafka 最新的发行版本下载地址可以在 http://archive.apache.org/dist/kafka/ 里找。

cd /tmp
wget http://archive.apache.org/dist/kafka/0.10.0.0/kafka_2.11-0.10.0.0.tgz
tar -xzvf kafka_2.11-0.10.0.0.tgz
mv kafka_2.11-0.10.0.0 /usr/local/kafka
  1. 启动 zookeeper 和 kafka

这两者的配置这里就先不研究了,直接启动试试看:

nohup /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties &
nohup /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &

安装PHP相关扩展

zookeeper 扩展

  1. 安装 libzookeeper_mt
cd /tmp
wget -N http://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz; tar zxvf zookeeper-3.4.6.tar.gz; rm -f zookeeper-3.4.6.tar.gz
cd zookeeper-3.4.6/src/c
./configure --prefix=/usr/local/zookeeper
make
sudo make install
  1. 安装 PHP 的 zookeeper 扩展:
cd /tmp
gid clone https://github.com/jbboehr/php-zookeeper.git
# 如果是 PHP7:
# git checkout php7
phpize
./configure --with-php-config=/usr/local/php/bin/php-config  --with-libzookeeper-dir=/usr/local/zookeeper
make
sudo make install

然后就可以使用这个包了:https://github.com/nmred/kafka-php

rdkafka 扩展

  1. 安装 librdkafka:
cd /tmp
wget -N https://github.com/edenhill/librdkafka/archive/master.zip -O librdkafka.zip; unzip librdkafka.zip; rm -f librdkafka.zip
cd librdkafka-master
./configure
make
sudo make install
  1. 安装 php-rdkafka 扩展:
git clone https://github.com/arnaud-lb/php-rdkafka.git
cd php-rdkafka
# 如果是 PHP7
# git checkout php7
phpize
./configure
make all -j 5
sudo make install

参考文档:

常见PHP框架简单性能测试

本测试使用 apache bench,参数均为 -c 100 -n 2000

测试环境:

  • 单核 i7-4700MQ
  • 2G 内存
  • 7200 转机械硬盘

软件版本:

  • nginx 1.9
  • PHP 7

纯PHP文件

这是一个只包含 echo 'hello world' 的纯PHP文件的测试结果:

php

Yii2

Yii2

Laravel

Laravel

Slim3

Slim3

Flight

Flight

Lumen

Lumen

Fork过来的项目拉取源项目的更新

  1. Fork的代码库中添加上游代码库的remote源,其中upstream表示上游代码库名,可以任意:
git remote add upstream https://github.com/lj2007331/lnmp.git
  1. 将本地的修改提交 commit

  2. 在每次 Pull Request 前做如下操作,即可实现和上游版本库的同步。

git remote update upstream
git rebase upstream/{branch name}

需要注意的是在rebase操作之前,一定要将checkout{branch name}所指定的branch

  1. Push代码

使用db2md生成表结构

https://github.com/index0h/node-db2md

这个简直是神器,写数据库文档再也不用头疼了。

首先要安装nodenpm,这就不多说了。然后使用npm安装db2md

npm install db2md -g

安装完成后创建配置文件db2md.json,示例如下:

{
    "user": "root",
    "pass": "123456",
    "database": "test",
    "tables": ".*"
}

配置完成后即可以开始导出:

db2md -o tables.md