安装MixPHP

官网 DOC GITHUB

  1. 安装 Swoole 扩展

# pecl 在 php/bin 目录,国内 pecl 安装 swoole 有时很慢,如果无法忍受,可选择 编译安装。
sudo /vhs/kangle/php/php71/bin/pecl install swoole
# 不存在pecl,使用编译安装
git clone https://gitee.com/swoole/swoole.git
cd swoole
sudo /vhs/php/php71/bin/phpize
sudo ./configure --with-php-config=/vhs/php/php71/bin/php-config
# 使用异步 redis 需按 Swoole 官方要求安装 hiredis 与 重新编译 swoole
# wget https://github.com/redis/hiredis/archive/v0.14.0.tar.gz
# make -j
# sudo make install
# sudo ldconfig
# 加上--enable-async-redis
# sudo ./configure --with-php-config=/vhs/php/php71/bin/php-config --enable-async-redis
		# 如果libhiredis.so.0.14: cannot open shared object file: No such file or directory in 
		sudo mkdir /usr/lib/hiredis
		sudo cp libhiredis.so /usr/lib/hiredis #将动态连接库libhiredis.so至/usr/lib/hiredis
		sudo mkdir /usr/include/hiredis
		sudo cp hiredis.h /usr/include/hiredis
		su
		sudo echo '/usr/local/lib' >> /etc/ld.so.conf
		sudo ldconfig
		# 检测
		/vhs/php/php71/bin/php -m
		/vhs/php/php71/bin/php --ri swoole
sudo make
sudo make install
# 安装之后提示(模块在/vhs/php/php71/lib/extensions/no-debug-non-zts-20160303/文件夹):
# Installing shared extensions:     /vhs/php/php71/lib/extensions/no-debug-non-zts-20160303/
# Installing header files:          /vhs/php/php71/include/php/
# 修改php.ini加入扩展
sudo nano /vhs/php/php71/etc/php.ini
# 添加
extension="/vhs/php/php71/lib/extensions/no-debug-non-zts-20160303/swoole.so"
  1. 安装 MixPHP

# 推荐使用 composer 安装,但是一般情况下,composer 安装的是最新的稳定版本,不一定是最新版本。
composer create-project mixstart/mixphp --prefer-dist
# 如果你需要安装实时更新的版本:
composer create-project mixstart/mixphp=v1.1.0-beta --prefer-dist
# 然后在 composer.json 增加 "minimum-stability": "beta" 配置项,再执行:
composer update
# 安装入口:
# 入口文件安装至 /usr/local/bin,可选,不安装可直接执行入口文件。
cd /data/mixphp-master
sudo chmod 777 ./install.sh
./install.sh
  1. 确认安装成功,启动 mix-httpd 服务器

# 启动 mix-httpd 服务器
# -d 后台运行
# -u 代码能够实时生效, 马上看到效果,会使 worker 只处理一次请求就销毁,所以不要在生产环境中使用。
# 如果想启动多个mix-httpd,mix-httpd在项目文件夹的bin目录下(不执行install.sh即可)
sudo /vhs/php/php71/bin/php work/bin/mix-httpd service start -u 
# 访问测试
curl http://127.0.0.1:9501/
# Hello World
  1. 增加 Nginx 反向代理

# 在 MixPHP 中通过读取 Request::header('x-real-ip') 或者 Request::header('x-forwarded-for') 来获取客户端的真实IP。
server {
    server_name www.test.com;
    listen 80; 
    root /data/mixphp/apps/httpd/public;
    
    location = / {
        rewrite ^(.*)$ /index last;
    }
    
    location / {
        proxy_http_version 1.1;
        proxy_set_header Connection "keep-alive";
        proxy_set_header Host $http_host;
        proxy_set_header Scheme $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        if (!-e $request_filename) {
             proxy_pass http://127.0.0.1:9501;
        }
    }
}