установка, настройка и способы защиты от атак
Веб-сервер Apache не нуждается в представлении. Это программное обеспечение с открытым исходным кодом, выпущенное фондом Apache, один из самых используемых веб-серверов в мире. Рассмотрим, как его установить и как настроить конфигурацию брандмауэра для разрешения HTTP- и HTTPS-трафика и виртуальные хосты в Ubuntu 18.04.
Этапы установки Apache
Установить веб-сервер Apache в Ubuntu 18.04 Bionic Beaver очень просто:
$ sudo apt-get update && apt-get install apache2
Сценарии установки Ubuntu позаботятся о запуске и включении apache2-сервиса при загрузке.
Настройка брандмауэра
Чтобы получить доступ к содержимому сервера на той же машине, где он работает, нужно запустить веб-браузер и ввести в адресную строку localhost
. Если всё настроено правильно, страница поприветствует словами: «It works!».
http://local.server.ip
Если в системе включён брандмауэр (как и должно быть), то чтобы сделать контент доступным извне нашей машины, нужно разрешить входящий трафик через порт 80. Команда для запуска зависит от используемого менеджера брандмауэра. Например, при использовании ufw
(используется в Ubuntu по умолчанию) мы должны запустить:
$ sudo ufw allow http
Если вы используете firewalld
, можно запустить:
$ sudo firewall-cmd --permanent --add-service=http && firewall-cmd --reload
Обратите внимание, что приведённая выше команда будет по умолчанию действовать в зоне firewalld
. Если вы хотите работать с другой зоной, нужно указать её с помощью опции --zone
.
Настройка виртуального хоста
Веб-сервер Apache может запускать несколько веб-сайтов на одном компьютере. Каждый запущенный сайт («виртуальный хост» в терминологии Apache) должен иметь свою собственную конфигурацию. Виртуальный хост может быть IP или именем.
В этом руководстве мы сосредоточимся на втором типе, так как он проще в настройке и не требует нескольких IP-адресов (виртуальные хосты на основе имён позволяют нескольким веб-сайтам использовать один и тот же IP-адрес).
Виртуальный хост по умолчанию
В Ubuntu виртуальный хост по умолчанию определён в каталоге /etc/apache2/sites-available
внутри файла 000-default.conf
. Рассмотрим его:
<VirtualHost *:443> [...] ServerAdmin webmaster@localhost DocumentRoot /var/www/html [...] ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined [...] </VirtualHost>
Директива <VirtualHost>
на первой строке применяется для группы параметров, используемых Apache для конкретного виртуального хоста. Первое, что вы увидите в ней, — инструкцию *:80
. Она указывает IP-адрес и порт, используемый виртуальным хостом.
Несколько сайтов могут быть определены в одном и том же файле или по отдельности. В обоих случаях первое определение считается значением по умолчанию, если ни один другой виртуальный хост не соответствует запросу клиента.
Директива на строке 3 не является обязательной, она используется, чтобы указать контактный адрес. Обычно в качестве аргумента директивы предоставляют действительный адрес электронной почты, чтобы было проще связаться с администратором.
DocumentRoot
в строке 4 является обязательным, это важно для конфигурации виртуального хоста. Аргумент этой инструкции должен иметь доступ к файловой системе. Указанный каталог будет считаться корневым каталогом виртуального хоста и не должен содержать завершающий символ «/». В этом случае корневая директория документа — /var/www/html
. Если мы посмотрим на её содержимое, то увидим, что она содержит страницу
, которую вы до этого видели в качестве страницы приветствия сервера.
Последние две команды на строках 8–9, представленные в этом VirtualHost
, — ErrorLog
и CustomLog
. Используя первый, вы указываете файл, в который сервер будет записывать возникающие ошибки. Второй используется для регистрации запросов, отправленных на сервер в указанном формате.
Новый виртуальный хост
Вы видели, как определяется виртуальный хост по умолчанию. Теперь предположим, что вы хотите разместить другой веб-сайт с помощью вашего веб-сервера. Для этого вам нужно определить новый виртуальный хост.
Как сказано выше, файлы виртуальных хостов должны быть определены внутри каталога /etc/apache2/sites-available
(по крайней мере в дистрибутивах на основе Debian). Поэтому создадим этот файл там. Прежде чем сделать это, следует создать каталог, который будет использоваться как document root, а также создать базовую страницу, которая будет отображаться при открытии сайта:
$ sudo mkdir /var/www/example && echo "Welcome to example!" > /var/www/example/index.html
Теперь можно приступить к настройке виртуального хоста:
<VirtualHost *:80> DocumentRoot /var/www/example ServerName www.example.local </VirtualHost>
Это минимальная конфигурация, необходимая для его запуска. Здесь вы можете увидеть новую директиву ServerName
. Это то, что определяет ваш виртуальный хост. Сохраним этот файл как example.conf
. Чтобы активировать ваш виртуальный хост, используйте команду a2ensite
. Эта команда создаёт символическую ссылку файла в каталоге /etc/apache2/sites-enabled
:
$ sudo a2ensite example.conf
После этого следует перезагрузить конфигурацию сервера:
$ sudo systemctl reload apache2.service
Чтобы убедиться, что конфигурация работает, вы должны добавить запись в файл /etc/hosts
той машины, с которой вы пытаетесь связаться с сайтом.
$ sudo echo "192.168.122.241 www.example.local" >> /etc/hosts
Без этой строки (и без записи DNS) было бы невозможно связать адрес сервера с именем вашего виртуального хоста, а использование IP-сервера напрямую вместо этого «инициировало» бы виртуальный хост по умолчанию.
С клиентского компьютера, если вы теперь перейдёте к www. example.local
Настройка SSL
SSL (Secure Sockets Layer) — это технология, которая позволяет нам шифровать данные, связанные с соединением между клиентом и сервером. При использовании SSL-сертификатов HTTPS (Hyper Text Transfer Protocol Secure) заменяет HTTP в URL-адресе.
SSL-сертификаты выдаются центром сертификации и могут быть очень дорогими, однако есть два других способа получить сертификат: создать самозаверяющий сертификат или воспользоваться сервисом Let’s encrypt.
Создаём самоподписанный SSL-сертификат
Создание самозаверенного сертификата — несложная задача. Это может быть удобно, если вы просто хотите получить шифрование. Мы можем создать самозаверяющий сертификат с помощью утилиты OpenSSL:
$ sudo openssl req -x509 \ -days 365 \ -sha256 \ -newkey rsa:2048 \ -nodes \ -keyout example.key \ -out example-cert.pem
Посмотрим, что делает эта команда. Первая опция, -x509
определяет, что формируется сертификат стандарта X509.
С помощью -days
мы устанавливаем срок действия сертификата в днях. Следующая опция —
. С её помощью мы создаём новый ключ, в данном случае RSA-ключ размером 2048 бит. В тестовом примере нам не нужно шифровать файл закрытого ключа, поэтому используем -nodes
. Если эта опция не указана, файл, в котором хранится ключ, будет защищён паролем, который нужно будет предъявлять каждый раз при перезапуске веб-сервера.
С помощью -keyout
и -out
мы указываем файл для записи сгенерированного ключа и сертификата соответственно. При запуске команды нам будет предложено ответить на несколько вопросов, после чего будет сгенерирован ключ и сертификат.
Скопируйте сгенерированный ключ и сертификат в каталоги
и /etc/ssl/ssl-certs
соответственно:
$ sudo cp example-cert.pem /etc/ssl/certs
Сертификат является общедоступным, поэтому не требует специального разрешения.
Теперь ключ:
$ sudo cp example.key /etc/ssl/private
Важно настроить права доступа к файлу ключа. Папка /etc/ssl/private
принадлежит root-пользователю и группе ssl-cert
, и у неё есть права доступа 710. Это означает, что владелец имеет на неё полные права, а владелец группы может только получить к ней доступ и перечислить её содержимое, но не может дать разрешение другим:
$ ls -ld /etc/ssl/private drwx--x--- 2 root ssl-cert 4096 Mar 16 11:57 /etc/ssl/private
Изменим права доступа к файлу ключа, предоставив владельцу права на чтение и запись, а группе — только для чтения:
$ sudo chown root:ssl-cert /etc/ssl/private/example.key $ sudo chmod 640 /etc/ssl/private/example.key
Теперь, чтобы использовать сертификат, нужно включить модуль SSL с помощью команды a2enmod
:
$ sudo a2enmod ssl
Почти всё готово. Теперь пришло время изменить наш виртуальный хост и настроить его следующим образом:
<VirtualHost *:443> DocumentRoot /var/www/example ServerName www. example.local # Enable ssl engine SSLEngine on SSLCertificate /etc/ssl/certs/example-cert.pem SSLCertificateKeyFile /etc/ssl/private/example.key </VirtualHost>
Порт 443 в строке 1 — это порт, используемый для HTTPS (вместо порта 80, используемого для HTTP).
Мы также добавили инструкцию SSLEngine
on в строке 6.
Наконец, в строках 8–9 мы определили пути для сертификата и файла ключей, используя инструкции SSLCertificateFile
и SSLCertificateKeyFile
Теперь следуйте инструкциям по открытию порты брандмауэра из начале статьи, но на этот раз чтобы разрешить HTTPS-службу:
$ sudo ufw allow https
Наконец, перезагрузите конфигурацию Apache:
$ sudo systemctl reload apache2
Готово. Теперь, если мы перейдём по адресу https://www.example.local, мы должны увидеть веб-сервер, предупреждающий нас о том, что используемый сертификат небезопасен. Это, однако, признак того, что наш сертификат работает, и трафик между клиентом и сервером будет зашифрован (вам необходимо добавить исключение для сертификата, чтобы использовать его).
Настройка Let’s encrypt
Альтернатива коммерческим и самозаверенным сертификатам — «Let’s encrypt». Это бесплатный, автоматизированный и открытый центр сертификации. Его цель — дать возможность автоматически получить сертификат, которому доверяет браузер, без какого-либо вмешательства человека.
Для этого используется протокол ACME (certificate management agent), который запускается на сервере.
Чтобы получить сертификат, вы должны подтвердить, что у вас есть контроль над доменом, для которого вы хотите его использовать. Если у вас нет доступа к shell на сервере, нужно связаться с вашим поставщиком услуг, чтобы активировать сертификат от вашего имени, но, возможно, на панели конфигурации сервиса есть специальный раздел.
Если же у вас есть доступ к shell, необходимо установить клиент certbotACME
.
Для установки Certbot на Ubuntu 18.04 достаточно запустить:
$ sudo apt-get update && apt-get install certbot python-certbot-apache
Пакет Certbot поставляется с модулем systemd timer
, который будет запускать Certbot два раза в день, чтобы поддерживать сертификат в актуальном состоянии. Получить сертификат довольно просто:
$ sudo certbot --apache -m -d
Очевидно, чтобы это работало, домен должен правильно указывать на ваш общедоступный IP-адрес. Certbot предложит вам несколько вопросов для настройки конфигурации, и, если всё пойдёт хорошо, сертификат и ключ будут сохранены в каталоге /etc/letsencrypt/live/
. Просто настройте файл виртуального хоста, чтобы указать на них, и всё готово.
Как обезопасить сервер Apache
Основные средства защиты
Установка Fail2ban на Ubuntu Server 18.04
Если вы хотите обезопасить свой сервер Ubuntu, первое, что вы должны сделать, — это установить систему обнаружения вторжений Fail2ban.
Fail2ban отслеживает определённые файлы журналов (в /var/log
) на предмет неудачных попыток входа или автоматических атак на сервер. Когда обнаруживается попытка компрометации с IP-адреса, Fail2ban блокирует его, добавляя новую цепочку в iptables
и предотвращая доступ или дальнейшую атаку на сервер.
Fail2ban настолько легко установить и использовать, что его можно рассматривать как простое и универсальное решение для всех серверов Linux.
Установить его просто. Войдите в свой сервер Ubuntu и обновите его при необходимости. Обратите внимание, что если в этом процессе обновлено ядро, сервер нужно перезагрузить, поэтому выберите время, когда перезагрузка возможна. Чтобы обновить сервер, введите следующие команды:
sudo apt-get update sudo apt-get upgrade
После выполнения команд при необходимости перезагрузите сервер.
Установить Fail2ban можно с помощью одной команды:
sudo apt-get install -y fail2ban
Проверьте установленную версию:
fail2ban-server --version
После этого Fail2ban готов к работе. Запустить и включить сервис можно так:
sudo systemctl start fail2ban sudo systemctl enable fail2ban
Настройка jail
Настроим его для попыток входа по SSH. В каталоге /etc/fail2ban
вы найдёте файл jail. conf
. Не редактируйте его. Вместо этого создайте новый файл jail.local
, который переопределит любые подобные настройки в jail.conf
. Новая конфигурация будет отслеживать /var/log/auth.log
, использовать фильтр sshd fail2ban
, устанавливать для порта SSH значение 22 и устанавливать максимальное количество попыток — 3. Для этого выполните команду:
sudo nano /etc/fail2ban/jail.local
В новый файл вставьте следующее содержимое:
[sshd] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log maxretry = 3
Сохраните и закройте его. Перезапустите Fail2ban с помощью команды:
sudo systemctl restart fail2ban
На этом этапе, если кто-либо попытается войти на ваш сервер Ubuntu через SSH и эта попытка 3 раза завершится ошибкой, он не сможет больше войти, поскольку iptables заблокирует IP-адрес.
Тестирование и разблокирование
Вы можете проверить, работает ли jail, намеренно провалив три попытки входа на сервер через SSH. После третьей неудачной попытки соединение будет зависать. Нажмите Ctrl+C, чтобы выйти, а затем попытайтесь вернуться по SSH на сервер. Вы больше не сможете использовать SSH на этом сервере с того IP-адреса, который вы использовали.
Затем вы можете разблокировать свой тестовый IP-адрес с помощью следующей команды:
sudo fail2ban-client set sshd unbanip ip_address
Где ip_address
— запрещённый IP-адрес.
Теперь вы снова можете войти.
Модуль mod_evasive
Ещё одна отличная утилита для обнаружения и блокировки IP-адресов, которые используются при атаке типа «отказ в обслуживании». Модуль помещает подозрительные IP-адреса во временный чёрный список и сохраняет их там, если они продолжают подозрительно себя вести.
Благодаря простоте настройки и эффективность он стал одним из любимых инструментов защиты систем Apache. Если вы хотите защитить свой сайт без затрат, можете также использовать его.
Установка mod_evasive в Ubuntu
Введите команду:
# apt-get update
Затем установите вспомогательную утилиту:
sudo apt-get install apache2-utils
Чтобы установить модуль mod_evasive в Ubuntu, введите следующее:
# apt-get install libapache2-mod-evasive
Настройка mod_evasive
Как и большинство программных пакетов Linux, mod_evasive
управляется файлом конфигурации.
Откройте его в текстовом редакторе с помощью следующей команды:
sudo nano /etc/apache2/mods-enabled/evasive.conf
Найдите запись:
#DOSEmailNotify [email protected]
Знак #
помечает это как комментарий. Удалите его, затем замените [email protected]
своим адресом электронной почты. Используйте ту, которой вы постоянно пользуетесь — именно сюда будут отправляться оповещения.
Отредактируйте файл журнала, чтобы он выглядел следующим образом:
Сохраните и выйдите, затем перезагрузите Apache:
sudo systemctl reload apache2
Тестирование mod_evasive
Пришло время проверить, правильно ли работает модуль.
Используйте скрипт test.pl
. Его сценарий расположен по этому адресу:
/usr/share/doc/libapache2-mod-evasive/examples/test.pl
.
Для его запуска примените эту команду:
perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl
Вывод должен выглядеть таким образом:
Параметры и настройки
DOSSystemCommand
Вы, возможно, заметили, что эта опция была помечена как комментарий и отключена. Она позволяет указать системную команду, которая будет выполняться при добавлении IP-адреса в чёрный список. Вы можете использовать её, чтобы запустить команду для добавления IP-адреса в брандмауэр или IP-фильтр.
DOSHashTableSize
Увеличьте значение для более загруженных веб-серверов. Опция выделяет пространство для выполнения операций поиска. Увеличение размера улучшает скорость за счёт памяти.
DOSPageCount
Количество запросов для отдельной страницы, после которого адрес помещается в чёрный список. В примере стоит 2, но это достаточно маленькое (и агрессивное) значение. Увеличьте его, чтобы уменьшить количество ложных срабатываний.
DOSSiteCount
Общее количество запросов на один и тот же сайт по одному и тому же IP-адресу. По умолчанию установлено значение 50. Вы можете увеличить его до 100, чтобы уменьшить количество ложных срабатываний.
DOSPageInterval
Количество секунд для DOSPageCount. По умолчанию значение равно 1 секунде. Это означает, что если вы не измените его, запрос 2 страниц за 1 секунду временно поместит IP-адрес в чёрный список.
DOSSiteInterval
Как и DOSPageInterval, он определяет количество секунд, которые отслеживает DOSSiteCount. По умолчанию это значение равно 1 секунде, то есть если один IP-адрес запрашивает 50 ресурсов на одном и том же веб-сайте за одну секунду, он будет временно помещён в чёрный список.
DOSBlockingPeriod
Время, в течение которого IP-адрес остаётся в чёрном списке. По умолчанию установлено 10 секунд, но вы можете изменить его на любое значение, которое вам нравится.
DOSLogDir
По умолчанию он настроен на запись журналов в /var/log/mod_evasive
. Эти журналы можно просмотреть позже, чтобы оценить поведение клиента.
Белые IP-адреса
Эта опция по умолчанию не включена в файл evasive.conf
.
Откройте файл для редактирования и добавьте следующую строку:
DOSWhitelist ваш_IP_адрес
Подставьте IP-адрес, который хотите добавить в белый список. Нужно указывать только одну запись в строке. Обычно список используется для доверенных клиентов, которые обмениваются с вашим сайтом большим количеством данных. Этот инструмент хорош для обнаружения ботов и скриптов. Если есть боты или сценарии, которые вы хотите разрешить, можете внести их.
Обязательно сохраните файл и выйдите из него, а затем перезагрузите службу Apache перед тестированием любого из этих параметров.
DNS Injection
Спам из веб-форм не только распространён, но и является быстрым способом внести домен в чёрный список подобный Spamhaus. Чтобы предотвратить подобное, вам нужно добавить ещё один модуль в Apache.
В терминале введите:
sudo apt-get -y install libapache2-mod-spamhaus
После завершения установки введите команду:
sudo touch /etc/spamhaus.wl
Далее откройте файл /etc/apache2/apache2.conf
(используя sudo
и ваш любимый текстовый редактор) и добавьте в конец вашего файла конфигурации блок:
<IfModule mod_spamhaus.c> MS_METHODS POST, PUT, OPTIONS, CONNECT MS_WhiteList /etc/spamhaus.wl MS_CacheSize 256 </IfModule>
Сохраните файл apache2. conf
и перезапустите Apache, чтобы новый модуль вступил в силу.
Slowloris
В Apache есть модуль для предотвращения подобных DOS-атак. Вот как это работает. Откройте окно терминала. Введите команду:
sudo apt-get -y install libapache2-mod-qos
После завершения установки проверьте конфигурацию в /etc/apache2/mods-available/qos.conf
, чтобы убедиться, что она идеально соответствует вашим потребностям. После настройки модуля (при необходимости) перезапустите Apache.
Дополнительные средства защиты
Скрыть версию сервера
Это одно из первых соображений, поскольку вы не хотите показывать, какую версию веб-сервера вы используете. Её разоблачение означает, что вы помогаете хакеру ускорить процесс разведки.
Перейдите в папку:
$ Web_Server/conf
Измените httpd.conf
с помощью редактора. Добавьте следующую директиву и сохраните httpd.conf
:
ServerTokens Prod ServerSignature Off
Перезапустите Apache. ServerSignature
удалит информацию о версии со страницы.ServerTokens
изменит заголовок только на рабочий, т. е. Apache.
Защита от атаки Clickjacking
Атака данного типа позволяет злоумышленнику выполнить клик на сайте-жертве от имени легитимного посетителя.
Чтобы обезопасить свой веб-сервер, вам нужно использовать заголовок «X-FRAME-OPTIONS»
Вы можете сделать это, отредактировав файл apache2.conf
.
sudo nano /etc/apache2/apache2.conf
Добавьте следующую строку внутри Directory /var/www/html/
:
Header always append X-Frame-Options SAMEORIGIN
Сохраните файл и перезапустите Apache.
sudo /etc/init.d/apache2 restart
Теперь попробуйте открыть веб-браузер для доступа к веб-серверу. Проверьте заголовки ответа HTTP в firebug. Вы должны увидеть X-Frame-Options.
Защита от атаки XSS
XSS (англ. Cross-Site Scripting — «межсайтовый скриптинг») является одной из наиболее распространённых атак на уровне приложений.
Вы можете защититься от неё, отредактировав файл конфигурации Apache.
sudo nano /etc/apache2/apache2.conf
Добавьте следующую строку внутри Directory /var/www/html/
:
Header set X-XSS-Protection "1; mode=block"
Заключение
Мы рассмотрели установку и настройку, а также все наиболее важные способы защиты сервера Apache, и теперь вы можете полноценно приступить к изучению его работы на практике.
Вадим Сычёв
Как установить веб-сервер Apache на Linux CentOS 7?
Устанавливаем и запускаем httpd
yum install httpd #устанавливаем systemctl enable httpd #разрешаем запуск веб-сервера после перезагрузки операционной системы systemctl start httpd #запускаем веб-сервер Apache
В браузере вводим IP-адрес или домен нашего сервера и проверяем, что Apache работает. Если ничего не отображается, проверяем запущен ли веб-сервер командой ps ax | grep httpd. Проверяем открыт ли доступ к веб-серверу в файрволл. Разрешаем сервис httpd и должно работать.
Добавляем и конфигурируем наш сайт
Пусть доменное имя сайта будет puzzle.itsoft.ru. Сайты будем хранить в папке /site. Логи мы положим рядом с публичным контентом сайта, но так, что обращаясь к сайту логи прочитать нельзя. Аналогичным образом рекомендуется хранить защищённый контент сайта, к которому не должно быть прямого доступа у посетителей сайта.
mkdir /site #создаём папки, где будет расположен веб-сайт mkdir /site/puzzle mkdir /site/puzzle/public mkdir /site/puzzle/logs chown -R apache. /site/ /site/puzzle/public/index.html #создаём файлик и записываем туда просто одно слово Hi! vi /etc/httpd/conf.d/puzzle.itsoft.ru.conf #и вставляем следующий контент <VirtualHost *:80> ServerName puzzle.itsoft.ru ServerAlias www.puzzle.itsoft.ru DocumentRoot /site/puzzle/public <Directory /site/puzzle/public> Options FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog /site/puzzle/logs/error. log CustomLog /site/puzzle/logs/access.log common </VirtualHost>
Теперь перезагружаем веб-сервер.
systemctl restart httpd # и Apache не запустился Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details. systemctl status httpd.service #ничего толкового не показывает, т.к. всё обрезано systemctl status httpd.service -l #запускаем с ключом -l, но и там ничего непонятно ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Tue 2020-04-07 19:10:11 MSK; 2min 24s ago Docs: man:httpd(8) man:apachectl(8) Process: 10192 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE) Process: 10191 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE) Main PID: 10191 (code=exited, status=1/FAILURE) Apr 07 19:10:10 localhost. localdomain systemd[1]: Starting The Apache HTTP Server... Apr 07 19:10:11 localhost.localdomain systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE Apr 07 19:10:11 localhost.localdomain kill[10192]: kill: cannot find process "" Apr 07 19:10:11 localhost.localdomain systemd[1]: httpd.service: control process exited, code=exited status=1 Apr 07 19:10:11 localhost.localdomain systemd[1]: Failed to start The Apache HTTP Server. Apr 07 19:10:11 localhost.localdomain systemd[1]: Unit httpd.service entered failed state. Apr 07 19:10:11 localhost.localdomain systemd[1]: httpd.service failed. journalctl -xe #пробуем так и тоже пока прчина не ясна Apr 07 19:14:20 localhost.localdomain sshd[10273]: Received disconnect from 118. Apr 07 19:14:20 localhost.localdomain sshd[10273]: Disconnected from 118.126.90. Apr 07 19:14:31 localhost.localdomain sshd[10276]: Invalid user deploy from 138. Apr 07 19:14:31 localhost.localdomain sshd[10276]: input_userauth_request: inval Apr 07 19:14:31 localhost. localdomain sshd[10276]: pam_unix(sshd:auth): check pa tail /var/log/httpd/error_log #на самом деле нужно смотреть сюда и тут мы видим (13)Permission denied: AH00091: httpd: could not open error log file /site/puzzle/logs/error.log.
Смотрим права ls -la и по-прежнему ничего не понимаем.
ls -la /site/puzzle/logs/ total 8 drwxr-xr-x. 2 apache apache 41 Apr 4 19:43 . drwxr-xr-x. 4 apache apache 32 Apr 4 19:11 .. -rw-r--r--. 1 apache apache 585 Apr 4 19:44 access.log -rw-r--r--. 1 apache apache 260 Apr 4 19:44 error.log
Проблема в дополнительных настройках прав доступа к файлам SELinux. Самый простой и неверный путь отключить этот модуль. Но это создаст потенциальную угрозу безопасности. Поэтому верный путь — разобраться с настройками.
getenforce #проверяем, что он действительно работает Enforcing yum install -y policycoreutils-python #устанавливаем утилиты для управления правами доступа к файлам и папкам semanage fcontext -a -t httpd_sys_content_t '/site(/. *)?' #разрешаем доступ на чтение веб-серверу ко всем папкам всех сайтов semanage fcontext -a -t httpd_log_t '/site/puzzle/logs(/.*)?' #разрешаем веб-серверу писать логи restorecon -Rv /site #активируем правила доступа systemctl restart httpd #запускаем веб-сервер
Проверяем в браузере. Ура! Заработало!
Есть ещё две опции, которые могут вам понадобится httpd_sys_rw_content_t для папок куда веб-сервер имеет право писать данные. Это может быть папка для загрузки файлов. И httpd_cache_t для директории с кешами файлов, если вы используете mod_cache.
Настраиваем доступ к сайту для веб-мастера
Ранее мы создали папки для сайта под пользователем root. Но к сайту нужен отдельный доступ веб-мастеру. Для этого смотри статью как добавить пользователя в Unix.
Смотрите также
Как установить SSL-сертификат на веб-сервер Apache под Linux?HTTPD — веб-сервер Apache2
Apache — наиболее часто используемый веб-сервер в системах Linux. Веб-серверы используются для обслуживания веб-страниц, запрашиваемых клиентскими компьютерами. Клиенты обычно запрашивают и просматривают веб-страницы с помощью приложений веб-браузера, таких как Firefox, Opera, Chromium или Internet Explorer.
Пользователи вводят унифицированный указатель ресурсов (URL), чтобы указать на веб-сервер с помощью его полного доменного имени (FQDN) и пути к требуемому ресурсу. Например, чтобы просмотреть домашнюю страницу веб-сайта Ubuntu, пользователь введет только полное доменное имя:
www.ubuntu.com
Чтобы просмотреть подстраницу сообщества, пользователь должен ввести полное доменное имя, а затем путь:
www.ubuntu.com/community
Наиболее распространенным протоколом, используемым для передачи веб-страниц, является протокол передачи гипертекста (HTTP). Также поддерживаются такие протоколы, как протокол передачи гипертекста по протоколу защищенных сокетов (HTTPS) и протокол передачи файлов (FTP), протокол для загрузки и выгрузки файлов.
Веб-серверы Apacheчасто используются в сочетании с ядром базы данных MySQL, языком сценариев HyperText Preprocessor (PHP) и другими популярными языками сценариев, такими как Python и Perl. Эта конфигурация называется LAMP (Linux, Apache, MySQL и Perl/Python/PHP) и образует мощную и надежную платформу для разработки и развертывания веб-приложений.
Установка
Веб-сервер Apache2 доступен в Ubuntu Linux. Чтобы установить Apache2:
В командной строке терминала введите следующую команду:
sudo apt установить apache2
Конфигурация
Apache2 настраивается путем размещения директив в текстовых файлах конфигурации. Эти директивы разделены между следующими файлами и каталогами:
apache2.conf: основной файл конфигурации Apache2. Содержит настройки, которые глобальный для Apache2.
httpd.conf: исторически основной файл конфигурации Apache2, названный в честь демона httpd. В других дистрибутивах (или более старых версиях Ubuntu) этот файл может присутствовать. В Ubuntu все параметры конфигурации были перемещены в apache2.conf и указанные ниже каталоги, и этот файл больше не существует.
conf-available: этот каталог содержит доступные файлы конфигурации. Все файлы, которые были ранее в
/etc/apache2/conf.d
следует переместить в/etc/apache2/conf-available
.conf-enabled: содержит символических ссылок на файлы в
/etc/apache2/conf-available
. Когда файл конфигурации имеет символическую ссылку, он будет включен при следующем перезапуске apache2.envvars: файл, в котором установлены переменные среды Apache2 .
модов-доступно: этот каталог содержит файлы конфигурации для загрузки модулей и их настройки. Однако не все модули будут иметь определенные файлы конфигурации.
с поддержкой модов: содержит символических ссылок на файлы в
/etc/apache2/mods-available
. Когда файл конфигурации модуля имеет символическую ссылку, он будет включен при следующем перезапуске apache2.ports.conf: содержит директивы, определяющие, какие порты TCP прослушивает Apache2.
доступных сайтов: в этом каталоге есть файлы конфигурации для Apache2 виртуальных хостов . Виртуальные хосты позволяют настроить Apache2 для нескольких сайтов с отдельными конфигурациями.
сайтов с поддержкой: , например, с поддержкой модов,
с поддержкой сайтов
содержит символические ссылки на каталог/etc/apache2/sites-available
. Точно так же, когда файл конфигурации на сайтах доступен по символической ссылке, настроенный им сайт будет активен после перезапуска Apache2.magic: инструкции для определения типа MIME на основе первых нескольких байтов файла.
Кроме того, с помощью директивы Include можно добавить другие файлы конфигурации, а для включения многих файлов конфигурации можно использовать подстановочные знаки. Любая директива может быть помещена в любой из этих конфигурационных файлов. Изменения в основных файлах конфигурации распознаются Apache2 только при его запуске или перезапуске.
Сервер также читает файл, содержащий типы MIME-документов; имя файла задается Директива TypesConfig , обычно через /etc/apache2/mods-available/mime.conf
, которая также может включать дополнения и переопределения, и по умолчанию /etc/mime.types
.
Основные настройки
В этом разделе объясняются основные параметры конфигурации сервера Apache2. Дополнительные сведения см. в документации Apache2.
Apache2 поставляется с конфигурацией по умолчанию, удобной для виртуального хоста. То есть он настроен с одним виртуальным хостом по умолчанию (используя VirtualHost ), который можно изменить или использовать как есть, если у вас есть один сайт, или использовать в качестве шаблона для дополнительных виртуальных хостов, если у вас несколько сайтов. Если оставить его в покое, виртуальный хост по умолчанию будет служить вашим сайтом по умолчанию, или пользователи сайта увидят, не соответствует ли введенный ими URL-адрес директиве ServerName любого из ваших пользовательских сайтов. Чтобы изменить виртуальный хост по умолчанию, отредактируйте файл
/etc/apache2/sites-available/000-default.conf
.Примечание
Директивы, установленные для виртуального хоста, применяются только к этому конкретному виртуальному хосту. Если директива установлена для всего сервера и не определена в настройках виртуального хоста, используется настройка по умолчанию. Например, вы можете определить адрес электронной почты веб-мастера и не определять отдельные адреса электронной почты для каждого виртуального хоста.
Если вы хотите настроить новый виртуальный хост или сайт, скопируйте этот файл в тот же каталог с выбранным вами именем. Например:
sudo cp /etc/apache2/sites-available/000-default. conf /etc/apache2/sites-available/mynewsite.conf
Отредактируйте новый файл, чтобы настроить новый сайт, используя некоторые директивы, описанные ниже.
Директива ServerAdmin указывает адрес электронной почты, который будет объявлен для администратора сервера. Значение по умолчанию — webmaster@localhost. Это должно быть изменено на адрес электронной почты, который доставлен вам (если вы являетесь администратором сервера). Если на вашем веб-сайте возникла проблема, Apache2 отобразит сообщение об ошибке, содержащее этот адрес электронной почты, на который следует сообщить о проблеме. Найдите эту директиву в файле конфигурации вашего сайта в /etc/apache2/sites-available.
Директива Listen указывает порт и, возможно, IP-адрес, который Apache2 должен прослушивать. Если IP-адрес не указан, Apache2 будет прослушивать все IP-адреса, назначенные машине, на которой он работает. Значение по умолчанию для директивы Listen — 80. Измените это значение на 127.0.0.1:80, чтобы заставить Apache2 прослушивать только ваш петлевой интерфейс, чтобы он не был доступен в Интернете, на (например) 81, чтобы изменить порт, который он слушает или оставьте все как есть для нормальной работы. Эту директиву можно найти и изменить в отдельном файле,
/etc/apache2/ports.conf
Директива ServerName является необязательной и указывает, на какое полное доменное имя должен отвечать ваш сайт. Виртуальный хост по умолчанию не имеет указанной директивы ServerName, поэтому он будет отвечать на все запросы, которые не соответствуют директиве ServerName в другом виртуальном хосте. Если вы только что приобрели доменное имя
mynewsite.com
и хотите разместить его на своем сервере Ubuntu, значение директивы ServerName в файле конфигурации вашего виртуального хоста должно бытьmynewsite.com
. Добавьте эту директиву в новый файл виртуального хоста, который вы создали ранее (/etc/apache2/sites-available/mynewsite. conf
).Вы также можете захотеть, чтобы ваш сайт отвечал на
www.mynewsite.com
, так как многие пользователи посчитают префикс www подходящим. Используйте для этого директиву ServerAlias . Вы также можете использовать подстановочные знаки в директиве ServerAlias.Например, следующая конфигурация заставит ваш сайт отвечать на любой запрос домена, оканчивающийся на .mynewsite.com .
псевдоним сервера *.mynewsite.com
Директива DocumentRoot указывает, где Apache2 должен искать файлы, составляющие сайт. Значение по умолчанию — /var/www/html, как указано в
/etc/apache2/sites-available/000-default.conf
. При желании измените это значение в файле виртуального хоста вашего сайта и не забудьте создать этот каталог, если это необходимо!
Включить новый VirtualHost с помощью утилиты a2ensite и перезапустите Apache2:
sudo a2ensite мой сайт новостей sudo systemctl перезапустить apache2. service
Примечание
Обязательно замените mynewsite на более описательное имя виртуального хоста. Один из способов — назвать файл после директивы ServerName VirtualHost.
Аналогично используйте утилиту a2dissite для отключения сайтов. Это может быть полезно при устранении неполадок с конфигурацией нескольких виртуальных хостов:
sudo a2dissite мой новостной сайт sudo systemctl перезапустить apache2.service
Настройки по умолчанию
В этом разделе объясняется настройка параметров сервера Apache2 по умолчанию. Например, если вы добавите виртуальный хост, параметры, настроенные для виртуального хоста, будут иметь приоритет для этого виртуального хоста. Для директивы, не определенной в настройках виртуального хоста, используется значение по умолчанию.
DirectoryIndex — это страница по умолчанию, обслуживаемая сервером, когда пользователь запрашивает индекс каталога, указав косую черту (/) в конце имени каталога.
Например, когда пользователь запрашивает страницу
http://www.example.com/this_directory/
, он или она получит либо страницу DirectoryIndex, если она существует, либо сгенерированный сервером список каталогов, если он не существует, и Указан параметр «Индексы» или страница «Отказано в доступе», если ни один из них не соответствует действительности. Сервер попытается найти один из файлов, перечисленных в директиве DirectoryIndex, и вернет первый найденный. Если он не находит ни один из этих файлов и если Options Indexes 9Для этого каталога установлено значение 0028, сервер сгенерирует и вернет список в формате HTML подкаталогов и файлов в каталоге. Значение по умолчанию, найденное в/etc/apache2/mods-available/dir.conf
, — «index.html index.cgi index.pl index.php index.xhtml index.htm». Таким образом, если Apache2 найдет в запрошенном каталоге файл, соответствующий любому из этих имен, будет отображен первый.Директива ErrorDocument позволяет указать файл, который Apache2 будет использовать для определенных событий ошибок. Например, если пользователь запрашивает несуществующий ресурс, возникает ошибка 404. По умолчанию Apache2 просто возвращает код возврата HTTP 404. Читать
/etc/apache2/conf-available/localized-error-pages.conf
для получения подробных инструкций по использованию ErrorDocument, включая расположение файлов примеров.По умолчанию сервер записывает журнал передачи в файл
/var/log/apache2/access.log
. Вы можете изменить это для каждого сайта в файлах конфигурации вашего виртуального хоста с помощью директивы CustomLog или опустить его, чтобы принять значение по умолчанию, указанное в/etc/apache2/conf-available/other-vhosts-access-log. .конф
. Вы также можете указать файл, в который записываются ошибки, с помощью директивы ErrorLog , значение которой по умолчанию —/var/log/apache2/error.log
. Они хранятся отдельно от журналов передачи, чтобы помочь в устранении неполадок с вашим сервером Apache2. Вы также можете указать LogLevel (значение по умолчанию — «warn») и LogFormat (см./etc/apache2/apache2.conf
для значения по умолчанию).Некоторые параметры указываются для каждого каталога, а не для каждого сервера. Опции — одна из этих директив. Раздел каталога заключен в XML-подобные теги, например:
.<Каталог /var/www/html/mynewsite> ... Каталог>
Директива Options в разделе Directory принимает одно или несколько из следующих значений (среди прочих), разделенных пробелами:
ExecCGI — Разрешить выполнение сценариев CGI. CGI-скрипты не выполняются, если этот параметр не выбран.
Осторожно
Большинство файлов не должны выполняться как сценарии CGI. Это было бы очень опасно. CGI-скрипты должны храниться в каталоге, отдельном от вашего DocumentRoot и за его пределами, и только этот каталог должен иметь установленную опцию ExecCGI. Это значение по умолчанию, а расположение CGI-скриптов по умолчанию —
/usr/lib/cgi-bin
.Включает — Разрешить включение на стороне сервера. Серверные включения разрешают HTML-файлу включать другие файлы. См. документацию Apache SSI (сообщество Ubuntu) для получения дополнительной информации.
IncludesNOEXEC — разрешить включение на стороне сервера, но отключить команды #exec и #include в сценариях CGI.
Индексы — Показать отформатированный список содержимого каталога, если в запрошенном каталоге не существует DirectoryIndex (например, index.html).
Осторожно
Из соображений безопасности это обычно не следует устанавливать и, конечно же, не следует устанавливать в каталоге DocumentRoot. Включайте эту опцию осторожно для каждого каталога, только если вы уверены, что хотите, чтобы пользователи видели все содержимое каталога.
Multiview — поддержка многоэкранных режимов с согласованием содержимого; эта опция отключена по умолчанию из соображений безопасности. См. документацию Apache2 по этому параметру.
SymLinksIfOwnerMatch — Переходите по символическим ссылкам только в том случае, если у целевого файла или каталога тот же владелец, что и у ссылки.
Настройки apache2
В этом разделе объясняются некоторые основные параметры конфигурации демона apache2.
LockFile — Директива LockFile задает путь к файлу блокировки, используемому при компиляции сервера с использованием либо USE_FCNTL_SERIALIZED_ACCEPT, либо USE_FLOCK_SERIALIZED_ACCEPT. Он должен храниться на локальном диске. Следует оставить значение по умолчанию, если только каталог журналов не находится в общем ресурсе NFS. В этом случае значение по умолчанию следует изменить на местоположение на локальном диске и на каталог, доступный для чтения только пользователю root.
PidFile — Директива PidFile задает файл, в котором сервер записывает свой идентификатор процесса (pid). Этот файл должен быть доступен для чтения только пользователю root. В большинстве случаев следует оставить значение по умолчанию.
User — Директива User устанавливает идентификатор пользователя, используемый сервером для ответа на запросы. Этот параметр определяет доступ к серверу. Любые файлы, недоступные для этого пользователя, также будут недоступны для посетителей вашего сайта. Значением по умолчанию для пользователя является «www-data».
Предупреждение
Если вы точно не знаете, что делаете, не устанавливайте для директивы пользователя значение root. Использование root в качестве пользователя создаст большие дыры в безопасности вашего веб-сервера.
Group — Директива Group аналогична директиве User. Группа задает группу, под которой сервер будет отвечать на запросы. Группа по умолчанию также «www-data».
Модули Apache2
Apache2 — модульный сервер. Это означает, что в главный сервер включены только самые основные функции. Расширенные функции доступны через модули, которые можно загрузить в Apache2. По умолчанию базовый набор модулей включается в сервер во время компиляции. Если сервер скомпилирован для использования динамически загружаемых модулей, то модули можно скомпилировать отдельно и добавить в любой момент с помощью директивы LoadModule. В противном случае Apache2 необходимо перекомпилировать для добавления или удаления модулей.
Ubuntu компилирует Apache2 для динамической загрузки модулей. Директивы конфигурации могут быть условно включены при наличии определенного модуля путем включения их в блок
Вы можете установить дополнительные модули Apache2 и использовать их с вашим веб-сервером. Например, выполните следующую команду в терминале, чтобы установить модуль Python 3 WSGI:
sudo apt установить libapache2-mod-wsgi-py3
Установка автоматически включит модуль, но мы можем отключить его с помощью а2дисмод
:
судо a2dismod wsgi sudo systemctl перезапустить apache2. service
А затем используйте утилиту a2enmod
, чтобы повторно включить его:
судо a2enmod wsgi sudo systemctl перезапустить apache2.service
Дополнительные модули, уже доступные в вашей системе, см. в каталоге /etc/apache2/mods-available
.
Конфигурация HTTPS
Модуль mod_ssl
добавляет в сервер Apache2 важную функцию — возможность шифрования связи. Таким образом, когда ваш браузер обменивается данными с использованием SSL, 9Префикс 0053 https:// используется в начале унифицированного указателя ресурса (URL) на панели навигации браузера.
Модуль mod_ssl
доступен в пакете apache2-common. Выполните следующую команду в терминале, чтобы включить модуль mod_ssl
:
судо a2enmod ssl
Файл конфигурации HTTPS по умолчанию находится в /etc/apache2/sites-available/default-ssl.conf
. Чтобы Apache2 обеспечивал HTTPS, сертификат и файл ключа также необходимы. Конфигурация HTTPS по умолчанию будет использовать сертификат и ключ, сгенерированные пакетом ssl-cert
. Они хороши для тестирования, но автоматически сгенерированный сертификат и ключ следует заменить сертификатом, специфичным для сайта или сервера. Информацию о создании ключа и получении сертификата см. в разделе Сертификаты.
Чтобы настроить Apache2 для HTTPS, введите следующее:
sudo a2ensite по умолчанию-ssl
Примечание
Каталоги
/etc/ssl/certs
и/etc/ssl/private
являются местоположениями по умолчанию. Если вы устанавливаете сертификат и ключ в другой каталог, обязательно измените SSLCertificateFile и SSLCertificateKeyFile соответствующим образом.
Теперь, когда Apache2 настроен для HTTPS, перезапустите службу, чтобы включить новые настройки:
sudo systemctl перезапустить apache2.service
Примечание
В зависимости от того, как вы получили сертификат, вам может потребоваться ввести парольную фразу при запуске Apache2.
Вы можете получить доступ к защищенным страницам сервера, набрав https://your_hostname/url/
в адресной строке браузера.
Совместное использование Разрешение на запись
Чтобы несколько пользователей могли писать в один и тот же каталог, необходимо предоставить разрешение на запись группе, которую они совместно используют. В следующем примере разрешение на запись для общего доступа предоставляется /var/www/html
в группу «вебмастера».
sudo chgrp -R веб-мастера /var/www/html sudo chmod -R g=rwX /var/www/html/
Эти команды рекурсивно устанавливают групповое разрешение для всех файлов и каталогов в /var/www/html
, чтобы разрешить чтение, запись и поиск в каталогах. Многие администраторы находят это полезным для разрешения нескольким пользователям редактировать файлы в дереве каталогов.
Предупреждение
Демон
apache2
будет работать как 9Пользователь 0053 www-data , которому соответствует группаwww-data
. Этим не следует предоставлять доступ на запись к корневому каталогу документа, так как это будет означать, что уязвимости в Apache или приложениях, которые он обслуживает, позволят злоумышленникам перезаписать обслуживаемый контент.
Каталожные номера
Документация Apache2 содержит подробную информацию о директивах конфигурации Apache2. Кроме того, официальную документацию по Apache2 см. в пакете apache2-doc.
Поваренная книга Apache O’Reilly — хороший ресурс для выполнения определенных конфигураций Apache2.
Вопросы по Apache2, относящиеся к Ubuntu, задавайте на IRC-канале #ubuntu-server на libera.chat.
Предыдущий Введение Следующий Сквид прокси-серверы
Как быстро развернуть веб-сервер Apache
Изображение
Изображениес сайта Pixabay
Иногда вам нужно быстро развернуть веб-сервер. Веб-сервер позволяет легко выполнять такие задачи, как тестирование веб-приложений, реализация проекта проверки концепции или просто знакомство с веб-разработкой.
Ниже описано, как это сделать с помощью почтенного HTTP-сервера Apache. Я начну с установки, затем продолжу редактирование базового файла конфигурации, создание нескольких документов, настройку брандмауэра и, наконец, тестирование службы.
Обратите внимание, что это очень простое тестовое развертывание. Он не подходит для веб-серверов с выходом в Интернет. Чтобы быть готовым к работе, вы должны настроить брандмауэры и проверить параметры вашего сервера.
Установить Apache
Если ваш дистрибутив Linux еще не включает Apache, выполните следующую команду для установки пакета:
$ sudo dnf install httpd
Если вы используете другой менеджер пакетов, измените команду соответствующим образом.
Редактировать файл конфигурации
Используя выбранный вами текстовый редактор (у меня Vim, но Nano или другие тоже подойдут), откройте /etc/httpd/conf/httpd. conf
.
Эти два значения уже могут быть установлены в этом файле, но подтвердите их, чтобы быть уверенным:
DocumentRoot /var/www/html Listen 80
Используйте функцию поиска в вашем редакторе, чтобы найти подходящие строфы. Вам может потребоваться раскомментировать раздел DocumentRoot
. В этой статье используется стандартное расположение по адресу /var/www/html 9.0054 .
Директива Listen
просто указывает, какой порт прослушивает служба. В этом случае используйте стандартный порт 80 для HTTP.
[ Лучше интегрируйте безопасность в жизненный цикл вашего программного обеспечения. Загрузите руководство по внедрению DevSecOps. ]
Управление службой
Вы установили веб-сервер, но еще не запускали его. Используйте команду systemctl
для запуска и включения службы httpd
:
$ sudo systemctl запустить httpd $ sudo systemctl status httpd
Запуск службы не означает, что с этого момента она будет запускаться автоматически. Чтобы ваш веб-сервер запускался автоматически после перезагрузки, используйте подкоманду enable
:
$ sudo systemctl enable --now httpd
Open port 80
Теперь, когда сайт настроен (и в реальной ситуации, безопасно), пришло время открыть брандмауэр. Я предполагаю, что вы используете firewalld
, поэтому введите следующие команды, чтобы разрешить HTTP-трафик на сервер:
$ sudo firewall-cmd --permanent --zone=public --add-service=http $ sudo firewall-cmd --reload $ sudo firewall-cmd --list-all --zone=public
Возможно, вам потребуется изменить значение зоны в зависимости от вашего дистрибутива.
Протестируйте сервер
Сначала проверьте сервер с помощью браузера. Запустите Firefox и перейдите по адресу localhost:80
, чтобы увидеть страницу подтверждения веб-сервера Apache по умолчанию.
Создание контента
Вероятно, вы установили веб-сервер не только для того, чтобы увидеть "Это работает!" в вашем браузере. Чтобы сделать ваш сервер немного интереснее, запустите свой любимый текстовый редактор с помощью sudo
и создайте несколько страниц для имитации веб-сайта. Не стесняйтесь делать это простым или сложным, как вам хочется. Вы также можете создать текстовый файл для проверки загрузок с сайта.
Домашняя страница вашего сайта по умолчанию index.html
, и она расположена в /var/www/html
. Сделайте резервную копию существующего файла index.html
и создайте новый, содержащий следующий код:
<голова>Добро пожаловать на мой тестовый сайт! голова> <тело> Этот сайт предназначен только для тестирования тело>
Кроме того, создайте новый текстовый файл с именем download-this.txt
со следующим содержимым, чтобы вы могли протестировать команды curl
и wget
позже:
Если вы можете прочитать это, загрузка прошла успешно!
Сохраните эти два файла по адресу /var/www/html
.
Посмотрите файлы
Предполагая, что это работает, выполните тестовую загрузку файла download-this.txt
.
Используйте другую систему в том же сегменте для тестирования веб-службы. В новой системе запустите веб-браузер. В адресной строке введите IP-адрес веб-сервера.
Не забывайте, вы можете запустить браузер и указать его на сайте с терминала:
$ firefox http://IP
Вы видите страницу приветствия?
Системные администраторы часто используют curl
или wget
для загрузки файлов по HTTP. Эта возможность особенно удобна для автоматической загрузки в сценариях или других сценариях автоматизации.
Запустите эти две команды, чтобы подтвердить возможность загрузки файла:
$ sudo dnf -y install curl $ curl -O http://IP/download-this.txt
$ sudo dnf -y установить wget $ wget http://IP/download-this.txt
Вы получили файл download-this.txt
? Используйте ls
для отображения файла и cat
для чтения его содержимого. У вас может быть две копии файла, если вы протестировали загрузку с помощью команд curl
и wget
.
[ Загрузить электронную книгу Управляйте своей средой Linux для достижения успеха. ]
Проверить журналы
Проверьте файлы журнала Apache на наличие информации о доступе. Например, введите следующее, чтобы просмотреть записи журнала, указывающие на транзакции загрузки файлов:
$ sudo cat /var/log/httpd/access_log | grep -I download-this.txt
Завершить
Вот и все! Вы установили, настроили и протестировали очень простое развертывание веб-сервера всего за несколько шагов. Не забудьте изучить настройки безопасности, прежде чем размещать такое развертывание в своей производственной среде или открывать его для внешнего мира.
Ознакомьтесь со статьями по теме Включить системного администратора
Изображение
Как начать работу с редактором Vi
После того, как вы зафиксировали сочетания клавиш Vi для мышечной памяти, посмотрите, как быстро вы работаете.