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