• Windows 下 Swoole开发环境配置


    一直停留在windows,入了 jetbrains 的全家桶。准备入门 Swoole,不可能每做一点修改就 git push 运行一下。因此要在 windows 上配置 swoole 运行环境。对比了几种 windows 下 linux环境 的搭建

    BashOnWindows

    需要 windows 10
    安装很简单,参考bash on windows 安装教程(win 10)
    可能由于windows升级,我的版本在 CMD 输入 bash 后只提示去应用商店下载,没有 [Y/N] 选项。打开应用商店搜索下载 UBUNTU 就行了。

    # 先升级apt-get ,不然很多包会找不到
    sudo apt-get update
    sudo apt-get install php7.0 php7.0-curl #... 所有其他你需要的扩展
    # pecl 需要 php-pear
    sudo apt install php-pear
    # 可能提示 phpize 错误,需要 php-dev
    pecl install swoole
    # 按照提示安装 php7.0-dev
    sudo apt install php7.0-dev
    # 安装swoole
    pecl install swoole
    # 权限不够,直接 vi 新建
    # 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
    

    升级apt-get,保证可以找到最新的包
    /mnt/ 挂载了所有盘符,直接cd相应的目录开始吧
    **官方说 BashOnWindows 需要关闭 daemonize **

    BashOnWindows 环境下必须关闭 daemonize 选项
    需要修改 config.h 关闭 HAVE_SIGNALFD

    # install 改为 download,因为需要手动修改一个配置
    pecl download swoole
    # 解压 cd 进 swoole 目录
    vi config.M4
    #找到 HAVE_SIGNALFD 那一行,删掉
    # 编译
    phpize
    ./configure
    make
    make install
    

    【优点】

    • windows10 自带,安装无脑
    • 完整的 ubuntu 环境,自由度较高

    【缺点】

    • 权限问题,要不停的 sudo(好吧可能是我被root惯坏了)
    • 怎么开多个shell窗口?

    Docker on Windows

    Docker 是什么就不赘述了,不管是开发调试还是线上运行都是很赞的沙盒容器。
    我是windows10系统,直接选了官方的 DockerForWindows CE
    其他windows版本的 docker 没有研究。前后在两台windows上安装部署docker+swoole镜像,一台部署成功后重启就挂掉了。一台部署成功运行ok。这里讲一下挂掉那台的历程:

    1. 安装DockerForWindows,提示开启 Hyper-V 服务,重启。成功运行Docker,下载 swoole 镜像。运行镜像:
      docker run --rm -t -i --name myapp -p 9501:9501 -v [windows路径如 e/workspace/swoole]:[挂载路径如/data]:rw [swoole image] /bin/bash
      各种参数可以 docker --help查到。这条命令的作用是开始在 docker 运行你的镜像,并且绑定端口,挂载本地文件夹到容器中。
      然后问题来了

    firewall is blocking file Sharing between Windows and the containers.

    一看到防火墙就想当然的去摆弄防火墙设置,搜了一大堆解决方法。

    • 研究防火墙规则(歧途1)
    • 研究445端口(歧途2,导致后续一堆蝴蝶效应)
    • 重新安装网络连接的 windows文件夹和打印机共享协议。(歧途3,实际上已经摸到边了)

    【解决过程】
    Docker 的图标有个 setting ,里面可以设置共享的盘符。
    通过这么多的百度大致了解docker和windows是通过虚拟网卡(Hyper-V)来建立网络连接。
    那么要在Docker容器中挂载windows文件,需要通过 网络文件夹共享。这也是为什么那么多的解决方式是告诉我重新安装 windows文件夹和打印机共享协议就解决了问题。
    所以问题原因最终是因为,

    我要共享的盘没开启网络共享

    点开文件夹属性 -> 共享。docker -> setting -> 勾选要共享的盘。然后运行容器,well done!
    【万劫不复】
    因为前面尝试各种解决方法的时候,【修改过注册表】,【删除了Hyper-V虚拟网卡】,机器重启之后Docker 无法启动,查看日志大概是在NAT-switch的时候创建失败。查看Hyper-V管理器,【虚拟交换机管理】已经无法打开。多次卸载重装无果,最终放弃了DockerForWindows.
    后来在家自己的windows10安装,一切顺利。

    【优点】

    • docker容器镜像资源很多,一键安装,无脑部署
    • 顺便熟悉下docker的使用
    • 没有权限问题

    【缺点】

    • 每次启动镜像要输一堆命令,共享盘符被坑了

    非window10, cygwin,其他docker on windows

    cygwin这里不做介绍了。
    其他的docker on windows 没尝试过。

  • 相关阅读:
    BZOJ 3236: [Ahoi2013]作业
    BZOJ 3234: [Ahoi2013]立方体
    BZOJ 3235: [Ahoi2013]好方的蛇
    Hadoop 系列HDFS的Java API( Java API介绍)
    Hadoop 系列 HDFS 的JavaAPI Windows+IDEA+HDFS快速入门
    Hadoop 系列 HDFS:分布式文件系统(HDFS参数解读)
    Hadoop 系列 HDFS:分布式文件系统(HDFS集群模式)
    Hadoop 系列 HDFS:分布式文件系统(HDFS文件读写)
    Hadoop 系列 HDFS:分布式文件系统( HDFS概述)
    Hadoop中DataNode没有启动解决办法
  • 原文地址:https://www.cnblogs.com/dapianzi/p/8438457.html
Copyright © 2020-2023  润新知