У меня есть сервер, работающий на 80-м порту, но я не знаю, что это такое и откуда он взялся. Когда я бегу

sudo lsof -i :80 | grep LISTEN

Я получил

httpd      80    root    5u  IPv6 0x91f5a9de62859cfd      0t0  TCP *:http (LISTEN)
httpd     694    _www    5u  IPv6 0x91f5a9de62859cfd      0t0  TCP *:http (LISTEN)

Я попытался ввести имя процесса с помощью PID, но все, что я получил взамен, это «httpd» или «FOREGROUND».

Когда я убиваю PID, процесс просто перезапускается с новым PID. Полагаю, мне придется остановить его при запуске.

Как я могу остановить запуск этого сервера при запуске?

Если это поможет, я пытаюсь освободить порт 80 для использования сервера apache на MAMP.

12
Stephen Mather 3 Сен 2016 в 20:55

4 ответа

Лучший ответ

Это всего лишь предположение, но это может быть встроенная версия apache, запускаемая (и перезапускаемая) с помощью launchd (диспетчера демонов OS X). По умолчанию он отключен, но, возможно, каким-то образом был включен. Вы можете попробовать отключить его с помощью:

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

Если этого не произойдет (будет написано что-то вроде «Не удалось найти указанную службу»), вы можете проверить, не является ли это какой-либо другой элемент демона запуска, выполнив поиск PID главного процесса (того, который запущен как root , а не _www):

sudo launchctl list | grep <masterPID>

Это не обязательно точно скажет вам, что происходит, но может указать вам правильное направление.

11
Gordon Davisson 3 Сен 2016 в 21:20

Как предположил Гордон, это встроенная версия веб-сервера Apache.

Вы можете остановить это

sudo apachectl stop

Кстати, конфигурацию этого веб-сервера можно найти в каталоге /etc/apache2/httpd.conf .

6
P.J.Meisch 4 Сен 2016 в 12:02

Со мной такое случается часто. Как объясняет @Gordon Davisson, скорее всего, процесс launchdeamon конфликтует со службой, которую вы настроили. Обязательно остановите сервер apachetl.

sudo apachetl -k stop

Попробуйте найти все процессы httpd, они должны быть последними

sudo lsof -i :80 // without grep

Затем получить первый процесс (скорее всего, в 1000-х) также должен быть самым низким.

sudo kill <firstHttpdPID>

Это должно убить ВСЕ процессы, выполняющие этот экземпляр httpd, а затем вы просто запустите резервное копирование своего сервера. Однако сначала необходимо остановить его, иначе он продолжит работу снова.

1
Douglas Richardson 11 Апр 2018 в 04:41

Mac OSX поставляется вместе с Apache, однако он отключен. Вы могли как-то активировать его. В моем случае я ранее установил XAMPP и настроил что-то в /etc/apache2/httpd.conf, что ведет мой порт localhost:80 к странице html с It Works! .

TL; DR, решение состоит в том, чтобы деактивировать сервер Apache2. Зайдите в свой терминал и введите это

sudo apachetl -k stop

В моем случае он возвращает следующее:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using Shafies-MacBook-Pro.local. Set the 'ServerName' directive globally to suppress this message
httpd (no pid file) not running

Если вы набрали localhost в своем браузере, порт 80 больше не будет активен, и вы больше не увидите It Works! .

Для контекста, я давно удалил XAMPP и не знаю, что мой localhost:80 все еще активен. Я не могу перенаправить фиктивный домен - posts.com на мой порт localhost для моих файлов конфигурации kubernetes YAML.

Это мой файл ingress-srv.yaml:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-srv
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
  rules:
    - host: posts.com
      http:
        paths:
          - path: /?(.*)
            backend:
              serviceName: client-srv
              servicePort: 3000

Это мой файл posts.com:…

127.0.0.1 posts.com

Автор: SM

0
Dharman 10 Авг 2020 в 01:32