Содержание

установка, настройка и способы защиты от атак

Веб-сервер 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. Если мы посмотрим на её содержимое, то увидим, что она содержит страницу

index.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 мы устанавливаем срок действия сертификата в днях. Следующая опция —

-newkey. С её помощью мы создаём новый ключ, в данном случае RSA-ключ размером 2048 бит. В тестовом примере нам не нужно шифровать файл закрытого ключа, поэтому используем -nodes. Если эта опция не указана, файл, в котором хранится ключ, будет защищён паролем, который нужно будет предъявлять каждый раз при перезапуске веб-сервера.

С помощью -keyout и -out мы указываем файл для записи сгенерированного ключа и сертификата соответственно. При запуске команды нам будет предложено ответить на несколько вопросов, после чего будет сгенерирован ключ и сертификат.

Скопируйте сгенерированный ключ и сертификат в каталоги

/etc/ssl/private и /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 для мышечной памяти, посмотрите, как быстро вы работаете.