我一直在尝试在新安装的 Ubuntu 18.04 上设置开发环境,但遇到了 Nginx 和 Apache 的问题。
首先,我安装了 Apache2。一切似乎都正常。
然后我安装了 Composer、Laravel 和 Valet。运行时valet install
出现以下消息:
[nginx] is not installed, installing it now via Apt...
答案1
我摆弄了一会儿然后就跑了sudo apt-get remove nginx-core nginx-full nginx-light nginx-extras nginx-naxsi nginx-common
。
然而,netstat 仍然显示 nginx 仍在运行:
tcp6 0 0 :::80 :::* LISTEN 2151/nginx: master
所以此时我重新启动了我的计算机,当我运行 netstat 时,它只显示 apache 正在运行并在端口 80 上监听。因此我停止了 apache 并运行,valet install
并且 valet 安装成功。
我不知道这里该得出什么结论,除了在任何情况下都不应该在 apache2 在后台运行时尝试通过 valet 安装 nginx。
我唯一剩下的问题是为什么我必须进行完全系统重启才能解决这个问题。
答案2
Ubuntu 18.04。端口 80 用于另一个进程。
netstat -ltnp | grep -w ':80'
tcp6 0 0 :::80 :::* LISTEN 4114/httpd
在我的情况下,pid 进程 4114 对应于程序 nextcloud。(我错误地在 nginx 之前安装了它,而 nginx 是先决条件)。然后,如果您不想更改 nexcloud 或其他进程的配置,或者不想终止它(无论如何,这两种方法都是不错的选择),则必须更改 nginx 默认配置中的端口。编辑文件:
sudo gedit /etc/nginx/sites-enabled/
在该文件的开头,注释之后,你会发现两行:
server {
listen 80 default_server;
listen [::]:80 default_server;
如果您愿意将 81 作为 nginx 的端口,请编辑该文件并将 80 改为 81。即使 apache2 在同一系统中运行并且已经拥有该标准端口,此编辑仍然有效。如果任何其他进程占用了端口 80,则必须在安装其他程序(如 nginx)之前将其停止。在 Ubuntu 18.04 上,您会收到依赖性错误,这些错误几乎不可能清除,但原因只是 nginx 无法使用标准端口 80。如果您不想卸载占用端口 80 的进程,那么您至少要在执行某些操作之前将其终止:
fuser -k -n tcp 80