# 安裝說明
## docker安裝
docker中安裝可以使用以下鏡像,已經安裝了必須的擴展
docker pull flysnow/workerman
~~~
docker run -dit --name flysocket -p 8282:8282 -v /home/www/wwwroot:/www flysnow/workerman
~~~
Dockerfile如下
```
~~~
FROM php:7.3-cli
LABEL maintainer="waxiongfeifei@gmail.com" version="1.0"
RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \
&& apt-get clean \
&& apt-get update \
&& apt-get install -y openssl libssl-dev \
&& apt-get install libevent-dev -y \
&& docker-php-ext-install pcntl sockets pdo_mysql \
&& sh -c '/bin/echo -e "no\nyes\n/usr\nno\nyes\nno\nyes\nno" | pecl install event' \
&& docker-php-ext-enable event \
&& pecl install redis \
&& docker-php-ext-enable redis \
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
EXPOSE 8282 8283 7273 1238
CMD /bin/bash
~~~
```
## 本機安裝
# Linux系統環境檢測
Linux系統可以使用以下腳本測試本機PHP環境是否滿足WorkerMan運行要求。`curl -Ss http://www.workerman.net/check.php | php`
上面腳本如果全部顯示ok,則代表滿足WorkerMan要求,直接到[官網](http://www.workerman.net/)下載例子即可運行。
如果不是全部ok,則參考下面文檔安裝缺失的擴展即可。
(注意:檢測腳本中沒有檢測event擴展或者libevent擴展,如果業務并發連接數大于1024必須安裝event擴展或者libevent擴展,并且[優化Linux內核](http://doc.workerman.net/appendices/kernel-optimization.html),擴展安裝方法參照下面說明)
# 已有PHP環境安裝缺失擴展
## 安裝pcntl和posix擴展:
**centos系統**
如果php是通過yum安裝的,則命令行運行`yum install php-process`即可安裝pcntl和posix擴展。
如果安裝失敗或者php本身不是用yum安裝的請參考手冊[附錄-安裝擴展](http://doc.workerman.net/appendices/install-extension.html)一節中方法三源碼編譯安裝。
**debian/ubuntu/mac os系統**
參考手冊[附錄-安裝擴展](http://doc.workerman.net/appendices/install-extension.html)一節中方法三源碼編譯安裝。
## 安裝event或者libevent擴展:
為了能支持更大的并發連接數,必須安裝event擴展或者libevent擴展(二者作用相同,二選一即可),并且[優化Linux內核](http://doc.workerman.net/appendices/kernel-optimization.html)。以Event為例,安裝方法如下:
**centos系統**
1、安裝event擴展依賴的libevent-devel包,命令行運行
~~~
yum install libevent-devel -y
# 如果無法安裝,嘗試使用下面的命令
# yum install libevent2-devel -y
~~~
2、安裝event擴展,命令行運行
(event擴展要求PHP>=5.4,PHP5.3用戶請安裝libevent擴展,見本頁面底部)
~~~
pecl install event
~~~
注意提示:`Include libevent OpenSSL support [yes] :`時輸入`no`回車,
注意提示:`PHP Namespace for all Event classes :`時輸入`yes`,其它直接敲回車就行
如果安裝失敗請參考頁面底部常見問題或者跳過以下步驟嘗試安裝libevent擴展,見本頁面底部。
3、命令行運行(如果ini文件位置不對,可以通過運行`php --ini`找到實際加載的ini文件路徑)
~~~
echo extension=event.so > /etc/php.d/30-event.ini
~~~
**debian/ubuntu系統安裝**
1、安裝event擴展依賴的libevent-dev包,命令行運行
~~~
apt-get install libevent-dev -y
# 如果無法安裝,請嘗試以下命令
# apt-get install libevent2-dev -y
~~~
2、安裝event擴展,命令行運行
(注意:event擴展要求PHP>=5.4,PHP5.3用戶請安裝libevent擴展,見本頁面底部)
~~~
pecl install event
~~~
注意提示:`Include libevent OpenSSL support [yes] :`時輸入`no`回車,
注意提示:`PHP Namespace for all Event classes :`時輸入`yes`,其它直接敲回車就行
如果安裝失敗請參考頁面底部常見問題或者跳過以下步驟嘗試安裝libevent擴展,見本頁面底部。
3、命令行運行(需要切換到root用戶。如果ini文件位置不對,可以通過運行`php --ini`找到實際加載的ini文件路徑)
~~~
echo extension=event.so > /etc/php5/cli/conf.d/30-event.ini
~~~
**mac os 系統安裝教程**
mac 系統一般作為開發機,不必安裝event擴展。
# 全新系統安裝(全新安裝PHP+擴展)
## centos系統安裝教程
1、命令行運行(此步驟包含了安裝php-cli主程序以及pcntl、posix、libevent庫及git程序)
~~~
yum install php-cli php-process git gcc php-devel php-pear libevent-devel -y
~~~
2、安裝event擴展,命令行運行
(注意:event擴展要求PHP>=5.4,PHP5.3用戶請安裝libevent擴展(libevent擴展也支持php5.4-5.6),見本頁面底部)
~~~
pecl install event
~~~
注意提示:`Include libevent OpenSSL support [yes] :`時輸入`no`回車,
注意提示:`PHP Namespace for all Event classes :`時輸入`yes`,其它直接敲回車就行
如果安裝失敗請參考頁面底部常見問題或者跳過以下步驟3,嘗試安裝libevent擴展,見本頁面底部。
3、命令行運行(此步驟是配置event擴展的ini配置,如果ini文件位置不對,可以通過運行`php --ini`找到實際加載的ini文件路徑)
~~~
echo extension=event.so > /etc/php.d/30-event.ini
~~~
4、命令行運行(此步驟是通過github下載WorkerMan主程序)
~~~
git clone https://github.com/walkor/Workerman
~~~
5、參考[入門指引--簡單開發實例部分](http://doc.workerman.net/getting-started/simple-example.html)寫入口文件運行。
或者從[官網](http://www.workerman.net/)下載打包好的demo運行。
## debian/ubuntu系統安裝教程
1、命令行運行(此步驟包含了安裝php-cli主程序、libevent庫及git程序)
~~~
apt-get install php5-cli git gcc php-pear php5-dev libevent-dev -y
~~~
2、安裝event擴展,命令行運行
(注意:event擴展要求PHP>=5.4,PHP5.3用戶請安裝libevent擴展(libevent擴展也支持php5.4-5.6),見本頁面底部)
~~~
pecl install event
~~~
注意提示:`Include libevent OpenSSL support [yes] :`時輸入`no`回車,
注意提示:`PHP Namespace for all Event classes :`時輸入`yes`,其它直接敲回車就行
如果安裝失敗請參考頁面底部常見問題或者跳過以下步驟3,嘗試安裝libevent擴展,見本頁面底部。
3、命令行運行(需要切換到root用戶。此步驟是配置Event擴展的ini配置,如果ini文件位置不對,可以通過運行`php --ini`找到實際加載的ini文件路徑)
~~~
echo extension=event.so > /etc/php5/cli/conf.d/30-event.ini
~~~
4、命令行運行(此步驟是通過github下載WorkerMan主程序)
~~~
git clone https://github.com/walkor/Workerman
~~~
5、參考[入門指引--簡單開發實例部分](http://doc.workerman.net/getting-started/simple-example.html)寫入口文件運行。
或者從[官網](http://www.workerman.net/)下載打包好的demo運行。
## mac os 系統安裝教程
**方法1:**mac系統自帶PHP Cli,但是可能缺少`pcntl`擴展。
1、參考手冊[附錄-安裝擴展](http://doc.workerman.net/appendices/install-extension.html)一節中方法三源碼編譯安裝`pcntl`擴展。
2、參考手冊[附錄-安裝擴展](http://doc.workerman.net/appendices/install-extension.html)一節中方法四利用phpize安裝`event`擴展(作為開發機此可省略)。
3、通過[http://www.workerman.net/download/workermanzip](http://www.workerman.net/download/workermanzip)下載WorkerMan主程序,或者到[官網](http://www.workerman.net/)下載例子運行。
**方法2:**通過`brew`命令安裝php及對應擴展
1、命令行運行以下命令安裝`brew`工具(如果已經安裝過`brew`可以跳過此步驟)
~~~
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
~~~
2、命令行運行以下命令安裝`php7`
~~~
brew install php70
~~~
3、命令行運行以下命令安裝`event`擴展
~~~
brew install php70-event
~~~
4、到[官網](http://www.workerman.net/)下載例子運行
# Event擴展說明
[Event擴展](http://php.net/manual/zh/book.event.php)不是必須的,當業務需要支撐大于1000的并發連接時,推薦安裝Event,能夠支持巨大的并發連接。如果業務并發連接比較低,例如1000以下并發連接,則可以不用安裝。
如果無法安裝[Event擴展](http://php.net/manual/zh/book.event.php),可以用[libevent擴展](http://php.net/manual/zh/book.libevent.php)代替,注意目前libevent擴展不支持php7,php7用戶只能使用Event擴展。
## 安裝libevent擴展方法如下:
**注意:**1、libevent擴展也同樣依賴libevent庫,所以首先需要安裝libevent-devel包(并非擴展)。 2、libevent擴展支持php5.3-5.6,目前還不支持php7。php7用戶請使用event擴展,php7用戶請不要裝libevent擴展,否則會出現coredump錯誤。
**centos系統**
~~~
yum install libevent-devel
pecl install channel://pecl.php.net/libevent-0.1.0 //提示libevent installation [autodetect]: 時按回車
echo extension=libevent.so > /etc/php.d/libevent.ini
~~~
如果ini文件位置不對,可以通過運行`php --ini`找到實際加載的ini文件路徑
**debian/ubuntu系統**
~~~
apt-get install libevent-dev
pecl install channel://pecl.php.net/libevent-0.1.0 //提示libevent installation [autodetect]: 時按回車
echo extension=libevent.so > /etc/php5/cli/conf.d/libevent.ini
~~~
如果ini文件位置不對,可以通過運行`php --ini`找到實際加載的ini文件路徑
## 常見問題
1、如果出現如下報錯`checking for include/event2/event.h... not found`,請先嘗試刪除libevent-dev(el)庫安并裝libevent2-dev(el)。 centos系統:yum remove libevent-devel && yum install libevent2-devel debian/ubuntu系統:apt-get remove libevent-dev && apt-get install libevent2-dev
2、如果出現如下報錯`NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '.../event.so' - ..../event.so: undefined symbol: php_sockets_le_socket in Unknown on line 0`。 請更改event.so 和socket.so的加載順序,既在php.ini中將`extension=socket.so`寫在`extension=event.so`前面,讓socket擴展先加載。