我大概發現了兩種Win10下正常開發的方法,各有所長,也各有所短。 我自己Windows系統是英文的,所有如果有那裡不對,請務必告訴我。
WSL就是一個寄生於Win10的Linux系統,它有被砍的七七八八的Linux核心,和你放在上面的Distro容器。一般大家都是用Ubuntu,因為其他的Distro跑的不太完美。
WSL的大問題是,沒有dbus,沒有systemd , 而且不是隨開機啟動,也就是說你要開機開service,需要另外想辦法。但是,畢竟還是Linux,所有Linux有的,它都有,所以PHP可以跑的比較順。
安裝WSL
怎麼裝啊?網上教程一籮筐, 都可以參考。我沒有中文版的Win10,所以,步驟如下, 抄自: ,沒截圖:
Win10控制皮膚被藏住了,所以 ctrl+r
, 然後輸入:control.
- 需要到 控制皮膚\所有控制皮膚項\程式和功能 中選擇 啟用或者關閉Windows功能
- 找到 適用於Linux的Windows子系統 並勾選,然後 確定 選擇 立即重新啟動
1a. 或者,你找得到Powershell的話,右鍵點選powershell,以管理員身份啟動 (求大神告訴我這個選項中文到底是什麼),然後跑:Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
- 去Windows商店,搜尋 Ubuntu, 然後安裝上去。
ctrl+r
, 然後輸入:ubuntu
, 等待安裝完畢,如果看到卡了超過一分鐘,按按enter鍵(嗯,自帶terminal會卡)。
這裡我必須要吐槽Windows10自帶的兩個Terminal,這都9102年了……所以,推薦大家安裝 Hyper 或者 Terminus ,大家選個自己覺得好看的吧。雖然這倆都是英文的,但是Terminal,有沒有中文真的無所謂。尤其是Hyper,配置就是個js檔案。 不然,接下來的步驟等的時候無法喝茶,需要坐在電腦前面按回車。
等你的Ubuntu弄好了以後,切換到剛安裝的Terminal,接下來的,裝Valet,都是從這裡翻譯的 (我貌似改了一點?)
- 安裝 Acrylic DNS Proxy.
- 下載 WSL Startup Scripts. (此步驟,我命名為步驟0)
- 開啟某個 terminal.
- 執行
sudo visudo
. - 把這兩行加入(如果已經存在,就覆蓋),如果不會vi,找到相應的行,按
i
,然後編輯,然後esc
>:wq'
> 回車:ALL ALL = (root) NOPASSWD: /usr/sbin/service
和username ALL=(ALL) NOPASSWD: ALL
- 執行
sudo add-apt-repository ppa:ondrej/php
. - 執行
sudo apt-get update && sudo apt-get upgrade
- 執行
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
去掉,然後:
sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository "deb [arch=amd64,arm64,ppc64el] http://mariadb.mirror.liquidtelecom.com/repo/10.4/ubuntu $(lsb_release -cs) main"
sudo apt update && sudo apt -y install mariadb-server mariadb-client
MySql
mysql_secure_installation
無法正常執行,所以:
- 執行
sudo usermod -d /var/lib/mysql/ mysql
- 執行
sudo mysqladmin -u root -h localhost password examplepass
- 執行
sudo service mysql start
Node
- 執行
curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh
. - 執行
sudo bash nodesource_setup.sh
. - 執行
sudo apt-get install nodejs
.
Yarn
- 執行
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
. - 執行
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
. - 執行
sudo apt-get update && sudo apt-get install yarn
.
Composer
- 執行
wget https://getcomposer.org/installer
. - 執行
php installer
. - 執行
sudo mv composer.phar /usr/local/bin/composer
.
Valet WSL
- 執行
composer global require valeryan/valet-wsl
.
Bash Config
- 執行
vi ~/.bash_aliases
. - 執行
export PATH=~/.composer/vendor/bin:$PATH
. - 執行
source ~/.bashrc
.
Acrylic 設定 (回Windows)
- 在Windows內 , 按下 windows 鍵 ,輸入 Acrylic, 開啟 Acrylic UI
- 找到 Edit Acrylic Host File, 把
127.0.0.1 *.test
放到最後一行,並儲存 - 選單,找到Actions(第二個), 按 Restart Acrylic Service
Valet 設定 (WSL)
- 執行
valet install
. - 找到你Laravel目錄, 然後執行
valet park
,valet link
. - 看好不好使,去Chrome 輸入 folder.test. (此處folder是你目錄的名字)
- 如果需要SSL,執行
valet secure
.
Valet 設定 (Windows)
ctrl+r
, 輸入 C:/tools/valet/certs/, 雙擊 install_certs.cmd檔案。這個會安裝一個root ca,所以你可以用自己的cert- 去chrome試試https?
WSL 設定 (Windows內)
- 把你從步驟0下載到的檔案放進: C:/tools/wsl-startup/.
- 調整你的 services.sh, 這個裡面包括了你所有需要的服務
win+r
>taskschd.msc
, 建立一個新的任務,登入時執行 bash-start.vbs- 重啟試試,你現在可以直接進入Chrome ,
設定 Cron
1 執行 sudo crontab -e
.
栗子
*/5 * * * * php /mnt/c/username/Projects/folder/artisan schedule:run >> /dev/null 2>&1
這個方法,簡單暴力,我覺得是蠻方便的,而且你想要多少格域名,就多少個域名。而且對於我這種Ubuntu小白,及其友好(Fedora裡面Service沒法用)。感覺和Linux原生差不多了。這裡提幾點:
- Composer,PHP, Artisan一定要在WSL內跑,千萬不能用Windows跑,那個路徑會衝突。
- Ubuntu進去,預設的目錄,是你Windows使用者目錄,而非你的
home
目錄。你的home
目錄還在,你的ssh密匙,.bashrc什麼的都在那裡。 - 建議把專案放在Windows使用者目錄內(不然Windows 開啟和讀寫有困難),建議目錄改成區分大小寫的,需要管理員許可權執行 cmd ,然後
fsutil.exe file setCaseSensitiveInfo “C:\my folder” enable
, “C:\my folder” 改成你自己的目錄。
下一篇,我們轉戰Docker。嘿嘿……