在适用于 Linux 的 Windows 子系统上安装 Apache
Posted
技术标签:
【中文标题】在适用于 Linux 的 Windows 子系统上安装 Apache【英文标题】:Installing Apache on Windows Subsystem for Linux 【发布时间】:2016-07-27 22:36:36 【问题描述】:刚刚更新到最新的 Windows 10 版本(内部版本 14316),我立即开始使用 WSL,这是适用于 Linux 的 Windows 子系统,它应该在 Windows 上运行 Ubuntu 安装。
也许我通过尝试在其上安装 Apache 来尝试不可能的事情,但是有人请解释我为什么这不可能。
无论如何,在安装过程中(sudo apt-get install apache2),在正确下载并安装依赖项后,我收到以下错误消息:
initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: No such file or directory
runlevel:/var/run/utmp: No such file or directory
* Starting web server apache2 *
* The apache2 configtest failed.
Output of config test was:
mktemp: failed to create directory via template '/var/lock/apache2.XXXXXXXXXX': No such file or directory
chmod: missing operand after '755'
Try 'chmod --help' for more information.
invoke-rc.d: initscript apache2, action "start" failed.
Setting up ssl-cert (1.0.33) ...
Processing triggers for libc-bin (2.19-0ubuntu6.7) ...
Processing triggers for ureadahead (0.100.0-16) ...
Processing triggers for ufw (0.34~rc-0ubuntu2) ...
WARN: / is group writable!
现在,我了解到似乎缺少一些文件夹和文件,Apache2 无法正常工作。在我开始更改任何会影响我的 Windows 安装的东西之前,我想问一下是否有不同的方法?另外,我应该担心/被组可写还是这只是标准的 Windows 行为?
【问题讨论】:
mkdir /var/run/httpd 【参考方案1】:请注意输出中的以下内容
failed to create directory via template '/var/lock/apache2.XXXXXXXXXX': No such file
我尝试列出 /var/lock。它指向/run/lock,它不存在。
用
创建目录mkdir -p /run/lock
现在应该可以安装了(您可能需要先清理安装)
【讨论】:
谢谢。我试过这个,但它仍然给我错误,最值得注意的是: initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: No such file or directory [Mon Apr 11 01:30:25.532677 2016] [core:crit] [pid 3046:tid 140694537176960] (22)无效参数:AH00069:make_sock:地址 [::]:80,apr_socket_opt_set:(IPV6_V6ONLY) (22)无效参数:AH00072:make_sock:无法绑定到地址 0.0.0.0:80 没有可用的监听套接字,正在关闭 AH00015:无法打开日志 您是否有可能在端口 80 上侦听另一台服务器?我知道这是微不足道的,但它发生在我们最好的人身上。尝试更改 conf 文件中的侦听套接字? 你的方法对我有用。但是,我仍然遇到这两个错误,但是 apache 已启动并正在运行 :)!:[Tue Apr 12 12:31:22.726611 2016] [core:crit] [pid 979:tid 140694537176960] (22)Invalid argument: AH00069: make_sock: for address [::]:80, apr_socket_opt_set: (IPV6_V6ONLY)
和 [Tue Apr 12 12:31:22.726611 2016] [core:warn] [pid 979:tid 140694537176960] (22)Invalid argument: AH00076: Failed to enable APR_TCP_DEFER_ACCEPT
在端口 100 上运行它有效。产生与 Laurens 报告的相同的错误,但仍然有效。但是,我看不到端口 80 上运行的内容。 lsof -i :80 不返回任何内容(lsof -i 也不返回)。
你是对的,Skype 正在监听 80 端口。非常感谢【参考方案2】:
为了消除这个警告
Invalid argument: AH00076: Failed to enable APR_TCP_DEFER_ACCEP
将此添加到/etc/apache2/apache2.conf
的末尾
AcceptFilter http none
【讨论】:
这到底是做什么的? 这是我需要的。谢谢! @megamaiku 这是警告,详情请看:github.com/microsoft/WSL/issues/1953【参考方案3】:你必须以管理员模式启动 bash.exe 以避免很多与网络相关的问题。 我安装 Lamp (Apache/mysql/php) 没有任何问题:
以管理员模式启动 bash.exe
类型:sudo apt-get install lamp-server^
在 /etc/apache2/apache2.conf 中添加这两行:
服务器名称本地主机
AcceptFilter http none
然后你就可以启动 apache 了: /etc/init.d/apache2 启动
【讨论】:
感谢您的信息。即使没有管理员模式,这也适用于我。唯一的区别是,我在安装后立即重新启动了 Apache。 @MarisB。完全正确。您需要在安装后立即重新启动服务以使其正常工作。 我尝试了 sudo apt-get install lamp-server 但它无法获取 php 包并且似乎没有 apache2 目录所以我认为一旦它无法获得剩余的 30 整个事情就会失败包裹的百分比。404 Not Found [IP: 91.189.88.149 80] Err:7 http://security.ubuntu.com/ubuntu bionic-updates/main amd64 php7.2-mysql amd64 7.2.17-0ubuntu0.18.04.1 404 Not Found [IP: 91.189.88.149 80] E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/p/php7.2/php7.2-common_7.2.17-0ubuntu0.18.04.1_amd64.deb 404 Not Found [IP: 91.189.88.149 80]
E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/p/php7.2/libapache2-mod-php7.2_7.2.17-0ubuntu0.18.04.1_amd64.deb 404 Not Found [IP: 91.189.88.149 80] E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/p/php7.2/php7.2-mysql_7.2.17-0ubuntu0.18.04.1_amd64.deb 404 Not Found [IP: 91.189.88.149 80] E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
【参考方案4】:
按照这里的好建议,我编辑了 apache2.conf 并在收到上述所有各种错误后将以下内容插入到文件末尾,然后 apache2 在 debian wsl 包上运行良好:
Servername localhost
AcceptFilter http none
AcceptFilter https none
【讨论】:
以上是关于在适用于 Linux 的 Windows 子系统上安装 Apache的主要内容,如果未能解决你的问题,请参考以下文章
适用于 Linux 的 Windows 子系统安装指南 (Windows 10) (微软官方文档)
Anaconda Python virtualdev 在适用于 Linux 的 Windows 子系统(Ubuntu 14.04)上找不到 libpython3.5m.so.1.0