Настройка сервера Ubuntu
Прежде чем вы сможете настроить веб-сервер Apache, вам потребуется система для его запуска. Я рекомендую использовать сервер на базе Linux, и, по моему опыту, Ubuntu Server Edition – самый простой и удобный для пользователя, но с очень хорошей безопасностью. Я также предлагаю вам выбрать версию LTS (Long Term Support), которая предоставляет обновления и поддержку в течение 5 лет. В то время как не самые передовые релизы LTS являются наиболее стабильными для запуска надежных веб-серверов.
Процедуры установки подробно описаны в нескольких местах. Во время установки сервера я обычно выбираю установку сервера LAMP (Linux Apache MySQL PHP), файлового сервера SAMBA и сервера SSH, как показано на рисунке ниже:
Ubuntu Tasksel – Выбор пакета
Во время установки у вас спросят имя пользователя, пароль, имя хоста (имя вашего сервера), пароль администратора MySQL и т.д. Для большинства других вопросов вы можете выбрать значение по умолчанию или оставить пустым. После завершения установки обновите вашу систему, используя следующие команды:
Шаг 3 — Проверка веб-сервера
В конце процесса установки Ubuntu 20.04 запускает Apache. Веб-сервер уже должен быть запущен и работать.
Используйте команду инициализации , чтобы проверить работу службы:
Вывод подтвердил, что служба успешно запущена. Однако лучше всего протестировать ее запуск посредством запроса страницы из Apache.
Откройте страницу Apache по умолчанию, чтобы подтвердить работу программного обеспечения через ваш IP-адрес: Если вы не знаете IP-адрес вашего сервера, есть несколько способов узнать его с помощью командной строки.
Попробуйте ввести в командной строке сервера следующую команду:
Вы получите несколько адресов, разделенных пробелами. Вы можете попробовать каждый из них в браузере, чтобы убедиться в их работоспособности.
Еще один вариант — использовать инструмент Icanhazip, который должен выдать вам ваш публичный IP-адрес, видимый в другом расположении в Интернете:
Когда вы узнаете IP-адрес вашего сервера, введите его в адресную строку браузера:
Вы увидите веб-страницу Ubuntu 20.04 Apache по умолчанию:
Эта страница показывает, что Apache работает корректно. Также на ней содержится информация о важных файлах Apache и расположении каталогов.
Настройка HTTPS
Если вы используете файрвол ufw, HTTPS по умолчанию будет отключен. Сначала давайте проверим статус:
$ ufw status
В моем случае он был отключен:
Status: inactive
Включаем:
$ ufw enable
Повторяем проверку и, скорее всего, увидим:
Status: active
Чтобы пропустить трафик HTTPS, разрешаем профиль Apache Full и SSH, так как если этого не сделать, подключиться по SSH в будущем не выйдет:
$ ufw allow ‘Apache Full’
$ ufw allow ssh
И после повторной проверки увидим:
To Action From
— —— —-
Apache Full ALLOW Anywhere
22/tcp ALLOW Anywhere
Apache Full (v6) ALLOW Anywhere (v6)
22/tcp (v6) ALLOW Anywhere (v6)
После этого мы можем перейти непосредственно к выпуску сертификата.
Создание виртуального хоста с поддержкой ssl
Далее необходимо либо создать новый виртуальный хост apache, либо отредактировать существующий в файле /etc/httpd/conf/httpd.conf. Добавляем в конец файла:
<VirtualHost *:443> SSLEngine on SSLCertificateFile /root/cert/zeroxzed.ru.crt SSLCertificateKeyFile /root/cert/zeroxzed.ru.kye <Directory /var/www/vhosts/zeroxzed.ru/www> AllowOverride All </Directory> DocumentRoot /var/www/vhosts/zeroxzed.ru/www ServerName zeroxzed.ru </VirtualHost>
После сохранения проверяем конфигурацию apache:
# httpd -t
Если появляется предупреждение:
_default_ VirtualHost overlap on port 443, the first has precedence
То ищем в /etc/httpd/conf/httpd.conf строчку NameVirtualHost *:80 и добавляем после нее NameVirtualHost *:443
Снова проверяем. Если ошибок нет, перезапускаем апач и заходим на сайт, прописав в адресной строке https, вместо http. Теперь ваш сайт доступен по протоколу https. Но пользователи сайта могут об этом не знать. Было бы разумным сделать переадресацию с открытого протокола на защищенный. Сделаем это.
Установка Apache Ubuntu 16.04
Apache — это кроссплатформенный веб-сервер с открытым исходным кодом. Он поддерживает все необходимые функции веб-сервера, включая CGI, SSL, и виртуальные домены.
Установить Apache в Ubuntu очень просто, для этого достаточно выполнить:
После установки добавим программу в автозагрузку:
И запустим веб-сервер сейчас:
Теперь можно проверить, что получилось, откройте браузер и наберите в адресной строке localhost:
Как видите, установка apache ubuntu 16.04 завершена, и веб-сервер уже работает. Но это ещё не всё. Если у вас один сайт, который нужно тестить на локальной машине, то всё отлично. Но если их несколько, то собирать их все в подпапках веб-сервера не совсем удобно, да и не все движки нормально относятся к этому. Потому давайте рассмотрим, как настроить виртуальные хосты.
Создайте новую папку для нашего виртуального хоста:
Дадим права на доступ:
Необходимо создать небольшой файл, index.html, чтобы он открылся, когда вы запустите этот сайт:
Теперь можно добавлять виртуальный хост, для этого создайте файл и наполните его содержимым:
Вот что значат некоторые строки:
Теперь сохраните файл, далее нужно активировать наш хост:
Перезапускаем веб-сервер:
Теперь необходимо завернуть трафик с этого домена на локальный сервер, для этого добавьте строчку в /etc/hosts:
Откройте браузер и в адресной строке наберите test.site:
Кроме того, мы можем включить поддержку ssl для нашего веб-сервера. Для этого выполните:
После этого нужно будет перезагрузить веб-сервер:
Теперь вы можете проверить работу SSL, набрав адрес https://localhost.
Браузер не доверяет нашему сертификату, поскольку он самоподписанный, но мы можем спокойно добавлять его в исключения, это ведь наш сертификат. Теперь работает:
Установка PHP 7
Без языка программирования установка и настройка LAMP в Ubuntu будет не завершена. PHP — это самый популярный язык программирования в веб. Его название — это рекурсивный акроним (PHP: Hypertext Preprocessor). Кроме того, что этот язык используется в веб, его можно применять как язык общего назначения, язык сценариев.
Установка PHP 7 в Ubuntu 16.04 выполняется следующей командой:
Если вы хотите установить все доступные модули PHP, чтобы в будущем не было проблем, можно выполнить команду:
После завершения установки проверим версию PHP:
Теперь пора проверить, как всё работает. Для этого создайте файл со следующим кодом на PHP:
Осталось перезапустить Apache2:
Установка PHP 7 в Ubuntu 16.04 завершена, и всё очень хорошо работает. Но нужно ещё кое-что настроить, а именно включить отображение ошибок в PHP. Иначе при возникновении ошибки вы увидите просто пустую страницу. Для этого откройте файл /etc/php/7.0/apache2/php.ini, найдите строку display_errors = Off и поменяйте off на on:
Теперь переходим к следующему этапу.
Необходимые условия
Перед тем, как начать следовать шагам, описанным в этом руководстве, вам необходимо настроить отдельный, не-рутовый (non-root) профиль пользователя на вашем сервере с Ubuntu 18.04. Кроме того, вам потребуется настроить базовый файрвол для блокирования всех портов, кроме необходимых для работы Apache. Вы можете ознакомиться с процессом настройки аккаунта пользователя и настройкой файрвола на вашем сервере следуя шагам нашего руководства по первичной настройке сервера на Ubuntu 18.04.
После завершения создания аккаунта войдите на ваш сервер с помощью вновь созданного пользователя.
2: Настройка брандмауэра
Теперь нужно отредактировать настройки брандмауэра и открыть доступ к стандартному порту Apache. Если вы выполнили руководство по начальной настройке сервера, брандмауэр UFW блокирует доступ к веб-серверу.
Во время установки Apache регистрируется в UFW и предоставляет несколько профилей, которые упрощают процесс управления доступом к Apache.
Чтобы просмотреть профили приложений ufw, введите:
Вы увидите список профилей:
Как видите, Apache предлагает три профиля:
- Apache: поддерживает трафик по порту 80 (стандартный порт).
- Apache Full: открывает порт 80 и 443 (шифрованный трафик TLS/SSL).
- Apache Secure: поддерживает только шифрованный трафик TLS/SSL.
Рекомендуется включить наиболее ограничительный профиль, который все равно позволит поддерживать трафик. Поскольку вы еще не настроили SSL-сертификат, вам нужно разрешить трафик на порт 80:
Убедитесь, что профиль включен:
В выводе вы увидите:
7 ответов
на /etc/apache2/ports.conf измените порт, как
Listen 8079
затем перейдите в /etc/apache2/sites-enabled / 000-default.conf
и измените первую строку как
<VirtualHost *: 8079>
теперь перезапустите
sudo service apache2 restart
Apache теперь будет слушать порт 8079 и перенаправлять на /var/www / html
112
открыть httpd.conf файл в текстовом редакторе. Найдите эту строку:
Listen 80
и изменить его
Listen 8079
после изменения сохраните его и перезапустите apache.
Это была проблема брандмауэра. Был аппаратный брандмауэр, который блокировал доступ почти ко всем портам. (Отключение программного брандмауэра / SELinux bla bla не имело никакого эффекта)
затем я просмотрел открытые порты и использовал открытый порт.
Если вы столкнулись с той же проблемой, выполните следующую команду
sudo nmap -T Aggressive -A -v 127.0.0.1 -p 1-65000
он будет сканировать все открытые порты в вашей системе. Любой открытый порт можно получить из внешний.
Ref.: https://www.go2linux.org/which_service_or_program_is_listening_on_port
это работает для меня на Centos
первый: в файле / etc/httpd/conf / httpd.conf
добавить
Listen 8079
после
Listen 80
это до вашего сервера, чтобы слушать порт 8079
второй: перейти к виртуальному хосту для ex. / etc/httpd / conf.д/к vhost.conf
и добавьте следующий код ниже
<VirtualHost *:8079> DocumentRoot /var/www/html/api_folder ServerName example.com ServerAlias www.example.com ServerAdmin root@example.com ErrorLog logs/www.example.error_log CustomLog logs/www.example.access_log common </VirtualHost>
это значит, когда вы идете в свой www.example.com:8079 перенаправить на
/var/www/html / api_folder
но сначала вам нужно перезапустить службу
sudo service httpd restart
5
Если вам нужен порт прослушивания apache, отличный от 80, вы должны добавить следующий файл в ubuntu
список портов прослушивания
Listen 80 Listen 81 Listen 82
после того, как вы перейдете на ваш виртуальный файл hosts conf an define next
<VirtualHost *:80> #…v host 1 </VirtualHost> <VirtualHost *:81> #…host 2 </VirtualHost> <VirtualHost *:82> #…host 3 </VirtualHost>
если вы используете Apache на Windows:
- Проверьте имя службы Apache с помощью Win+R+services.msc+ Enter (если это не ApacheX.Y, он должен иметь имя программного обеспечения, которое вы используете с apache, например: «wampapache64»);
- начать командная строка как администратор (используя Win+R+cmd+ Enter не хватает);
- перейдите в каталог Apache, например:cd c:wampbinapacheapache2.4.9bin;
- проверьте, что файл конфигурации в порядке с:httpd.exe -n «YourServiceName» -t (замените имя службы на то, которое вы нашли на шаге 1);
- убедитесь, что служба остановлена: httpd.exe -k stop -n «YourServiceName»
- начните с:httpd.exe -k start -n «YourServiceName»
-
если он начинается хорошо, Проблема больше не существует, но если вы получить:
если номер порта не тот, который вы хотели использовать, откройте файл конфигурации Apache (например,C:wampbinapacheapache2.4.9confhttpd.conf открыть с помощью редактора кода или WordPad, но не Блокнот — он не читает новые строки должным образом) и замените номер на строке, которая начинается с Listen с номером порт, который вы хотите, сохранить его и повторите шаг 6. Если это тот, который вы хотели использовать, то продолжайте:
- Проверьте PID процесса, который использует этот порт с Win+R+resmon+ Enter, нажмите кнопку сеть tab, а затем на порты subtab;
- убить его с: taskkill /pid NUMBER /f (/f силы);
- Проверьте resmon для того чтобы подтвердить что порт свободен теперь и повторить шаг 6.
это гарантирует, что служба Apache была запущена правильно, конфигурация на файл конфигурации виртуальных хостов, как упоминал сарул (например: C:wampbinapacheapache2.4.9conf\httpd-vhosts.conf) необходимо, если вы устанавливаете свой путь к файлам там и меняете порт. Если вы измените его снова, не забудьте перезапустить службу:httpd.exe -k restart -n «YourServiceName».
для сервера FC22
компакт-диск /и т. д./httpd/conf файл редактировать файл httpd.conf
изменить: Слушать 80 к: Слушайте whatevernumber
сохраните файл
systemctl перезапустить httpd.сервис при необходимости откройте whatevernumber в маршрутизаторе / брандмауэре
2: Создание файла .htaccess
Файл .htaccess позволяет настраивать редирект вне конфигурационного файла сервера. По этой причине файл .htaccess может подвергнуть риску безопасность веб-приложения. Точка в начале имени файла значит, что это скрытый файл.
Примечание: Все правила, хранящиеся в .htaccess, будут работать и в конфигурационных файлах сервера. Документация Apache рекомендует использовать обычные конфигурационные файлы вместо .htaccess, поскольку они быстрее обрабатываются веб-сервером.
Однако в этом простом примере увеличение производительности не является главной целью. Кроме того, хранить правила в .htaccess очень удобно, особенно если один сервер обслуживает сразу несколько сайтов. Этот файл не требует перезагрузки сервера, чтобы изменения вступили в силу, а для его редактирования не нужны привилегии суперпользователя, что упрощает техническое обслуживание и внесение изменений в настройки. Некоторые популярные программы с открытым исходным кодом (например, WordPress и Joomla) часто используют файл .htaccess.
Прежде чем приступить к настройке .htaccess, нужно добавить несколько параметров в настройки сервера.
По умолчанию Apache не поддерживает .htaccess. Чтобы изменить это, откройте конфигурационный файл Apache в текстовом редакторе (например, в nano).
Найдите блок <VirtualHost *:80>. Добавьте в него следующие настройки:
Сохраните и закройте файл. Перезапустите Apache:
Теперь создайте .htaccess в корневом каталоге веб-сервера.
Добавьте следующую строку в начало файла, чтобы включить механизм перезаписи:
Сохраните и закройте файл.
В дальнейшем вы сможете использовать файл .htaccess для хранения правил маршрутизации приложения.
Безопасный Apache и PHP
После установки сервера LAMP выполните следующие незначительные шаги, чтобы повысить его безопасность:
Apache Security
Отредактируйте с помощью следующей команды:
Найдите следующие строки и внесите изменения, перечисленные ниже:
И,
В передней линии делает Apache игнорировать эту строку (комментарий).
PHP Безопасность
Отредактируйте с помощью следующей команды:
Найдите и измените его следующим образом:
Вышеуказанные изменения не позволят вашему серверу раскрыть, что PHP установлен (добавив свою подпись в заголовок веб-сервера) на ваш сервер вместе с другой информацией. Несмотря на то, что это может не быть угрозой безопасности, потенциальным хакерам это показывает, что веб-сервер использует PHP. Чем меньше хакер знает о конфигурации вашего сервера, тем лучше. Перезагрузите сервер Apache, используя следующую команду, чтобы применить вышеуказанные изменения:
5: Настройка виртуального хоста (рекомендуется)
На веб-сервере Apache вы можете использовать виртуальные хосты (в Nginx это блоки server) для изоляции настроек и размещения нескольких доменов на одном сервере. Здесь используется условный домен your_domain, который вы должны заменить собственным доменом.
Apache Ubuntu 20.04 по умолчанию предоставляет один включенный виртуальный хост, который обслуживает каталог /var/www/html. Этого хватит для обслуживания одного сайта, но если вы хотите разместить несколько сайтов, вам нужно создать новые виртуальные хосты. Создайте структуру каталогов в /var/www для сайта your_domain, а /var/www/html оставьте как каталог по умолчанию, который будет обслуживаться, если запрос клиента не отвечает другим сайтам.
Создайте каталог для your_domain.
Затем задайте права на каталог с помощью переменной $USER:
Права должны быть установлены верно, если вы не меняли unmask, но на всякий случай вы можете ввести эту команду (тогда права на чтение, запись и выполнение будут только у владельца каталога, все остальные пользователи и групп смогут только читать его):
Затем создайте образец страницы index.html с помощью nano или другого редактора:
Вставьте в файл такой код HTML:
Сохраните и закройте файл.
Чтобы Apache мог обслуживать этот контент, необходимо создать файл виртуального хоста с правильными директивами. Вместо того чтобы напрямую изменять конфигурационный файл по умолчанию, /etc/apache2/sites-available/000-default.conf, создайте новый файл /etc/apache2/sites-available/your_domain.conf:
Вставьте в файл следующий блок конфигураций. Он похож на конфигурации по умолчанию, но содержит правильный домен и каталог:
Обратите внимание: DocumentRoot содержит путь нового каталога, а ServerAdmin – новый адрес электронной почты администратора сайта your_domain. Мы также добавили в файл две директивы: ServerName определяет базовый домен, который должен соответствовать этому виртуальному хосту, а ServerAlias определяет алиасы
Сохраните и закройте файл.
Включите файл с помощью a2ensite:
Отключите стандартный сайт, который определяется файлом 000-default.conf:
Проверьте ошибки в конфигурациях:
Если ошибок нет, команда вернет такой вывод:
Перезапустите Apache:
Теперь Apache обслуживает домен вашего сайта. Чтобы убедиться в этом, откройте ссылку http://your_domain.
Определение¶
Понятие веб-сервер может относиться как к аппаратной начинке, так и к программному обеспечению. Или даже к обеим частям, работающим совместно.
- С точки зрения «железа», веб-сервер — это компьютер, который хранит файлы сайта (HTML-документы, CSS-стили, JavaScript-файлы, картинки и другие) и доставляет их на устройство конечного пользователя (веб-браузер и т.д.). Он подключен к сети Интернет и может быть доступен через доменное имя, подобное .
- С точки зрения ПО, веб-сервер включает в себя несколько компонентов, которые контролируют доступ веб-пользователей к размещенным на сервере файлам, как минимум — это HTTP-сервер. HTTP-сервер — это часть ПО, которая понимает URL’ы (веб-адреса) и HTTP (протокол, который ваш браузер использует для просмотра веб-страниц).
На самом базовом уровне, когда браузеру нужен файл, размещенный на веб-сервере, браузер запрашивает его через HTTP-протокол. Когда запрос достигает нужного веб-сервера («железо»), сервер HTTP (ПО) принимает запрос, находит запрашиваемый документ (если нет, то сообщает об ошибке ) и отправляет обратно, также через HTTP.
Шаг 11 — Обслуживание статических файлов с помощью Nginx (необязательно)
Когда Nginx перенаправляет запросы доменов Apache через прокси-сервер, каждый запрос файла этого домена отправляется в Apache. Nginx обслуживает статические файлы, такие как изображения, JavaScript и таблицы стилей, быстрее Apache. Поэтому мы настроим файл виртуального хоста Nginx для прямого обслуживания статических файлов и перенаправления запросов PHP в Apache.
Откройте в своем редакторе файл :
Вам потребуется добавить два дополнительных блока в каждый блок server, а также изменить существующие разделы . Кроме того, вам нужно будет указать Nginx, где можно найти статические файлы для каждого сайта.
Если вы решили не использовать сертификаты SSL и TLS, измените свой файл, чтобы он выглядел следующим образом:
/etc/nginx/sites-available/apache
Если вы также хотите обеспечить доступность HTTPS, используйте следующую конфигурацию:
/etc/nginx/sites-available/apache
Директива указывает Nginx искать файлы в корне документа document root и выводить их напрямую. Если файл имеет расширение , запрос перенаправляется в Apache. Даже если файл отсутствует в document root, запрос перенаправляется в Apache, чтобы функции приложения (например, постоянные ссылки) работали без проблем.
Предупреждение. Директива очень важна, поскольку она не дает Nginx выводить содержимое файлов конфигурации Apache с важными данными, таких как и .
Сохраните файл и проведите тест конфигурации:
Если тест завершается успешно, перезагрузите Nginx:
Чтобы убедиться, что все работает, вы можете просмотреть файлы журнала Apache в каталоге и посмотреть запросы для файлов сайтов и . Используйте команду для просмотра последних нескольких строк файла и параметр для просмотра изменений файла:
Теперь откройте в браузере и посмотрите на результаты вывода журнала. Вы увидите ответ Apache:
Затем откройте страницы каждого сайта, и вы не увидите записи журнала Apache. Их обслуживает Nginx.
Завершив изучение файла журнала, нажмите чтобы остановить отслеживание.
При такой настройке Apache не сможет ограничивать доступ к статическим файлам. Контроль доступа к статическим файлам должен быть настроен в файле виртуального хоста Nginx, однако это не входит в содержание настоящего обучающего руководства.