swoole入門3-swoole開發環境搭建

環境依賴

  • 僅支持 Linux、FreeBSD、MacOS 三種操做系統
  • 在Windows平臺,可以使用CygWin或WSL(Windows Subsystem for Linux)
  • Linux 內核版本 2.3.32 以上
  • gcc4.4 以上版本或者clang
  • 4.x版本起須要gcc-4.8或更高版本, 編譯失敗請先嚐試升級gcc
  • 編譯爲 libswoole.so 做爲 C/C++ 庫時須要使用 cmake-2.4 或更高版本
建議使用 Ubuntu1四、CentOS七、MAC10.14.0或更高版本的操做系統

PHP版本依賴

  • Swoole-4.x須要 PHP-7.1.0 或更高版本
  • 不依賴 PHP 的 stream、sockets、pcntl、posix、sysvmsg 等擴展。PHP 只需安裝最基本的擴展便可

ARM平臺(樹莓派Raspberry PI)

  • 請使用 1.7.10 或更高版本
  • 使用 GCC 交叉編譯
  • 在編譯 Swoole 時,須要手工修改 Makefile 去掉 -O2 編譯參數

MIPS平臺(OpenWrt路由器)

  • 請使用 swoole-1.7.21 或更高版本
  • 使用 GCC 交叉編譯

CygWin環境支持(Windows系統)

swoole-1.7.7 增長了對 cygwin 環境的支持,在 Windows 環境下,能夠直接使用 cygwin + php 來跑 swoole 程序。
  • 安裝 cygwin,並安裝 gcc、make、autoconf、php 4個包
  • 下載swoole源碼,在 cygwin-shell 中進行 phpize/configure/make/make install
  • 修改 php.ini,加入 swoole.so
cygwin 模式下須要對 PHP 進行簡化,去掉不使用的擴展,避免進程佔用內存過大,致使 Fork 操做失敗

BashOnWindows

Windows 10 系統增長了 Linux 子系統支持,BashOnWindows 環境下也可使用 swoole。安裝命令
pecl install swoole
    echo 'extension=swoole.so' >> /etc/php/7.0/mods-available/swoole.ini
    cd /etc/php/7.0/cli/conf.d/ && ln -s ../../mods-available/swoole.ini 20-swoole.ini
    cd /etc/php/7.0/fpm/conf.d/ && ln -s ../../mods-available/swoole.ini 20-swoole.ini
  • BashOnWindows 環境下必須關閉 daemonize 選項
  • 須要修改 config.h 關閉 HAVE_SIGNALFD

DockerOnWindows

在 Windows 下開發可使用 Hyper-V+Docker 來方便的開發 Swoole 應用,安裝好 Docker 後再 Settings 裏的 Shared Droves 選項裏共享代碼所在磁盤。而後使用以下命令來快速啓動 Docker 容器。
  • e:/path/to 爲源碼所在路徑
  • /app 爲容器內路徑
  • 在 bash 裏執行 cd /app && php server.php

編譯安裝

Swoole擴展是按照PHP標準擴展構建的。使用phpize來生成編譯檢測腳本,./configure來作編譯配置檢測,make進行編譯,make install進行安裝。
  • 請下載releases版本的swoole,直接從github主幹上拉取最新代碼可能會編譯不過
  • 如無特殊需求, 請務必編譯安裝swoole的最新版本
  • 若是當前用戶不是root,可能沒有PHP安裝目錄的寫權限,安裝時須要sudo或者su
  • 若是是在git分支上直接git pull更新代碼,從新編譯前務必要執行make clean

安裝準備

  • PHP 7.0或更高版本[7.2.9]
  • Swoole 4.x.0以上版本[4.2.8]
  • redis[4.2.0]
  • mysqli
  • pdo
  • hiredis
  • sockets
  • mysqlnd

編譯示例

cd swoole
sudo phpize (找不到,須要指定php的bin下的phpize)
sudo ./configure --with-php-config=php的bin下的php-config --enable-sockets --enable-http2 --enable-async-redis --enable-mysqlnd
sudo make && make install

配置php.ini

編譯安裝成功後,修改php.ini加入
extension=swoole.so
重啓php-fpm
經過php -m或phpinfo()來查看是否成功加載了swoole.so,若是沒有多是php.ini的路徑不對,可使用php --ini來定位到php.ini的絕對路徑。

hiredis安裝

github地址:https://github.com/redis/hiredis
cd /deps/hiredis
sudo make && make install
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

http2

依賴nghttp2庫
mac安裝:brew install nghttp2

nginx配置

看我的喜愛,可選擇不配置
server {
    listen 80;
    root WORKERDIR/swoole/;
    server_name swoole-test.cn;
    location / {
        #若是$uri對應的文件存在,在nginx處理,不然把請求交給swoole處理
        try_files $uri @swoole;
    }
    location @swoole {
        proxy_http_version 1.1;
        proxy_redirect off;
        proxy_set_header Connection "keep-alive";
        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;
        }
        if (!-f $request_filename) {
          proxy_pass http://127.0.0.1:9501;
        }
        proxy_connect_timeout 300s;
        proxy_send_timeout 300s;
        proxy_read_timeout 300s;
        proxy_set_header Host $host;
    }
   fastcgi_connect_timeout 300;
   fastcgi_send_timeout 300;
   fastcgi_read_timeout 300;
相關文章
相關標籤/搜索