Win10 下 Laravel 開發方法一:WSL

Shuyi發表於2019-05-22

我大概發現了兩種Win10下正常開發的方法,各有所長,也各有所短。 我自己Windows系統是英文的,所有如果有那裡不對,請務必告訴我。

WSL就是一個寄生於Win10的Linux系統,它有被砍的七七八八的Linux核心,和你放在上面的Distro容器。一般大家都是用Ubuntu,因為其他的Distro跑的不太完美。

WSL的大問題是,沒有dbus,沒有systemd , 而且不是隨開機啟動,也就是說你要開機開service,需要另外想辦法。但是,畢竟還是Linux,所有Linux有的,它都有,所以PHP可以跑的比較順。

安裝WSL

怎麼裝啊?網上教程一籮筐, 都可以參考。我沒有中文版的Win10,所以,步驟如下, 抄自: ,沒截圖:
Win10控制皮膚被藏住了,所以 ctrl+r , 然後輸入:control.

  1. 需要到 控制皮膚\所有控制皮膚項\程式和功能 中選擇 啟用或者關閉Windows功能
  2. 找到 適用於Linux的Windows子系統 並勾選,然後 確定 選擇 立即重新啟動
    1a. 或者,你找得到Powershell的話,右鍵點選powershell,以管理員身份啟動 (求大神告訴我這個選項中文到底是什麼),然後跑:
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  3. 去Windows商店,搜尋 Ubuntu, 然後安裝上去。
  4. ctrl+r , 然後輸入:ubuntu, 等待安裝完畢,如果看到卡了超過一分鐘,按按enter鍵(嗯,自帶terminal會卡)。

這裡我必須要吐槽Windows10自帶的兩個Terminal,這都9102年了……所以,推薦大家安裝 Hyper 或者 Terminus ,大家選個自己覺得好看的吧。雖然這倆都是英文的,但是Terminal,有沒有中文真的無所謂。尤其是Hyper,配置就是個js檔案。 不然,接下來的步驟等的時候無法喝茶,需要坐在電腦前面按回車。

等你的Ubuntu弄好了以後,切換到剛安裝的Terminal,接下來的,裝Valet,都是從這裡翻譯的 (我貌似改了一點?)

  1. 安裝 Acrylic DNS Proxy.
  2. 下載 WSL Startup Scripts. (此步驟,我命名為步驟0
  1. 開啟某個 terminal.
  2. 執行 sudo visudo.
  3. 把這兩行加入(如果已經存在,就覆蓋),如果不會vi,找到相應的行,按i,然後編輯,然後 esc > :wq'> 回車:
    ALL ALL = (root) NOPASSWD: /usr/sbin/serviceusername ALL=(ALL) NOPASSWD: ALL
  4. 執行 sudo add-apt-repository ppa:ondrej/php.
  5. 執行 sudo apt-get update && sudo apt-get upgrade
  6. 執行 sudo apt-get install network-manager libnss3-tools jq xsel build-essential libssl-dev dnsmasq nginx php-fpm php-cli php-mysql php-sqlite3 php-intl php-zip php-xml php-curl php-mbstring redis-server php-redis php-pear php7.2-dev pkg-config libz-dev libzip-dev libmemcached-dev libmemcached11 libmemcachedutil2 libmagickwand-dev imagemagick memcached mysql-server

如果需要裝MariaDB
把上面的mysql-server去掉,然後:

  1. sudo apt-get install software-properties-common
  2. sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
  3. sudo add-apt-repository "deb [arch=amd64,arm64,ppc64el] http://mariadb.mirror.liquidtelecom.com/repo/10.4/ubuntu $(lsb_release -cs) main"
  4. sudo apt update && sudo apt -y install mariadb-server mariadb-client

MySql

mysql_secure_installation 無法正常執行,所以:

  1. 執行 sudo usermod -d /var/lib/mysql/ mysql
  2. 執行 sudo mysqladmin -u root -h localhost password examplepass
  3. 執行 sudo service mysql start

Node

  1. 執行 curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh.
  2. 執行 sudo bash nodesource_setup.sh.
  3. 執行 sudo apt-get install nodejs.

Yarn

  1. 執行 curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -.
  2. 執行 echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list.
  3. 執行 sudo apt-get update && sudo apt-get install yarn.

Composer

  1. 執行 wget https://getcomposer.org/installer.
  2. 執行 php installer.
  3. 執行 sudo mv composer.phar /usr/local/bin/composer.

Valet WSL

  1. 執行 composer global require valeryan/valet-wsl.

Bash Config

  1. 執行 vi ~/.bash_aliases.
  2. 執行 export PATH=~/.composer/vendor/bin:$PATH.
  3. 執行 source ~/.bashrc.

Acrylic 設定 (回Windows)

  1. 在Windows內 , 按下 windows 鍵 ,輸入 Acrylic, 開啟 Acrylic UI
  2. 找到 Edit Acrylic Host File, 把 127.0.0.1 *.test 放到最後一行,並儲存
  3. 選單,找到Actions(第二個), 按 Restart Acrylic Service

Valet 設定 (WSL)

  1. 執行 valet install.
  2. 找到你Laravel目錄, 然後執行 valet park, valet link.
  3. 看好不好使,去Chrome 輸入 folder.test. (此處folder是你目錄的名字)
  4. 如果需要SSL,執行 valet secure.

Valet 設定 (Windows)

  1. ctrl+r, 輸入 C:/tools/valet/certs/, 雙擊 install_certs.cmd檔案。這個會安裝一個root ca,所以你可以用自己的cert
  2. 去chrome試試https?

WSL 設定 (Windows內)

  1. 把你從步驟0下載到的檔案放進: C:/tools/wsl-startup/.
  2. 調整你的 services.sh, 這個裡面包括了你所有需要的服務
  3. win+r > taskschd.msc , 建立一個新的任務,登入時執行 bash-start.vbs
  4. 重啟試試,你現在可以直接進入Chrome ,

設定 Cron

1 執行 sudo crontab -e.

栗子

*/5 * * * * php /mnt/c/username/Projects/folder/artisan schedule:run >> /dev/null 2>&1

這個方法,簡單暴力,我覺得是蠻方便的,而且你想要多少格域名,就多少個域名。而且對於我這種Ubuntu小白,及其友好(Fedora裡面Service沒法用)。感覺和Linux原生差不多了。這裡提幾點:

  1. Composer,PHP, Artisan一定要在WSL內跑,千萬不能用Windows跑,那個路徑會衝突。
  2. Ubuntu進去,預設的目錄,是你Windows使用者目錄,而非你的home目錄。你的home目錄還在,你的ssh密匙,.bashrc什麼的都在那裡。
  3. 建議把專案放在Windows使用者目錄內(不然Windows 開啟和讀寫有困難),建議目錄改成區分大小寫的,需要管理員許可權執行 cmd ,然後 fsutil.exe file setCaseSensitiveInfo “C:\my folder” enable , “C:\my folder” 改成你自己的目錄。

下一篇,我們轉戰Docker。嘿嘿……

Software Engineer Practices above all
軟體開發標準高於一切

相關文章