Пытаюсь установить apache2

Здравствуйте,

Как следует из названия, я выполнил команду sudo apt install apache2.

Сервер не запускается, и вот ошибка:

(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
pam_unix(sudo:session): session closed for user root
Control process exited, code=exited status=1
apache2.service: Failed with result 'exit-code'.
Failed to start The Apache HTTP Server.

Как это исправить? Заранее спасибо всем.

На этом порту уже запущен другой процесс. Вам нужно найти его и остановить.

Команда netstat -an | grep :80 может показать, что именно запущено.

tcp6       0      0 :::80                   :::*                    LISTEN

tcp6? Странно éwè

Значит, мне нужно изменить порт в apache2.conf на любой другой? Не вызовет ли это проблем для будущих сайтов, работающих на этом веб-сервере?

Извините, я упустил флаг netstat -anp, чтобы показать имя программы.

Зачем? Если вы установили Discourse, он использует порты 80 и 443.

Смотрите Как настроить Discourse на сервере с уже существующими сайтами Apache

Попробую это, спасибо!

Также @schleifer, там указано 30005/docker-proxy

И да, и нет. Давайте сделаем шаг назад и разберемся.

Ранее, судя по всему, вы запускали несколько веб-сайтов с помощью Apache. Apache прослушивал порты 80 и 443, а затем «проксировал» (перенаправлял) запросы как «виртуальные хосты», что позволяло запускать множество веб-сайтов на одном сервере, все из которых слушали одни и те же порты (80 и 443). Это был «LAMP 101»… принцип работы виртуальных хостов.

Теперь предположим, что вы устанавливаете Discourse официальным способом «из коробки» (OOTB). OOTB-версия Discourse попытается занять те же порты и потерпит неудачу, так как Apache уже использует (занял) эти порты. У вас есть выбор:

  1. Запустить Discourse через Unix-сокет и настроить Apache для обратного проксирования приложения Discourse как виртуального хоста.

Примечание: Я протестировал это, и это работает; однако эта конфигурация не поддерживается официально (и даже неофициально) разработчиками Discourse.

  1. Перейти с Apache на nginx, запустить все свои веб-серверы на nginx, а также настроить обратное проксирование приложения Discourse как виртуального хоста, используя Unix-сокет для продакшн-версии приложения Discourse-docker.

Примечание: Это также не поддерживается официально разработчиками Discourse; и большинству людей, использующих сайты на Apache, будет довольно сложно («трудоемко») перенести все свои настройки mod_rewrite и закодированные модули geo-ip на nginx; но это, конечно, выполнимо, особенно если ваши приложения изначально созданы для работы как с nginx, так и с Apache2 (это проще, но все равно не поддерживается официально).

  1. Открыть контейнер Docker с Discourse на портах, отличных от 80 и 443.

Примечание: Это тоже (по сути) не рекомендуется (хотя, насколько я помню, официально поддерживается). Однако большинство людей не хотят обращаться к веб-приложению, вводя номера портов, например https://my-great-discourse-app.org:3334, поэтому в продакшн-среде так обычно не делают. В разработке ситуация иная.

Моя рекомендация «без знания всех деталей», исходя из опыта работы с LAMP и всё чаще с Discourse, — запускать их на отдельных серверах (это официально поддерживается Discourse); но если у вас действительно ограниченный бюджет и вы должны запустить всё на одном сервере (или вам просто нравится иметь один большой сложный сервер), то вам нужно будет научиться настраивать Apache2 для обратного проксирования через Unix-сокет к приложению Discourse и обратно.

Я протестировал это, и возможно настроить Apache2 для обратного проксирования Discourse через Unix-сокет; однако это решение не поддерживается официально (вообще).

Примечание: Ссылка на настройку Apache2 с HAProxy была решением, которое мне не удалось легко заставить работать, поэтому я от него отказался (нет необходимости использовать только HAProxy, есть «старые способы» сделать это). Однако вам, возможно, будет лучше просто следовать этому руководству Discourse:

Надеюсь, это хоть немного поможет, @nekodroid

Размещение на нестандартных портах полностью не поддерживается. Я видел несколько тем, где владельцы сайтов, вместо привязки к сокету, меняли порты и использовали обратный прокси для сопоставления с 80/443, но если конечный результат требует указания :port, то это невозможно поддержать.