Я пытался настроить dev среду на новой установке Ubuntu 18.04, и я сталкиваюсь с проблемой с Nginx и Apache.
Во-первых, я установил Apache2. Все казалось в порядке.
Затем я установил Компоновщик, Laravel и Камердинера. Выполнение valet install
дал мне следующее сообщение:
[nginx] is not installed, installing it now via Apt...
Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
nginx
0 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
1 not fully installed or removed.
Need to get 0 B/25.2 kB of archives.
After this operation, 36.9 kB of additional disk space will be used.
Selecting previously unselected package nginx.
(Reading database ... 172679 files and directories currently installed.)
Preparing to unpack .../nginx_1.14.0-0+bionic0_all.deb ...
Unpacking nginx (1.14.0-0+bionic0) ...
Setting up nginx-full (1.14.0-0+bionic0) ...
Job for nginx.service failed because the control process exited with error
code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
invoke-rc.d: initscript nginx, action "start" failed.
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2018-06-09 19:03:35 MST; 9ms ago
Docs: man:nginx(8)
Process: 4142 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
Process: 4138 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Jun 09 19:03:33 The-Lappy nginx[4142]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Jun 09 19:03:33 The-Lappy nginx[4142]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
Jun 09 19:03:34 The-Lappy nginx[4142]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Jun 09 19:03:34 The-Lappy nginx[4142]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
Jun 09 19:03:34 The-Lappy nginx[4142]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Jun 09 19:03:34 The-Lappy nginx[4142]: nginx: [emerg] bind() to [::]:80 failed
(98: Address already in use)
Jun 09 19:03:35 The-Lappy nginx[4142]: nginx: [emerg] still could not bind()
Jun 09 19:03:35 The-Lappy systemd[1]: nginx.service: Control process exited,
code=exited status=1
Jun 09 19:03:35 The-Lappy systemd[1]: nginx.service: Failed with result 'exit-
code'.
Jun 09 19:03:35 The-Lappy systemd[1]: Failed to start A high performance web
server and a reverse proxy server.
dpkg: error processing package nginx-full (--configure):
installed nginx-full package post-installation script subprocess returned
error exit status 1
dpkg: dependency problems prevent configuration of nginx:
nginx depends on nginx-full (<< 1.14.0-0+bionic0.1~) | nginx-light (<< 1.14.0-0+bionic0.1~) | nginx-extras (<< 1.14.0-0+bionic0.1~); however:
Package nginx-full is not configured yet.
Package nginx-light is not installed.
Package nginx-extras is not installed.
nginx depends on nginx-full (>= 1.14.0-0+bionic0) | nginx-light (>= 1.14.0-0+bionic0) | nginx-extras (>= 1.14.0-0+bionic0); however:
Package nginx-full is not configured yet.
Package nginx-light is not installed.
Package nginx-extras is not installed.
dpkg: error processing package nginx (--configure):
dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup
error from a previous failure.
Errors were encountered while processing:
nginx-full
nginx
E: Sub-process /usr/bin/dpkg returned an error code (1)
In Apt.php line 74:
Apt was unable to install [nginx].
install [--ignore-selinux]
Выполнение sudo apt-get remove nginx
дает мне:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libnginx-mod-http-auth-pam libnginx-mod-http-dav-ext libnginx-mod-http-echo libnginx-mod-http-geoip libnginx-mod-http-image-filter libnginx-mod-http-subs-filter libnginx-mod-http-upstream-fair
libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream nginx-common nginx-full
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
nginx
0 upgraded, 0 newly installed, 1 to remove and 5 not upgraded.
2 not fully installed or removed.
After this operation, 36.9 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 172681 files and directories currently installed.)
Removing nginx (1.14.0-0+bionic0) ...
Setting up nginx-full (1.14.0-0+bionic0) ...
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
invoke-rc.d: initscript nginx, action "start" failed.
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2018-06-09 19:08:44 MST; 9ms ago
Docs: man:nginx(8)
Process: 4279 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
Process: 4278 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Jun 09 19:08:43 The-Lappy nginx[4279]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Jun 09 19:08:43 The-Lappy nginx[4279]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
Jun 09 19:08:43 The-Lappy nginx[4279]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Jun 09 19:08:43 The-Lappy nginx[4279]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
Jun 09 19:08:44 The-Lappy nginx[4279]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Jun 09 19:08:44 The-Lappy nginx[4279]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
Jun 09 19:08:44 The-Lappy nginx[4279]: nginx: [emerg] still could not bind()
Jun 09 19:08:44 The-Lappy systemd[1]: nginx.service: Control process exited, code=exited status=1
Jun 09 19:08:44 The-Lappy systemd[1]: nginx.service: Failed with result 'exit-code'.
Jun 09 19:08:44 The-Lappy systemd[1]: Failed to start A high performance web server and a reverse proxy server.
dpkg: error processing package nginx-full (--configure):
installed nginx-full package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
nginx-full
E: Sub-process /usr/bin/dpkg returned an error code (1)
ТАКИМ ОБРАЗОМ, похоже, что это было частично установлено и затем не могущее удалить nginx.
Выполнение sudo nginx
дает мне:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
Выполнение sudo apachectl start
говорит мне процесс, отказавший с кодом ошибки и проверять журналы. /var/log/apache2/error.log содержит:
[Sat Jun 09 17:24:52.483178 2018] [mpm_event:notice] [pid 19739:tid 140694647565248] AH00489: Apache/2.4.29 (Ubuntu) configured -- resuming normal operations
[Sat Jun 09 17:24:52.483281 2018] [core:notice] [pid 19739:tid 140694647565248] AH00094: Command line: '/usr/sbin/apache2'
[Sat Jun 09 18:39:50.318815 2018] [core:warn] [pid 32508:tid 140277927611328] AH00098: pid file /var/run/apache2/apache2.pid overwritten -- Unclean shutdown of previous Apache run?
[Sat Jun 09 18:39:50.319348 2018] [mpm_event:notice] [pid 32508:tid 140277927611328] AH00489: Apache/2.4.29 (Ubuntu) configured -- resuming normal operations
[Sat Jun 09 18:39:50.319367 2018] [core:notice] [pid 32508:tid 140277927611328] AH00094: Command line: '/usr/sbin/apache2'
[Sat Jun 09 18:40:33.313855 2018] [core:warn] [pid 32625:tid 140576383269824] AH00098: pid file /var/run/apache2/apache2.pid overwritten -- Unclean shutdown of previous Apache run?
[Sat Jun 09 18:40:33.314401 2018] [mpm_event:notice] [pid 32625:tid 140576383269824] AH00489: Apache/2.4.29 (Ubuntu) configured -- resuming normal operations
[Sat Jun 09 18:40:33.314419 2018] [core:notice] [pid 32625:tid 140576383269824] AH00094: Command line: '/usr/sbin/apache2'
[Sat Jun 09 18:41:57.804899 2018] [mpm_event:notice] [pid 32625:tid 140576383269824] AH00491: caught SIGTERM, shutting down
Таким образом, странно, что я не могу запустить Apache. Однако посещение localhost в моем браузере приносит мне к странице человечности apache2 по умолчанию.
Кроме того, уничтожение вообще работает на порте 80 через fuser
не справка.
Таким образом, я отчасти озадачен здесь. Может кто-либо помогать уладить это?
Править: Я работал sudo apt-get remove nginx nginx-full
и затем выполнил a sudo netstat -ltnp | grep -w ':80'
и получил это:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 10008/mysqld
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2151/nginx: master
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 713/systemd-resolve
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 5957/cupsd
tcp6 0 0 :::80 :::* LISTEN 2151/nginx: master
tcp6 0 0 ::1:631 :::* LISTEN 5957/cupsd
Ubuntu 18.04. Порт 80 используется для другого процесса.
netstat -ltnp | grep -w ':80'
tcp6 0 0 :::80 :::* LISTEN 4114/httpd
В моем случае изодромный с предварением процесс 4114 соответствует программе nextcloud. (Я установил его ошибочно прежде nginx, который является предпосылкой). Затем необходимо изменить порт в nginx конфигурации по умолчанию, если Вы не хотите изменять конфигурацию nexcloud или другого процесса или если Вы не хотите уничтожать его (оба - хорошие альтернативы в любом случае). Отредактируйте файл:
sudo gedit /etc/nginx/sites-enabled/
В начале того файла, после комментариев, Вы найдете две строки:
server {
listen 80 default_server;
listen [::]:80 default_server;
Отредактируйте тот файл и поместите 81 вместо 80, если Вы готовы поместить 81 как Ваш порт для nginx. Это редактирование имеет свою законность, даже если apache2 работает в той же системе, и это уже владело тем стандартным портом. Если какой-либо другой процесс занимает порт 80, необходимо остановить его перед установкой других программ как nginx. На Ubuntu 18.04 Вы получаете ошибки зависимости, которые почти невозможно очистить, но причина состоит только в том, что nginx не может использовать стандартный порт 80. Если Вы не хотите удалять процесс, который занимает порт 80 затем, необходимо, по крайней мере, уничтожить его, прежде чем Вы сделаете что-то:
fuser -k -n tcp 80
Я возился с ним некоторое время и затем работал 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, это просто показало мне, что апач работал и слушал на порте 80. Таким образом, я остановил апача и работал valet install
и камердинер установил успешно.
Я не уверен, что завершить здесь за исключением того, что ни при каких обстоятельствах не должен Вы пытаться установить nginx через камердинера, в то время как apache2 работает в фоновом режиме.
Мой единственный остающийся вопрос состоит в том, почему я должен был сделать полную системную перезагрузку для устранения проблемы.