摘要:微軟前些日子公布了下簡稱,當時還只有支持安裝,作為普通用戶的我就沒有嘗試。解決方案有待進一步發掘。按照剛剛發布的報告,微軟已經是開源貢獻第一大公司,擁抱之后我們也可以在下進行開發了。
微軟前些日子公布了 Windows Subsystem Linux(下簡稱WSL),當時還只有 Insider Preview 支持安裝,作為普通用戶的我就沒有嘗試。這兩天不知道伴隨哪次更新,標準的專業版也可以安裝了,就試著配了一下,發現效果還比較理想,基本可以替代之前的 IIS 或者 VirtualBox 方案。這里簡單記錄一下。
(2016-12-02 更新)隨著最近一次 1607 更新,家庭版也可以安裝了,效果基本一樣。
安裝 WSL開始 > 設置 > 系統 > 應用和功能 > 拖到最下面“程序和功能”。然后點擊“啟用或關閉 Windows 功能”,找到“適用于 Linux 的 Windows 子系統(beta)”,啟動之。
之后系統會要求重啟,聽它的。
然后打開命令行(或者 PowerShell,下同),輸入 bash,提示需要切換到開發者模式。按照提示切過去,然后再次運行 bash,系統會安裝需要的組件。這個過程會比較久,大概源都在國外吧。安裝完成后又要重啟,之后 WSL 就算安裝成功。
再次打開命令行,輸入 bash,就可以進入 Linux 子系統了。
安裝 PHP,配置ApacheWSL 其實就是 Ubuntu 14.04.5,所以安裝包直接用 apt-get 就可以。嫌慢的話可以換上國內的源,不趕時間就讓它慢慢更新。
sudo apt-get update sudo apt-get upgrade
然后添加 PHP 源。
sudo add-apt-repository ppa:ondrej/php
需要注意,以前那個 ppa:ondrej/php5-5.6 的源已經被移除了,5.5 到 7.1 都用 ondrej/php 這個新源。如果非要用 5.4 的話,還有個 php5-oldstable 的源。
這里順便把幾個可能用到的組件也裝上。
sudo apt-get install php sudo apt-get install php-mysql sudo apt-get install php-xdebug sudo apt-get install php-apcu sudo apt-get install php-xml sudo apt-get install php-mcrypt
這次我本來打算用 Nginx,裝上之后啟動不了,Google 之,似乎是 WSL 對 IP v6 的支持有問題,遂卸掉繼續用 Apache。反正本地開發嘛,性能并發不是什么問題。
Ubuntu 自帶 Apache 2.4.7,直接 sudo service apache2 start 啟動就好。不過這里遭遇到 vhost 的問題,我配置的虛機怎么都不生效,最后在 stack overflow 上找到解決方案,說是 000-default 和自定義的主機沖突,禁用掉默認配置就好了。
sudo a2enmod vhost_alias sudo a2dissite 000-default sudo a2ensite 001-mysite
然后還需要調整一下模塊,比如要進行 WordPress 開發,就要保證重定向生效。
sudo a2enmod php7.1 sudo a2enmod rewrite
另外,Apache 2.4 要求配置目錄的“訪問條件”,不然不能訪問(會返回 “403 Forbidden”,改目錄權限也沒有用),所以要增加一行:
... Require all granted # 允許所有來源 AllowOverride All # 允許重定向,WordPress 必備 ...
全部配置好之后,重啟 apache,訪問配置的域名,就可以了。
使用 cmder 替換 PowerShellPowerShell 也好,自帶的命令行也好,都不好用。要么字體難看得要死,要么中文輸入有問題,而且不支持多窗口。這里推薦 cmder,很好用,體驗提升明顯。
cmder 支持打開窗口并執行啟動腳本,可以一鍵進入 Linux 控制臺,只要按下圖進行配置即可。
然后再修改啟動時默認的 tab。
啟用 Ruby這個版本的 Ubuntu 集成了 rvm,通過 rvm list 可以看到已經安裝了 Ruby 2.3.0。但是直接運行 ruby 卻提示沒有安裝,運行 rvm use 2.3.0 提示
RVM is not a function, selecting rubies with "rvm use ..." will not work.
You need to change your terminal settings to allow shell login.
Please visit https://rvm.io/workflow/screen/ for example.
這個很奇怪,以前沒有遇見過。通過 Google 得知,這是因為默認的登錄方式沒有讀取 ~/.bash_login 里的配置信息,沒有加載到 rvm 需要的方法,所以需要在啟動 WSL 的時候增加參數 --login,所以回到上一步,修改啟動腳本,問題解決。
%windir%system32ash.exe ~ -cur_console:p --login
(這里我還去掉了zsh,因為這臺電腦似乎沒有安裝這個包,我不知道是不是默認不安裝的問題。)
安裝 MySQL原以為安裝 MySQL 最簡單,沒想到也有坑……主要是 5.7 的坑。
我比較喜歡新版本,所以自然就準備上 5.7。Ubuntu 自帶的源是 5.5 或者 5.6,所以要先更新一下:
wget http://dev.mysql.com/get/mysql-apt-config_0.6.0-1_all.deb sudo dpkg -i mysql-apt-config_0.6.0-1_all.deb sudo apt-get update
好了,接下來直接安裝就好:
sudo apt-get install mysql-server
根據提示信息安裝 MySQL Server 5.7,設置 root 密碼。這個階段多半不會出問題。安裝完成之后,運行 mysql -uroot -p,輸入剛才設置的密碼,不出意外的話就可以進入 MySQL 控制臺了。
接下來我們通常要設置開發用戶,此時問題也就來了。(這個問題在我的幾臺機器上,包括 VPS 表現不一,時有時無,所以我不太確定到底什么情況下會發生。)
CREATE USER "someone"@"localhost" IDENTIFIED BY "password";
執行這句 SQL 將創建一個用戶,看起來完全不會有問題,結果卻報錯了:ERROR 1054 (42S22): Unknown column "plugin" in "mysql.user"(報錯的列可能不同,但原因是一樣的)。Google 之,原來隨著 MySQL 版本升級,系統內建表的結構也發生著變化,5.7 需要的字段比起 5.5 甚至 5.4 多了不少。雖然我們直接安裝的 5.7,也不耽誤它按照老的結構創建表……
這個時候有兩個選擇,一是手工把差的列加上,另一個則是運行官方提供的升級腳本 mysql_upgrade。為表達對官方的信任,我選擇了后者。退出 MySQL,回到 SSH,執行腳本:
mysql_upgrade --upgrade-system-tables -u root -p
升級完成之后,再 mysql -uroot -p,輸入密碼,登錄不進去了!WTF!怎么回事?!
又是一通 Google,原來 5.7 之后,開發團隊移除了 mysql.user 表里的 password 字段,用 authentication_string 取而代之,然而這個字段并沒有復制之前 password 的值,所以原來的密碼就失效了!這是什么鬼……
這里我們又有兩個選擇,一是想辦法修改 root 密碼,二是卸了重裝……因為我當時沒找到真正的原因(就是上面這個),所以選擇了后者。現在我推薦一個解決方案:
安裝后,進入 MySQL 控制臺,輸入 DESC mysql.user;
如果返回 45 rows(行),則不需要升級系統內建表,改干嘛干嘛;如果少于這個數,就要執行 mysql_upgrade
剛才的窗口不要動,新開一個窗口,執行 mysql_upgrade --upgrade-system-tables -u root -p
執行完畢回到剛才的窗口,在 MySQL 環境下執行
UPDATE `mysql`.`user` SET `authentication_string`=PASSWORD("password") WHERE `user`="root";文件互訪
在 WSL 里訪問系統中的文件比較容易,使用 /mnt/盤符/路徑 即可。
如果要在 Windows 里訪問 WSL 里的文件,它們位于 `C:Users你的用戶名AppDataLocallxss`
有待解決的問題有了 WSL,各種依賴 Linux 環境的東西都可以隨便跑了,利用 apt-get 安裝更新也都很方便。偵聽端口要完全沒有問題。但其實兩個環境是隔絕的,Windows 里不能執行 Ubuntu 的東西,反之亦然。這樣一來,諸如 Phpstorm 的 File Watcher 包括測試都無法正常發揮作用。解決方案有待進一步發掘。
臨時解決方案就是通過命令行啟動各種 watch,比如
sass watch總結
時代在發展,科技在進步。按照 GitHub 剛剛發布的報告,微軟已經是開源貢獻第一大公司,Windows 擁抱 Linux 之后我們也可以在 Windows 下進行 PHP 開發了。世界真美好啊!
順便Ubuntu新版本也比老版本容易配置了,當然,也可能是我之前不會。
首發于我的博客,兩邊盡量同步更新。
http://blog.meathill.com/tech...
參考:
The main PPA for PHP (5.5, 5.6, 7.0) with many PECL
Support for the new Windows 10 bash shell
手把手安裝 RVM 以及為什么 RVM is not a function
How To Install MySQL on Ubuntu 14.04
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/35795.html
摘要:微軟前些日子公布了下簡稱,當時還只有支持安裝,作為普通用戶的我就沒有嘗試。解決方案有待進一步發掘。按照剛剛發布的報告,微軟已經是開源貢獻第一大公司,擁抱之后我們也可以在下進行開發了。 微軟前些日子公布了 Windows Subsystem Linux(下簡稱WSL),當時還只有 Insider Preview 支持安裝,作為普通用戶的我就沒有嘗試。這兩天不知道伴隨哪次更新,標準的專業版...
閱讀 2440·2021-11-23 09:51
閱讀 1867·2021-10-13 09:40
閱讀 1372·2021-09-30 10:01
閱讀 590·2021-09-26 09:46
閱讀 2232·2021-09-23 11:55
閱讀 1385·2021-09-10 10:51
閱讀 2240·2021-09-09 09:33
閱讀 2227·2019-08-29 17:25