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