框架安装

框架使用 Composer 作为依赖管理工具,在开始安装框架前,请确保已经按上一章节的要求配置好环境并安装好了Composer 工具,在安装过程中,会释放框架的文件到项目目录,请保证项目目录有可写入权限

关于 Composer 的安装可以参照 Composer中国全量镜像 的安装教程,另外 Composer中国 已经很久没有更新了,请大家使用梯子或者是其他镜像。

切换laravel镜像

  1. composer config -g repo.packagist composer https://packagist.laravel-china.org

Composer 安装

按下面的步骤进行手动安装

  1. composer require easyswoole/easyswoole=3.x
  2. php vendor/bin/easyswoole install

如果安装遇到报错,请看下面的报错处理

报错处理

在一些环境中,特别是使用集成面板安装的 PHP 环境,会出现以下报错:

  1. dir=$(d=${0%[/\\]*}; cd "$d" > /dev/null; cd '../easyswoole/easyswoole/bin' && pwd)
  2. # See if we are running in Cygwin by checking for cygpath program
  3. if command -v 'cygpath' >/dev/null 2>&1; then
  4. # Cygwin paths start with /cygdrive/ which will break windows PHP,
  5. # so we need to translate the dir path to windows format. However
  6. # we could be using cygwin PHP which does not require this, so we
  7. # test if the path to PHP starts with /cygdrive/ rather than /usr/bin
  8. if [[ $(which php) == /cygdrive/* ]]; then
  9. dir=$(cygpath -m "$dir");
  10. fi
  11. fi
  12. dir=$(echo $dir | sed 's/ /\ /g')
  13. "${dir}/easyswoole" "$@"

引起该报错的大多数原因是因为当前PHP.ini禁用了symlink函数,或者无法在vendor目录下创建符号链接,可以执行以下命令行观察输出确认是否禁用了该函数,如果没有禁用该函数,则输出的列表中没有symlink字样

  1. php -ini | grep disable_functions

如果禁用了该函数,可以直接修改PHP.ini或在集成面板中解除该函数的禁用,删除项目目录下的vendor目录,重新执行composer install拉取依赖包

如果是其他原因导致的该报错,可以在项目根目录下手工执行以下命令,将可执行文件链接出来 :

  1. cd vendor/bin/ && rm -rf easyswoole && ln -s ../easyswoole/easyswoole/bin/easyswoole easyswoole && cd ../../

或者直接指向EasySwoole的管理脚本执行安装命令 :

  1. php vendor/easyswoole/easyswoole/bin/easyswoole install

手动安装

按下面的步骤进行手动安装

  1. composer require easyswoole/easyswoole=3.x-dev
  2. php vendor/bin/easyswoole install

中途没有报错的话,执行:

  1. # 启动框架
  2. php easyswoole start

此时可以访问 http://localhost:9501 看到框架的欢迎页面,表示框架已经安装成功

如果第二步的 install 操作报错 请查看上方的报错处理

Dockerfile

  1. FROM php:7.2
  2. # Version
  3. ENV PHPREDIS_VERSION 4.0.1
  4. ENV SWOOLE_VERSION 4.3.3
  5. ENV EASYSWOOLE_VERSION 3.x-dev
  6. # Timezone
  7. RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  8. && echo 'Asia/Shanghai' > /etc/timezone
  9. # Libs
  10. RUN apt-get update \
  11. && apt-get install -y \
  12. curl \
  13. wget \
  14. git \
  15. zip \
  16. libz-dev \
  17. libssl-dev \
  18. libnghttp2-dev \
  19. libpcre3-dev \
  20. && apt-get clean \
  21. && apt-get autoremove
  22. # Composer
  23. RUN curl -sS https://getcomposer.org/installer | php \
  24. && mv composer.phar /usr/local/bin/composer \
  25. && composer self-update --clean-backups
  26. # PDO extension
  27. RUN docker-php-ext-install pdo_mysql
  28. # Bcmath extension
  29. RUN docker-php-ext-install bcmath
  30. # Redis extension
  31. RUN wget http://pecl.php.net/get/redis-${PHPREDIS_VERSION}.tgz -O /tmp/redis.tar.tgz \
  32. && pecl install /tmp/redis.tar.tgz \
  33. && rm -rf /tmp/redis.tar.tgz \
  34. && docker-php-ext-enable redis
  35. # Swoole extension
  36. RUN wget https://github.com/swoole/swoole-src/archive/v${SWOOLE_VERSION}.tar.gz -O swoole.tar.gz \
  37. && mkdir -p swoole \
  38. && tar -xf swoole.tar.gz -C swoole --strip-components=1 \
  39. && rm swoole.tar.gz \
  40. && ( \
  41. cd swoole \
  42. && phpize \
  43. && ./configure --enable-async-redis --enable-mysqlnd --enable-openssl --enable-http2 \
  44. && make -j$(nproc) \
  45. && make install \
  46. ) \
  47. && rm -r swoole \
  48. && docker-php-ext-enable swoole
  49. WORKDIR /var/www/code
  50. # Install easyswoole
  51. RUN cd /var/www/code \
  52. && composer require easyswoole/easyswoole=${EASYSWOOLE_VERSION} \
  53. && php vendor/bin/easyswoole install
  54. EXPOSE 9501
  55. ENTRYPOINT ["php", "/var/www/code/easyswoole", "start"]

docker build Dockerfile 请自行百度

Hello World

在项目根目录下创建如下的目录结构,这个目录是编写业务逻辑的应用目录,编辑 Index.php 文件,添加基础控制器的代码

  1. project 项目部署目录
  2. ----------------------------------
  3. ├─App 应用目录
  4. └─HttpController 应用的控制器目录
  5. └─Index.php 默认控制器文件
  6. ----------------------------------
  1. <?php
  2. namespace App\HttpController;
  3. use EasySwoole\Http\AbstractInterface\Controller;
  4. class Index extends Controller
  5. {
  6. function index()
  7. {
  8. // TODO: Implement index() method.
  9. $this->response()->write('hello world');
  10. }
  11. }

然后编辑根目录下的 composer.json 文件,注册应用的命名空间

  1. {
  2. "autoload": {
  3. "psr-4": {
  4. "App\\": "App/"
  5. }
  6. },
  7. "require": {
  8. "easyswoole/easyswoole": "3.x-dev"
  9. }
  10. }

实际上就是注册App的名称空间

最后执行 composer dumpautoload 命令更新命名空间,框架已经可以自动加载 App 目录下的文件了,此时框架已经安装完毕,可以开始编写业务逻辑

  1. # 更新命名空间映射
  2. composer dumpautoload
  3. # 启动框架
  4. php easyswoole start

启动框架后,访问 http://localhost:9501即可看到 Hello World 。

关于IDE助手

由于 Swoole 的函数并不是PHP标准函数,IDE无法进行自动补全,为了方便开发,可以执行以下命令引入IDE助手,在IDE下即可自动补全 Swoole 相关的函数

  1. composer require easyswoole/swoole-ide-helper

目录结构

EasySwoole 的目录结构是非常灵活的,基本上可以任意定制,没有太多的约束,但是仍然建议遵循下面的目录结构,方便开发

  1. project 项目部署目录
  2. ├─App 应用目录(可以有多个)
  3. ├─HttpController 控制器目录
  4. └─Index.php 默认控制器
  5. └─Model 模型文件目录
  6. ├─Log 日志文件目录
  7. ├─Temp 临时文件目录
  8. ├─vendor 第三方类库目录
  9. ├─composer.json Composer架构
  10. ├─composer.lock Composer锁定
  11. ├─EasySwooleEvent.php 框架全局事件
  12. ├─easyswoole 框架管理脚本
  13. ├─easyswoole.install 框架安装锁定文件
  14. ├─dev.php 开发配置文件
  15. ├─produce.php 生产配置文件

如果项目还需要使用其他的静态资源文件,建议使用 Nginx / Apache 作为前端Web服务,将请求转发至 easySwoole 进行处理,并添加一个 Public 目录作为Web服务器的根目录

注意!请不要将框架主目录作为web服务器的根目录,否则dev.env,produce.env配置将会是可访问的,也可自行排除该文件(3.1.2已经改为dev.php,produce.php,但依旧建议设置到Public)

其他

  • QQ交流群

    • VIP群 579434607 (本群需要付费599元)
    • EasySwoole官方一群 633921431(已满)
    • EasySwoole官方二群 709134628
  • 商业支持:

    • QQ 291323003
    • EMAIL admin@fosuss.com
  • 作者微信

    框架安装 - 图1

  • 捐赠
    您的捐赠是对Swoole项目开发组最大的鼓励和支持。我们会坚持开发维护下去。 您的捐赠将被用于:

    • 持续和深入地开发
    • 文档和社区的建设和维护
  • easySwoole 的文档采用 GitBook 作为文档撰写工具,若您在使用过程中,发现文档有需要纠正 / 补充的地方,请 fork 项目的文档仓库,进行修改补充,提交 Pull Request 并联系我们