Шаг 3. — Проверка — info.php
Для того чтобы проверить PHP-FPM и узнать подробную информацию о PHP, нужно создать файл info.php в каталоге html вэб-сервера, вписать в него специальную строчку php-кода, для отображения информации, и в браузере открыть страницу IP-адрес/info.php. Приступим!
Проверка PHP для вэб-серверов Apache и Nginx одинаковая:
Создаём файл info.php.
sudo touch /var/www/html/info.php
Вписываем в файл info.php строчку <?php phpinfo(); ?>. Сделал это одной командой, так быстрее вам будет скопипастить.
sudo sh -c "echo '<?php phpinfo(); ?>' >> /var/www/html/info.php"
Проверим, через cat, вписалась ли строчка в файл info.php.
cat /var/www/html/info.php
У меня всё ок! Теперь в браузере по адресу 192.168.3.8/info.php можно увидеть всю информацию о PHP установленном нашем сервере.(Рис.6) Это значит что PHP корректно работает на нашем Apache или Nginx.
Рис.6 — Информация о PHP в браузере.
В целях безопасности файл info.php лучше удалить, чтобы скрыть информацию от хакеров.
sudo rm /var/www/html/info.php
У меня всё!
Поделиться публикацией
Была ли вам полезна статья? Есть возможность
поддержать проект.
Скринкаст: Базовая установка LAMP WEB сервера на Ubuntu server 14.04 в русском интерфейсе ВИДЕО 3.1
В скринкасте выполнена полная базовая установка LAMP WEB сервера на основе операционной системы Ubuntu server 14.04, включая необходимые компоненты apache, mysql, php, OpenSSH, Postfix из репозиториев Ubuntu в их текущих версиях. Такая базовая установка подойдет для большинства целей и задач, как для организации среды разработки и разработческого LAMP WEB сервера, так и продуктивного. Скринкаст демонстрирует шаги и этапы установки Ubuntu server 14.04 и компонентов LAMP в русском интерфейсе. Для примеров использована виртуальная машина Oracle VM VirtualBox.
Смотреть на YouTube скринкаст: Базовая установка LAMP WEB сервера на Ubuntu server 14.04 в русском интерфейсе ВИДЕО 3.1
Содержание скринкаста:
- Что такое «Базовая установка LAMP WEB сервера»……………………00:15
- Компоненты LAMP WEB сервера…………………………………….01:09
- Репозитории Ubuntu…………………………………………….02:00
- PPA репозитории на Launchpad……………………………………05:27
- Цели Базовой установки LAMP WEB сервера………………………….05:50
- Создание виртуальной машины…………………………………….07:57
- Выбор языка начального экрана-меню программы установки Ubuntu server..09:43
- Выбор опции «Установить Ubuntu server»…………………………..10:24
- Выбор языка устанавливаемой системы……………………………..10:56
- Выбор географического местоположения…………………………….13:56
- Настройка клавиатуры: язык, переключение…………………………14:17
- Настройка сетевого имени сервера………………………………..16:03
- Настройка учетных записей пользователей и паролей…………………16:22
- Настройка временной зоны……………………………………….19:20
- Разметка дисков……………………………………………….20:14
- Настройка менеджера пакетов apt…………………………………29:10
- Выбор способа обновления системы………………………………..31:20
- Выбор дополнительных пакетов программ: LAMP, OpenSSH, Postfix………33:00
- Настройка MySQL……………………………………………….36:22
- Первичная настройка Postfix…………………………………….36:43
- Установка системного загрузчика GRUB…………………………….40:44
- Завершение установки Ubuntu server………………………………41:15
- Меню загрузки Ubuntu server…………………………………….41:41
- Вход в установленную систему «Ubuntu server 14.04″………………..42:33
- Экран терминала «Ubuntu server 14.04″……………………………42:50
- Обновление пакетов программ после установки системы……………….43:14
- Выход и завершение работы «Ubuntu server 14.04″…………………..46:48
Шаг 1. — Подготовка
На этапе подготовки мы убеждаемся что у нас есть всё необходимое для выполнения дальнейшей инструкции:
- Нам нужна установленная ОС Ubuntu Server 18.04. — Вам в помощь статья — Установка Ubuntu Server 18.04 LTS
- Ubuntu Server 18.04 должна иметь доступ в интернет. — Настройка сети в Ubuntu Server 18.04
- Для проверки потребуется веб-сервер Apache или Nginx. — Apache web server. Установка на Ubuntu Server 18.04
или Установка Nginx на Ubuntu Server 18.04
Посмотрим IP-адрес командой ifconfig(Рис.1).
ifconfig
Рис.1 — Смотрим IP-адрес Ubuntu 18.04.
Адрес моего сервера — 192.168.3.8, в этой статье я буду вводить его в браузере на другом ПК, для проверки работоспособности PHP7.2. Вы должны будете ввести свой IP-адрес.
Если у вас, допустим, Ubuntu Desktop 18.04 и нету возможности подключиться с другого ПК, то вводите на своей же Ubuntu в браузере — localhost или IP-адрес — 127.0.0.1
На этом подготовка завершена, приступаем к установке PHP7.2.
Тюнинг веб-сервера
PHP
Внесем небольшие изменения в нашу конфигурацию PHP:
- post_max_size — максимальный объем отправляемых на сервер данных;
- upload_max_filesize — максимально допустимый размер одного загружаемого файла;
- short_open_tag — разрешение использования короткого способа открытия php (<?);
- date.timezone — временная зона, которая будет использоваться веб-сервером, если ее не переопределить настройками в коде php или в файле .htaccess.
Данные изменения вносятся в разные файлы в зависимости от версии PHP и обработчике. Например, для php версии 7.4 и Apache мы открываем на редактирование следующий файл:
vi /etc/php/7.4/apache2/php.ini
И правим следующее:
post_max_size = 1G
…
upload_max_filesize = 512M
…
short_open_tag = On
…
date.timezone = «Europe/Moscow»
Но мы упростим задачу. Для начала, создадим две переменные:
PHP_VER=7.4
INT=apache2
Теперь мы можем упростить настройку для Apache:
sed -e «s/post_max_size = 8M/post_max_size = 1G/» -i /etc/php/$PHP_VER/$INT/php.ini
sed -e «s/upload_max_filesize = 2M/upload_max_filesize = 512M/» -i /etc/php/$PHP_VER/$INT/php.ini
sed -e «s/short_open_tag = Off/short_open_tag = On/» -i /etc/php/$PHP_VER/$INT/php.ini
sed -e «s/;date.timezone =/date.timezone =’Europe\/Moscow’/» -i /etc/php/$PHP_VER/$INT/php.ini
Посмотреть результат можно командой:
cat /etc/php/$PHP_VER/$INT/php.ini | grep -e «^post_max_size\|^upload_max_filesize\|^short_open_tag\|^date.timezone»
Теперь меняем интерпретатор:
INT=fpm
И повторяем:
sed -e «s/post_max_size = 8M/post_max_size = 1G/» -i /etc/php/$PHP_VER/$INT/php.ini
sed -e «s/upload_max_filesize = 2M/upload_max_filesize = 512M/» -i /etc/php/$PHP_VER/$INT/php.ini
sed -e «s/short_open_tag = Off/short_open_tag = On/» -i /etc/php/$PHP_VER/$INT/php.ini
sed -e «s/;date.timezone =/date.timezone =’Europe\/Moscow’/» -i /etc/php/$PHP_VER/$INT/php.ini
Проверяем:
cat /etc/php/$PHP_VER/$INT/php.ini | grep -e «^post_max_size\|^upload_max_filesize\|^short_open_tag\|^date.timezone»
Перезапускаем php-fpm и apache:
systemctl restart php7.4-fpm
systemctl restart apache2
NGINX
Открываем на редактирование следующий файл:
vi /etc/nginx/nginx.conf
И внутри секции http добавляем:
client_max_body_size 512M;
После перезапускаем nginx:
systemctl restart nginx
Как заходить на сервер, запущенный в WSL, со сторонних устройств в одной локальной сети
Я пишу много html-страниц. В процессе работы у меня запущен локальный сервер, собирающий разметку, стили, javascript, спрайты и т.п. Бывает удобно запустить на основном компьютере сервер и зайти на него с помощью ноутбука, телефона, планшета (сервер доступен по IP, наподобие http://192.168.1.207:8080). Однако, встроенный в Windows 10 фаервол по умолчанию блокирует такие соединения.
Чтобы попасть на такой сервер, нужно добавить правило для брандмауэра:
- Найти с помощью поиска «Брандмауэр защитника Windows», открыть, нажать слева «Дополнительные параметры».
- В открывшемся окне Монитора брандмауэра выбрать (слева) «Правила для входящих…», нажать «Создать правило» (справа).
- Выбрать «Для порта», нажать «Далее».
- Выбрать «Определенные локальные порты», ввести номер порта (мой локальный сервер работает на порту 8080, его я и ввёл), нажать «Далее».
- Выбрать «Разрешить подключение», нажать «Далее», выбрать профили (я выбрал все), «Далее».
- Ввести какое-либо имя, нажать «Готово».
После этого получится зайти с любого устройства (в одной локальной сети) на запущенный в WSL на рабочем компьютере сервер.
Также можно использовать + и всё будет работать без дополнительных настроек.
MariaDB и база данных для Paperwork
Начать стоит с MariaDB, здесь я не буду описывать ее установку и настройку, весь процесс подробно описан в отдельной статье.
Допустим что MariaDB уже стоит, в таком случае нам нужно создать базу данных, которую Paperwork будет использовать в своей работе.
Сейчас мы создадим базу данных — paperwork, если имя не устраивает, можно задать свое, изменив его в вводимых командах. То же касается пользователя базы и его пароля, в командах я буду использовать ‘username’ и ‘password’ соответственно.
# Войти в консоль mariadb mysql -u root -p # Создаем пользователя базы и пароль create user 'username@localhost' identified by 'password'; # Создаем базу данных - paperwork create database paperwork default character set utf8 collate utf8_general_ci; # Разрешаем пользователю управлять созданной базой данных grant all privileges on paperwork.* to username@localhost identified by 'password' with grant option; # Применяем изменения flush privileges; # Выходим из консоли quit
Запомним эти данные, они нам понадобятся для настройки связи Paperwork с базой данных.
Before You Begin
-
If you have not already done so, create a Linode account and Compute Instance. See our
Getting Started with Linode and
Creating a Compute Instance guides. -
Follow our
Setting Up and Securing a Compute Instance guide to update your system. You may also wish to set the timezone, configure your hostname, create a limited user account, and harden SSH access. Do not follow the Configure a Firewall section yet as this guide includes firewall rules specifically for an OpenVPN server. -
PHP is usually used in conjunction with a web server. An Apache or NGINX web server should already be installed on the Linode. See the Linode guides for
Apache or
NGINX for more information. Instructions for both servers are included in this guide. If is enabled, ensure it allows web server access.
Установка LAMP в Ubuntu
1. Установка пакетов с помощью tasksel
Tasksel — это утилита, которая позволяет устанавливать пакеты различных программ буквально в одну команду. Она разработана для Debian, но может использоваться и в Ubuntu. Для её установки выполните в терминале:
Затем, чтобы установить Lamp на Ubuntu, достаточно выполнить такую команду:
Установка займёт кое-какое время, потому что утилите придётся скачать и настроить все пакеты, но потом вы получите полностью работающий стек LAMP.
2. Как установить Lamp в Ubuntu вручную
Если вы не хотите использовать tasksel, вы можете установить все пакеты по отдельности и настроить их для совместной работы. Сначала установим все необходимые пакеты. Установка последней версии Apache2 из репозиториев:
Установка базы данных MariaDB из репозиториев:
Или вы можете установить MySQL:
Установка интерпретатора языка программирования PHP 7.2 и расширений, необходимых для его работы с Apache и MySQL:
Установка дополнительных расширений для PHP, которые вам понадобятся в будущем для хостинга большинства популярных проектов:
3. Настройка брандмауэра
По умолчанию брандмауэр закрывает все неразрешённые входящие подключения. Поэтому, чтобы к вашему веб-серверу можно было получить доступ извне, необходимо добавить его порт в исключения:
4. Проверка работы LAMP
Для проверки наберите в адресной строке браузера IP-адрес сервера, куда вы устанавливали LAMP, у меня это localhost:
Работает, теперь давайте проверим, правильно ли работает PHP. Создайте файл в директории /var/www/html со следующим содержимым:
Затем откройте адрес localhost/phpinfo.php. Если всё работает, вы должны увидеть такую страничку:
Также можно проверить, работает ли MySQL: если расширение PHP для MySQL загрузилось, то на странице phpinfo будет размещена такая информация:
Готово, дальше идёт в основном настройка LAMP в Ubuntu 18.04.
5. Настройка Apache
Для обработки запросов будет использоваться модуль mpm_prefork, так как он совместим с большинством систем. Поэтому его нужно активировать, а mpm_event и mpm_worker отключить:
Включаем mod_rewrite, который сейчас используется практически везде:
Если вы хотите использовать файлы httaccess для настроек, то необходимо в файле /etc/apache2/apache2.conf изменить значение AllowOverride с None на All для нужных местоположений, например, для /var/www:
Далее необходимо перезапустить Apache:
Подробнее про настройку веб-сервера читайте в отдельной статье установка и настройка Apache.
6. Настройка PHP
По умолчанию короткие теги, обрамляющие скрипты PHP, отключены. Это может привести к тому, что некоторые скрипты, использующие эти теги, могут не выполнятся. Для включения этой возможности откройте файл:
Найдите short_open_tag = Off и замените на:
Вывод ошибок в PHP по умолчанию тоже отключён. Если вы хотите разрабатывать программы на этом сервере, то вам необходимо включить ошибки, иначе вместо ошибок вы будете видеть пустой экран. Для этого найдите эти строки и приведите их к такому виду:
Или для записи ошибок в файл вы можете добавить такую строку:
После внесения всех изменений необходимо перезапустить Apache:
Подробнее про настройку файла php.ini смотрите здесь.
7. Настройка MySQL
По умолчанию MySQL не очень хорошо настроена в плане безопасности. Нам нужно задать пароль суперпользователя и удалить гостевой доступ. Для выполнения всех этих задач запустите в терминале:
На первом этапе утилита попросит вас ввести пароль суперпользователя, так как он ещё не задан, просто нажмите Enter:
Далее введите новый пароль:
Во всех следующих вопросах нужно отвечать утвердительно:
- Запретить удалённый вход для root;
- Запретить гостевой вход;
- Удалить временные таблицы;
- Обновить таблицы привилегий.
Готово, теперь ваша база данных защищена и готова к работе.
8. Удаление LAMP в Ubuntu
Чтобы полностью удалить LAMP из системы, достаточно удалить все пакеты, которые вы установили ранее:
Команда purge позволяет удалить не только пакеты, но и их конфигурационные файлы. Если вы хотите оставить конфигурационные файлы, используйте команду remove.
Если установка LAMP на Ubuntu выполнялась с помощью tasksel, то для удаления необходимо выполнить:
Шаг 5 — Тестирование PHP с помощью Apache
Теперь мы создадим тестовый скрипт PHP для подтверждения возможности обрабатывать и обрабатывать запросы файлов PHP в Apache.
Создайте новый файл с именем info.php в корневой папке сайта:
В результате откроется пустой файл. Добавьте в файл следующее:
После завершения редактирования сохраните и закройте файл.
Откройте браузер и введите доменное имя или IP-адрес вашего сервера, а затем название скрипта, в данном случае info.php :
Вы увидите приблизительно следующую страницу:
После проверки соответствующей информации о вашем сервере PHP с помощью данной страницы рекомендуется удалить созданный вами файл, поскольку он содержит конфиденциальную информацию о вашей среде PHP и о вашем сервере Ubuntu. Для этого можно использовать rm :
Шаг 2 — Установка MySQL
Теперь, когда наш веб-сервер установлен и запущен, пора установить MySQL. MySQL это система управления базой данных. Она организует и обеспечит доступ к базам данных, в которых ваш сайт может хранить информацию.
Мы можем вновь использовать для загрузки и установки программного обеспечения. В этот раз мы также установим некоторые вспомогательные пакеты, которые помогут нам в налаживании взаимодействия между компонентами:
Внимание
В данном случае вам нет необходимости предварительно выполнять команду , т.к. мы выполняли ее недавно при установке Apache, и индекс пакетов на вашем комьпютере уже должен быть обновлен.
Вам будет показан список пакетов, которые будут установлены, а также сколько места на диске они займут. Нажмите Y для продолжения установки.
В процессе установки ваш сервер попросит вас задать и подтвердить пароль для пользователя “root” в MySQL. Это администраторский аккаунт в MySQL, который имеет расширенные права. Рассматривайте его как аналог root-аккаунта для самого сервера (однако тот, который вы конфигурируете в данный момент, подходит только для MySQL). Задайте надёжный уникальный пароль, не оставляйте пароль не заданным.
После завершения установки нам потребуется выполнить некоторые дополнительные команды, чтобы наше окружение MySQL было настроено безопасным образом. Введите следующую команду:
Скрипт запросит пароль, который вы только что задали для root пользователя в MySQL. Далее вам будет предложено сконфигурировать плагин валидации паролей ().
Внимание: решение включать плагин валидации паролей или нет носит субъективный характер. При включении все пароли, которые не удовлетворяют определённым критериям безопасности, будут отвергаться MySQL с сообщением об ошибке
Это может вызывать проблемы, если вы используете “слабые” пароли совместно с программным обеспечением, которое конфигурирует профили пользователей MySQL, например, пакеты Ubuntu для phpMyAdmin. Вы можете оставить валидацию паролей отключенной, но в этом случае вам следует всегда использовать “сильные” уникальные пароли для пользователей базы данных.
Введите y для включения плагина или что-нибудь другое для продолжения без его включения:
Если вы включили валидацию паролей, вам будет предложено установить уровень надёжности паролей при валидации. Имейте в виду, что при выборе значения 2 (самый строгий уровень валидации), вы будете получать ошибки при попытке задать пароль без цифр, букв в верхнем и нижнем регистре, а также без специальных символов, а также при попытке использовать пароль, основанный на распространённых словах, которые уязвимы для подбора паролей по словарю.
Если вы включили валидацию паролей, вам будет показан уровень надёжности заданного вами ранее пароля root пользователя, а также вам будет предложено изменить этот пароль. Если вы не хотите менять пароль, введите n или no:
На все последующие вопросы просто вводите Y и нажимайте клавишу ENTER для выбора настроек по умолчанию. При этом удалятся некоторые тестовые пользователи и базы данных, будет отключена возможность удаленного доступа с учетной записью root-пользователя, и все изменения будут немедленно применены в MySQL.
Теперь ваша система управления базами данных установлена и мы можем двигаться дальше.
Устанавливаем базу данных Mariadb и Phpmyadmin
apt-get install mariadb-server mariadb-client phpmyadmin
Вы увидите следующий вопрос:
Web server to reconfigure automatically: <-- apache2
Выбираем apache2
Configure database for phpmyadmin with dbconfig-common? <-- Yes
Yes
MySQL application password for phpmyadmin: <-- Press enter
Водим пароль и повторяем.
Далее нам нужно подключить майадмин к конфиг файлу apache2.conf, заходим
nano etcapache2apache2.conf
и в apache2.conf внизу страницы добавляем
Include etcphpmyadminapache.conf
Ctrl +S + Z сохраняем
Давайте зайдем в базу данных и добавим пользователя со всеми привилегиями
Вводим в консоли ssh
mysql
и добавляем привилегии как у root ко всем базам, пользователю ‘admin’ с паролем ‘parol’ не забудьте взять в кавычки ‘ ‘ как в примере
grant all privileges on *.* to 'admin'@'localhost' identified by 'parol' WITH GRANT OPTION;
выходим Ctrl-C `
Для работы некоторых движков необходима включенный модуль rewrite в apache2, включим его и перезагрузим Апаче
a2enmod rewrite systemctl restart apache2
Так если мы будем загружать движки в zip архивах то нам понадобится установить архиватор zip в Ubuntu
apt install zip
На этом все сервер Апаче настроен.
Так как мы в файле конфига сайта прописали директорию /var/www/html/sayt, то заходим в
varwwwhtml
mkdir varwwwhtmlsayt
а в каталог shop версию php5.6
Для этого скопируем наш файл 000-default.conf и переименуем его к примеру в shop.conf
cp etcapache2sites-available000-default.conf etcapache2sites-availableshop.conf
Открываем его
nano etcapache2sites-availableshop.conf
Меняем адрес на shop.fvds.ru и версию php5.6 примеры ниже в каких строчках менять.
ServerName shop.fvds.ru ServerAlias <a href="http://www.shop.fvds.ru">www.shop.fvds.ru</a> DocumentRoot varwwwhtmlshop <directory var="" www="" html="" shop=""> SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost" </directory>
Сохраняем и включаем сайт shop водим команду
a2ensite shop.conf
Добавляем директорию
mkdir varwwwhtmlshop
И загружаем наши движки в каталоги, только не перепутайте какую версию php куда вы подключили.
Apache
Для поддержки файла .htaccess, который используется многими сайтами, необходимо установить и настроить веб-сервер Apache.
Устанавливаем apache и модуль для php:
apt-get install apache2 libapache2-mod-php
Заходим в настройки портов:
vi /etc/apache2/ports.conf
И редактируем следующее:
Listen 8080
#<IfModule ssl_module>
# Listen 443
#</IfModule>
#<IfModule mod_gnutls.c>
# Listen 443
#</IfModule>
* мы настроили прослушивание на порту 8080, так как на 80 уже работает NGINX. Также мы закомментировали прослушивание по 443, так как и он будет слушаться NGINX.
Теперь открываем настройку следующего модуля:
vi /etc/apache2/mods-available/dir.conf
И добавляем впереди индексных файлов index.php:
<IfModule dir_module>
DirectoryIndex index.php index.html …
</IfModule>
* если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить index.php, затем index.html и так далее.
Открываем основной конфигурационный файл для apache:
vi /etc/apache2/apache2.conf
Рядом с опциями Directory дописываем:
<Directory /var/www/*/www>
AllowOverride All
Options Indexes ExecCGI FollowSymLinks
Require all granted
</Directory>
* где Directory указывает на путь, для которого мы хотим задать настройки; AllowOverride — позволит переопределить все настройки с помощью файла .htaccess; Options задает некоторые настройки: Indexes разрешает списки каталогов, ExecCGI разрешает запуск cgi скриптов, Require all granted — предоставляет всем доступ к сайтам в данном каталоге.
Ниже допишем:
<IfModule setenvif_module>
SetEnvIf X-Forwarded-Proto https HTTPS=on
</IfModule>
* этой настройкой мы при получении заголовка X-Forwarded-Proto со значением https задаем переменную $_SERVER равную on. Данная настройки критична для функционирования некоторых CMS.
Запрещаем mpm_event:
a2dismod mpm_event
* по умолчанию, apache2 может быть установлен с модулем мультипроцессовой обработки mpm_event. Данный модуль не поддерживает php 7 и выше.
Разрешаем модуль мультипроцессовой обработки mpm_prefork:
a2enmod mpm_prefork
Разрешаем модуль php:
a2enmod php7.4
* в данном примере установлен php версии 7.4.
Разрешаем модуль setenvif:
a2enmod setenvif
Разрешаем модуль rewrite:
a2enmod rewrite
В процессе включения модулей, если мы видим «Module … already enabled», значит модуль уже включен.
Разрешаем автозапуск Apache и перезапускаем службу:
systemctl enable apache2
systemctl restart apache2
Открываем браузер и вводим в адресную строку http://<IP-адрес сервера>:8080. Мы должны увидеть привычную страницу:
* в разделе Server API мы должны увидеть Apache.
NGINX + Apache
Ранее мы настроили связку nginx + php-fpm. Теперь настроим nginx + apache. Открываем конфигурационный файл nginx для сайта по умолчанию:
vi /etc/nginx/sites-enabled/default
Находим наш настроенный location для php-fpm:
…
location ~ \.php$ {
set $root_path /var/www/html;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
…
и меняем на:
…
location ~ \.php$ {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
…
Проверяем и перезапускаем nginx:
nginx -t
systemctl restart nginx
Пробуем открыть в браузере http://<IP-адрес сервера> — должна открыться та же страница, что при проверке Apache (с добавлением 8080):
Apache Real IP
Запросы на apache приходят от NGINX, и они воспринимаются первым как от IP-адреса 127.0.0.1. На практике, это может привести к проблемам, так как некоторым сайтам необходимы реальные адреса посетителей. Для решения проблемы будем использовать модуль remoteip.
Создаем конфигурационный файл со следующим содержимым:
vi /etc/apache2/mods-available/remoteip.conf
<IfModule remoteip_module>
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1/8
</IfModule>
Активируем модуль:
a2enmod remoteip
Перезапускаем apache:
systemctl restart apache2
Для проверки настройки открываем браузер и вводим в адресную строку http://<IP-адрес сервера>, где откроется наша страница phpinfo. В разделе Apache Environment мы должны увидеть внешний адрес компьютера, с которого обращаемся к серверу в опции REMOTE_ADDR.
Шаг 4 — Настройка авторизации по открытому ключу (Рекомендуется)
Следующий шаг в усилении безопасности вашего сервера — это настройка авторизации по открытому ключу для вашего нового пользователя. Данная настройка повысит безопасность вашего сервера, требуя закрытый SSH ключ для входа.
Создание пары ключей
Если у вас ещё нет пары SSH-ключей, которая состоит из открытого и закрытого ключей, вам необходимо её создать. Если у вас уже есть ключ, который вы хотите использовать, перейдите к подразделу “Копирование открытого ключа”.
Чтобы создать новую пару ключей, выполните следующую команду в терминале на вашей локальной машине (т.е. на вашем компьютере):
Если ваш локальный пользователь называется “localuser”, вы увидите вывод следующего вида:
Нажмите “ENTER”, чтобы согласиться с адресом и именем файла (или введите другой адрес/имя файла).
Далее вам будет предложено ввести кодовую фразу для защиты ключа. Вы можете ввести кодовую фразу или оставить ее пустой.
Обратите внимание: Если вы оставите кодовую фразу пустой, вы сможете использовать закрытый ключ для авторизации без ввода кодовой фразы. Если вы зададите кодовую фразу, вам потребуется и закрытый ключ и кодовая фраза для входа. Добавление кодовой фразы к ключам является более безопасным, но оба метода имеют свои области применения и являются более безопасными, чем базовая авторизация паролем
Добавление кодовой фразы к ключам является более безопасным, но оба метода имеют свои области применения и являются более безопасными, чем базовая авторизация паролем.
В результате этого, в поддиректории домашней директории пользователя localuser будет создан закрытый ключ и открытый ключ . Не передавайте закрытый ключ никому, кто не должен иметь доступ к вашим серверам!
Копирование открытого ключа
После создания пары SSH-ключей, вам необходимо скопировать открытый ключ на ваш новый сервер. Мы опишем два простых способа сделать это.
Вариант 1. Использование ssh-copy-id
Если на вашей локальной машине установлен скрипт , вы можете установить ваш открытый ключ для любого пользователя, для которого вы знаете логин и пароль.
Запустите скрипт , указав имя пользователя и IP-адрес сервера, на который вы хотите установить ключ:
После того, как вы введёте пароль, ваш открытый ключ будет добавлен в файл на вашем сервере. Соответствующий закрытый ключ теперь может быть использован для входа на сервер.
Вариант 2. Ручной перенос ключа
Если вы создали пару SSH-ключей, как описано в предыдущем пункте, выполните следующую команду в терминале на вашей локальной машине для печати открытого ключа ():
В результате выполнения данной команды на экран будет выведен ваш открытый SSH-ключ, выглядящий примерно так:
Содержимое id_rsa.pub
Выделите открытый ключ и скопируйте его в буфер обмена.
Чтобы сделать возможным использование SSH-ключа для авторизации с учетной записью нового удалённого пользователя (remote user), вам необходимо добавить открытый ключ в специальный файл в домашней директории этого пользователя.
На сервере, осуществив вход с учетной записью -пользователя, выполните следующие команды для переключения на нового пользователя (замените на ваше имя пользователя):
Теперь вы находитесь в домашней директории нового пользователя.
Создайте новую директорию под названием и ограничьте права на доступ к ней при помощи следующих команд:
Теперь откройте файл в директории с названием в текстовом редакторе. Мы будем использовать для редактирования файла:
Далее добавьте ваш открытый ключ (который должен быть в буфере обмена) путем вставки в текстовый редактор.
Нажмите для закрытия файла, затем для сохранения внесенных изменений, затем для подтверждения имени файла.
Теперь ограничьте права на доступ к файлу authorized_keys при помощи следующей команды:
Введите следующую команду один раз для возврата к пользователю .
Теперь вы можете заходить на сервер по SSH с учетной записью вашего нового пользователя, используя закрытый ключ для авторизации.
Чтобы узнать больше о том, как работает авторизация по ключам, ознакомьтесь с этим руководством: Как настроить авторизацию по SSH-ключам на сервере Linux.
Шаг 3 — Установка PHP
PHP это компонент, который будет обрабатывать код для отображения динамического контента. Он может запускать скрипты, подключаться к нашим базам данных MySQL для получения информации и передавать обработанный контент в наш веб-сервер для отображения.
Мы можем вновь воспользоваться менеджером пакетов для установки компонентов. Мы также добавим некоторые вспомогательные пакеты, чтобы код на PHP мог работать с нашим сервером Apache, а также обращаться к базе данных MySQL:
Данная команда должна установить PHP без каких либо проблем. Вскоре мы это проверим.
В большинстве случаев, мы захотим изменить способ, который использует Apache для поиска файлов при запросе директории. На данный момент, если пользователь запрашивает директорию с сервера, Apache в первую очередь будет искать файл с названием . Мы хотим, чтобы наш веб-сервер отдавал предпочтение PHP файлам, так что мы настроим Apache таким образом, чтобы сначала он искал файлы .
Для этого введите следующую команду, чтобы открыть файл в текстовом редакторе с привилегиями root-пользователя:
Содержимое файла будет выглядеть следующим образом:
/etc/apache2/mods-enabled/dir.conf
Мы хотим переместить PHP файл , выделенный выше, на первое место после спецификации следующим образом:
/etc/apache2/mods-enabled/dir.conf
После внесения правок сохраните и закройте файл сочетанием клавиш CTRL-X. Вам придется подтвердить операцию вводом Y и затем нажатием клавиши ENTER для подтверждения места сохранения файла.
После этого нам необходимо перезапустить Apache для применения внесенных изменений. Вы можете сделать это при помощи команды:
Мы также можем проверить статус сервиса используя :
Установка модулей PHP
Чтобы расширить функциональность PHP, мы можем установить некоторые дополнительные модули.
Для просмотра доступных опций для модулей и библиотек PHP вы можете передать результат в , которая позволит вам проматывать вывод:
Используйте клавиши стрелок вверх и вниз для промативания списка, для выхода нажмите q.
В результате вам будут показаны все опциональные компоненты, которые можно установить, сопровождаемые коротким описанием для каждого:
Чтобы получить больше информации по каждому модулю, вы можете поискать в Интернете или посмотреть полное описание пакета при помощи команды:
Ответ будет содержать много текста, среди которого есть поле . Именно оно и будет содержать расширенное описание функциональности, предоставляемой модулем.
Например, чтобы узнать назначение модуля , мы можем выполнить команду:
Помимо большого количества прочей информации, вы увидите следующее:
Если после изучение вы решили, что хотите установить пакет, вы можете сделать это используя команду как мы делали ранее при установке другого программного обеспечения.
Если мы решили, что хотим установить , мы можем ввести команду:
Для установки сразу нескольких модулей, вы можете перечислить их через пробелы следом за командой следующим образом:
Теперь ваш стек LAMP установлен и сконфигурирован. Однако нам еще предстоит протестировать PHP.