Windows 下 Swoole開發環境配置

一直停留在windows,入了 jetbrains 的全家桶。準備入門 Swoole,不可能每作一點修改就 git push 運行一下。所以要在 windows 上配置 swoole 運行環境。對比了幾種 windows 下 linux環境 的搭建php

BashOnWindows

須要 windows 10
安裝很簡單,參考bash on windows 安裝教程(win 10)
可能因爲windows升級,個人版本在 CMD 輸入 bash 後只提示去應用商店下載,沒有 [Y/N] 選項。打開應用商店搜索下載 UBUNTU 就好了。linux

# 先升級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 git

BashOnWindows 環境下必須關閉 daemonize 選項
須要修改 config.h 關閉 HAVE_SIGNALFDdocker

# install 改成 download,由於須要手動修改一個配置
pecl download swoole
# 解壓 cd 進 swoole 目錄
vi config.M4
#找到 HAVE_SIGNALFD 那一行,刪掉
# 編譯
phpize
./configure
make
make install

【優勢】shell

  • windows10 自帶,安裝無腦
  • 完整的 ubuntu 環境,自由度較高

【缺點】ubuntu

  • 權限問題,要不停的 sudo(好吧多是我被root慣壞了)
  • 怎麼開多個shell窗口?

Docker on Windows

Docker 是什麼就不贅述了,不論是開發調試仍是線上運行都是很讚的沙盒容器。
我是windows10系統,直接選了官方的 DockerForWindows CE
其餘windows版本的 docker 沒有研究。先後在兩臺windows上安裝部署docker+swoole鏡像,一臺部署成功後重啓就掛掉了。一臺部署成功運行ok。這裏講一下掛掉那臺的歷程:windows

  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 運行你的鏡像,而且綁定端口,掛載本地文件夾到容器中。
    而後問題來了bash

    firewall is blocking file Sharing between Windows and the containers.
    swoole

一看到防火牆就想固然的去擺弄防火牆設置,搜了一大堆解決方法。網絡

  • 研究防火牆規則(歧途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 沒嘗試過。

相關文章
相關標籤/搜索