Как сделать сервер на убунту

Обновлено: 06.07.2024

Вы установили на VPS чистую операционную систему, и теперь важно выполнить несколько действий по запуску вашего сервера. Ниже, о том как производиться первоначальная настройка VPS сервера с Ubuntu 20.04. Эти настройки помогут сделать вашу работу с сервером более комфортной, а защиту ваших данных более надёжной.

Пользователь с привилегиями администратора

При установке операционной системы вы получаете доступ к ней при помощи учётной записи, имеющей права суперпользователя. Имя этого пользователя – root, и он в вашей системе, что называется, “может всё”. Регулярно производить запуск инструкций, зарегистрировавшись в системе учётной записью root, весьма неосмотрительно с точки зрения безопасности. Именно поэтому, необходимо создать учётную запись с ограниченными правами для её использования в повседневной работе.

Для создания нового пользователя введите команду:

В данном случае, newuser – имя нового пользователя, вместо которого вы, конечно же можете использовать какое-то своё.

Далее, необходимо созданного пользователя добавить в группу sudo , члены которой могут запускать инструкции с привилегиями администратора при помощи утилиты sudo :

Теперь, подключившись к системе данной учётной записью, вы сможете запускать команды на исполнение, и они будут исполняться с правами администратора:

Ну, а если вы имеете возможность выполнять команды без использования root’а, то логично было бы закрыть доступ по SSH пользователю root. Для этого откройте для редактирования конфигурационный файл SSH, например, с помощью редактора nano :

Снимите комментарий перед строкой PermitRootLogin , установите в этой строке значение no , сохраните изменения и закройте файл (если вы используете nano , нажмите Ctrl+X , Y и Enter ).

Для вступления изменений в силу может потребоваться перезапуск сервиса SSH:

Брандмауэр

Для управления межсетевым экраном в операционных системах семейства Linux часто используется утилита iptables. Упрощённым её интерфейсом для настройки брандмауэра является Uncomplicated Firewall или UFW.

Для открытия доступа к серверу со стороны какого-либо приложения, необходимо выдать разрешение этому приложению на доступ, зарегистрировав его в UFW. Список приложений знакомых утилите UFW можно посмотреть набрав команду:

Чтобы разрешить подключение к системе какому-нибудь приложению или протоколу, например, SSH , используйте инструкцию:

Если брандмауэр отключен, его нужно включить:

И проверить его статус:

Скриншот, на котором показан статус UFW при первоначальной настройке VPS с Ubuntu 20.04

Теперь вы можете настроить данный межсетевой экран так, чтобы он ограничивал доступ к вашему VPS в соответствии с вашими требованиями. Например, вы можете разрешить доступ к нему с одного определённого IP-адреса:

Или из определённой подсети:

Так же есть возможность ограничить подключения к серверу определённым IP-адресом, при этом разрешив подключение только к определённому порту. Так например, чтобы открыть доступ только к порту 22, то есть только подключение по SSH, используйте команду:

Если же вы не хотите ограничиваться подключениями только с определённых IP-адресов, вы можете защитить вашу систему установив запрет на соединения с IP-адресова, с которых происходит больше пяти попыток подключиться за последние полминуты. Запустить такую схему защиты можно командой:

Аутентификация с использованием SSH-ключей

Авторизация пользователей при помощи SSH-ключей может значительно повысить уровень безопасности вашего VPS. Если вы планируете использовать такой вариант аутентификации, придётся выполнить несколько несложных действий.

Сначала необходимо сгенерировать этот SSH-ключ. Для чего на локальной рабочей станции (не на сервере) в командной строке нужно набрать:

В процессе генерации ключа вы можете изменить имя файла ключа и его каталог, а также его пароль passphrase , а можете оставить эти настройки по умолчанию:

Скриншот с результатом создания SSH-ключа на локальной Windows-машине при первоначальной настройке VPS с Ubuntu 20.04

Далее, созданный ключ необходимо скопировать на сервер. Для чего нужно:

Подключиться к вашему VPS по SSH:

Убедиться, что вы находитесь в вашей домашней директории:

Или перейти в вашу домашнюю директорию, если вы не в ней:

Теперь создайте каталог .ssh :

Убедитесь, что каталог создан:

И установите для него соответствующие права:

Перейдите в созданный каталог:

И там создайте файл с именем authorized_keys и с правами 600 :

Теперь необходимо открыть его для редактирования. Для использовании редактора nano введите:

Теперь на своей локальной машине найдите файл, в который вы сохранили SSH-ключ (имя этого файла – id_rsa.pub ), откройте его удобным для вас текстовым редактором и скопируйте всё его содержимое (не копируйте при этом пробелы, стоящие после последнего символа).

Скопированный текст нужно вставить в открытый на сервере файл authorized_keys , после чего сохранить изменения в файле и закрыть его (если вы используете nano , нажмите Ctrl+X , Y и Enter ).

Чтобы убедиться, что изменения в файле сохранились, наберите команду:

На этом настройка аутентификации с использованием SSH-ключа завершена. Теперь авторизация на сервере по SSH будет осуществляться без пароля.

Но и это не всё. Вы можете вообще закрыть доступ к VPS через пароль. Для этого откройте для редактирования конфигурационный файл SSH:

Найдите и раскомментируйте строку PasswordAuthentication , установите её значение в no . После чего, не забудьте сохранить изменения в файле, перед тем как его закрыть (если вы используете nano , нажмите Ctrl+X , Y и Enter ).

Для вступления изменений в силу перезапустите службу SSH:

Теперь вы знаете, как производится первоначальная настройка VPS сервера с Ubuntu 20.04.

Для создания новых сайтов или тестирования изменений на существующих часто бывает нужен локальный сервер. Во-первых, новый сайт лучше выкладывать уже в готовом виде, дабы не смущать потенциальных посетителей пустыми страницами, недописанными материалами да полуработающими фичами. Во-вторых, новые фичи для существующих сайтов тоже лучше тестировать не на живом сайте, а на его клоне. Ну и в третьих, это позволит работать над сайтом даже при временном отсутствии доступа к интернету. Например, у меня тестовый сервер стоит на нетбуке, поэтому я могу спокойно поработать и где-нибудь в дороге безо всякого интернета.

Поскольку с Windows отношения у меня не сложились, ни о каких Денверах, WAMP и прочих наборах для этой ОС речи у нас здесь идти не будет. Наш тестовый сервер ставится на Ubuntu 16.04 (или на Linux Mint 18, что, в сущности, одно и то же). В более ранних версиях возможны некоторые отличия. Постараюсь их оговаривать (то, что вспомню).

Введение

Итак, определимся, что нам нужно. Ну для начала (на всякий случай, для новичков) расшифруем аббревиатуру LAMP - Linux, Apache, MySQL, PHP. Предполагается, что Linux у нас уже есть (Если нет, то ставим, не боимся. Ubuntu или Mint, например, ставится сейчас едва ли не проще, чем Винда.). Что нужно установить.

  1. Apache - собственно, сам web-сервер.
  2. MySQL - система управления базами данных (СУБД).
  3. PHP - язык программирования.

Если вы не являетесь гуру MySQL, и не собираетесь управлять базами в консоли, вводя команды ручками, то следующим пунктом будет

  1. phpMyAdmin - графический интерфейс управления СУБД MySQL

Также нужно подумать и об отправке почты с сайта - это тоже частенько приходится тестировать.

Также с большой вероятностью могут понадобится некоторые библиотеки PHP. В частности, у меня установлены

  1. GD - библиотека для работы с изображениями
  2. CURL - библиотека для работы с URL

Также стоит озаботиться удаленным доступом к нашему серверу. Зачем? Ну, как я уже упоминал, сервер у меня на нетбуке. А работать мне все же удобнее за компьютером с нормальной клавиатурой и большим монитором. Поэтому непосредственно за нетбуком я работаю только в дороге. А у вас может быть наоборот, сервер на рабочем компьютере (или вообще выделенный где-нибудь в кладовке), а вам хочется развалиться с планшетом на диване. Или хочется получать доступ к своему домашнему серверу из любой точки земного шара (правда для этого нужен реальный внешний IP-адрес вашей квартирной сети). В общем, удобная штука. Впрочем, если все это вам не нужно, то следующий пункт опускаем.

  1. SSH-сервер - позволяет работать с удаленным компьютером, как с родным

Ну и наконец, еще один необязательный, но очень полезный пункт. Система контроля версий (СКВ). Если у вас что-то перестало работать, а изменения перед этим были значительными, то откатить их может быть достаточно тяжело. СКВ позволяет вести учет всех изменений и откатиться в любое из предыдущих состояний одной командой. Существеут множество СКВ, но для локального использования (без доступа к интернету) лучше всего подойдет Git - детище Линуса Торвальдса.

С необходимыми компонентами web-сервера определились, приступаем к установке и настройке

Первые три пункта вполне можно установить одной командой в терминале

Символ ^ в конце не случаен, это часть команды. У нас требуют пароль администратора, вводим.

Первая оговорка: эта команда действует, кажется, начиная с Ubuntu 13.04. В более ранних версиях все компоненты устанавливать придется отдельно. Впрочем, сделать это тоже можно одной командой

Вторая оговорка: в 16.04 можно писать apt install вместо apt-get install. Но для совместимости я здесь буду использовать старую запись.

По ходу установки необходимо ответить на два вопроса. Сначала будет перечень устанавливаемых пакетов и вопрос, хотим ли мы продолжить установку. Жмем Enter. Затем нас попросят ввести пароль рута для MySQL. Вводим, подтверждаем. Дожидаемся конца установки.

Теперь настроим и протестируем все компоненты.

Apache

Открываем браузер и вводим в адресной строке

После перехода по этому адресу видим приветственную страницу.

Тестовая страница Apache

Это означает, что сервер работает. В ранних версиях, кстати, эта страница выглядела значительно проще - просто две строчки текста с заголовком "It works!" на белом фоне. Собственно, в нативном Апаче (не убунтовском) она, по-моему, и сейчас так выглядит.

Теперь выполним кое-какие настройки. Для этого откроем конфигурационный файл Apache /etc/apache2/apache2.conf. Причем сделать это надо из-под рута, т.е. с правами администратора. Можно эту операцию провернуть и в графической оболочке, но их сейчас расплодилось столько, что рассказывать, как это сделать в каждой из них, придется долго. Поэтому, если знаете как - делайте. Если нет, то здесь я опишу, пожалуй, самый простой способ - консольным текстовым редактором nano.

Не забываем. что после ввода команды, начинающейся с sudo, нужно ввести пароль администратора. Больше напоминать не буду.

Здесь ищем теги (это легко сделать встроенным в nano поиском; вызывается он комбинацией клавиш, или, как говорят, хоткеем Ctrl+w) и под последним из них дописываем

Здесь мы побежали немного впереди паровоза, но раз уж нам пришлось открыть этот файл, то все изменения сразу и внесем. Яснее станет позже, пока объясню вкратце. Мы прописали опции общей директории (папки) для всех наших сайтов, а именно: разрешили использовать для нее файл .htaccess (для ЧПУ, например; но не только) и предоставили права доступа (через веб-сервер) для всех.

Дальше хоткеем Alt+/ идем в конец файла и дописываем здесь

Сохраняем хоткеем Ctrl+o, подтверждаем энтером и выходим из nano (Ctrl+x).

Поскольку в подавляющем большинстве (если не у всех) у наших сайтов дефолтной страницей будет index.php, а не index.html, то открываем следующий файл.

И здесь index.php помещаем в начало строки DirectoryIndex, перед index.html. Должно получиться так.

Сохраняем и закрываем.

Виртуальные хосты

Теперь настроим виртуальные хосты. Зачем? Ну, в общем-то, можно обойтись и без этого. Все сайты хранить в отдельных папках в /var/www/html и заходить на них по адресам вида localhost/sitename (где sitename - имя папки с сайтом). Но тут есть нюанс. Если мы работаем с клоном уже существующего сайта, где прописаны URL вида "/file.html", т.е. со слешем в начале (а такие урлы встречаются довольно часто), то при переходе по такому урлу попадем в localhost/file.html (т.е. в никуда, поскольку такого пути у нас нет) вместо localhost/sitename/file.html. Ведь корневая папка у сервера прописана одна - /var/www/html. И она будет корневой для всех сайтов. Т.е. нам нужно, чтобы корневой папкой каждого сайта была именно его папка. И для каждого нашего сайта нужно будет прописать виртуальный хост.

Предположим, что у нас есть тестовый сайт. И расположен он не в /var/www/html, а в /home/user/public_html/testsite (где user - ваше имя пользователя в Linux). Почему там? В случае переустановки системы (ну мало ли что. ) не придется заново заливать все сайты (я ж надеюсь /home у вас на отдельном разделе?). Да и с правами меньше мороки.

Сайт этот у нас состоит всего из одного файла index.html, содержащего следующее

Здесь в первую строку добавим имя нашего сайта.

Сохраняем и закрываем (напомню, Ctrl+o и Ctrl+x соответственно).

Теперь выполняем в терминале

Таким образом мы создали кофигурационный файл сайта testsite, скопировав конфигурационный файл дефолтного сайта. Теперь откроем этот файл и настроим его под наш сайт.

И пропишем имя нашего сайта. Должно получиться:

Далее исправим DocumentRoot, прописав вместо /var/www/html /home/user/public_html/testsite (не забываем вместо user поставить реальное имя пользователя).

Сохраняем и закрываем. Теперь включаем наш сайт.

В терминале нам любезно подсказывают, что активировать новую конфигурацию мы можем, перезагрузив настроки Апача.

В адресной строке браузера пишем

И видим нашу тестовую страничку. Если не видим - тщательно проверяем правильность своих предыдущих действий.

Ну и в дальнейшем будем работать уже с этим тестовым сайтом, а не с дефолтным.

В большинстве случаев нам придется работать с ЧПУ-ссылками. Поэтому необходимо подключить модуль Апача mod_rewrite.

Теперь проверим. Создадим в корне нашего сайта (папке testsite) файл .htaccess и запишем сюда следующее

Это означает, что запросы на testsite/test будем перенаправлять на страницу sef.html.

Теперь создаем этот самый файл sef.html с содержимым, аналогичным index.html, кроме заголовка и текста:

Теперь проверим PHP. Для этого в папке /home/user/public_html/testsite создадим текстовый файлик со следующим содержимым:

PHP info

Если увидели - PHP работает.

Если сервер локальный, и доступа извне к нему нет, то файлик этот можно оставить, он, возможно, еще пригодится. Но ни в коем случае не делайте этого на общедоступном сервере, здесь этот файл должен быть удален незамедлительно после проверки!

php.ini

Ну а теперь поковыряемся в конфигурационном файле PHP, находящемся по адресу /etc/php5/apache2/php.ini. Да не просто поковыряемся, а и кое-что поменяем.

Или, в Ubuntu 14.04

Короткая форма записи

Это значит, что по умолчанию запрещено использовать короткую форму записи тегов, т.е. Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.20-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Все OK. MySQL работает. Вводим quit для выхода.

Можно еще одним махом проверить работу связки MySQL и PHP. Для этого создадим файл db-test.php (все там же, в корне нашего сайта - /home/user/public_html/testsite) и запишем туда следующее.

Перейдем по адресу http://testsite/db-test.php. Если видим текст "OK. Localhost via UNIX socket", то все хорошо.

phpMyAdmin

Поехали дальше. Теперь очередь phpMyAdmin. В терминале вводим

После получения списка пакетов нажимаем Enter на вопрос, хотим ли мы продолжить. В ходе установки нас спрашивают, какой сервер будем настраивать. Поскольку у нас Apache, то и выбираем, естественно, его же. Для этого нажимаем пробел, убедившись, что красный курсор установлен в квадратных скобках напротив строчки apache2. И убеждаемся, что там же, в скобках, появилась звездочка.

Установка phpMyAdmin

Нажимаем Enter. Через некоторое время появится еще одно окно с предложением установить и настроить базу данных. У нас уже выбрано "Да", жмем Enter. Вводим пароль административного пользователя базы данных (тот самый, который вводили при установке MySQL), жмем Enter, задаем пароль для регистрации phpmyadmin в базе, подтверждаем. Дожидаемся конца установки.

Для PHP 5 (т.е. по умолчанию в Ubuntu 14.04) включаем Mcrypt

Здесь допишем в конец файла (хоткеем Alt + /)

Здесь главное, чтоб это число было не больше session.gc_maxlifetime из php.ini, иначе оно не будет иметь смысла.

И идем в браузер.

Видим окно входа в phpMyAdmin

phpMyAdmin login

phpMyAdmin

Библиотеки GD и CURL

В Ubuntu 16.04 GD уже установлена, поэтому здесь доустановим лишь CURL.

В Ubuntu 14.04 установить придется обе

В принципе, описанное здесь характерно для любого расширения php - главное знать его название, и подставить спереди php (в PHP7) либо php5 (в PHP5) с дефисом.

Почтовый сервер

SSMTP

Теперь почтовик. В принципе, можно обойтись SSMTP - это легкая утилита, отправляющая письма через сторонний SMTP-сервер, например Gmail. Но в этом случае о тестировании почты оффлайн придется забыть. Если тестирование оффлайн не актуально, то ставим и настраиваем:

И здесь меняем значения на следующие (для Gmail-сервера).

Далее. В /etc/php/7.0/apache2/php.ini (или, в 14.04, /etc/php5/apache2/php.ini) находим строку ;sendmail_path =, раскомментируем ее (т.е. уберем ;) и пропишем путь к ssmtp. Должно получиться

А теперь проверим. Создадим файл index.php в testsite, откроем его и пропишем туда следующее

Sendmail

Если же необходимо тестировать отправку почты оффлайн, ставим Sendmail.

На всякий случай. Речь не идет об одновременном использовании SSMTP и Sendmail - устанавливаем либо то, либо другое!

По окончанию установки запускаем

На все три вопроса, задаваемых в ходе установки, отвечаем утвердительно, т.е. жмем Enter.

Если в /etc/php/7.0/apache2/php.ini (или, в 14.04 /etc/php5/apache2/php.ini) прописывали sendmail_path (для SSMTP, например), то просто закомментируйте ее (т.е. поставьте в начале строки ;), потому что по умолчанию используется как раз sendmail.

И здесь в строчку с 127.0.0.1 дописываем через пробел

Здесь testserver - имя нашего сервера. Оно уже прописано строчкой ниже для 127.0.1.1. Сохраняем, закрываем и перезапускаем сервер.

Trying 127.0.0.1.
Connected to localhost.
Escape character is '^]'.
220 localhost.loc ESMTP Sendmail 8.14.4/8.14.4/Debian-4.1ubuntu1; Sat, 26 Jul 2014 21:46:56 +0300; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]

Начинаем тестирование. Вводим

250 localhost.loc Hello localhost [127.0.0.1], pleased to meet you

Далее чередуются команды и ответы

Здесь user - ваше имя пользователя в Linux.

250 2.1.5 user@localhost. Recipient ok

354 Enter mail, end with "." on a line by itself

Теперь мы вводим текст тестового письма. Закончить его обязательно точкой.

Жмем Enter и получаем ответ.

250 2.0.0 s6QItc6L010145 Message accepted for delivery

Прекрасно. А теперь настроим почтовый клиент, чтобы иметь возможность видеть отправленные с сайта и полученные в user@localhost письма. Я пользуюсь Thunderbird, поэтому настраивать будем его. Идем в Создать - Другие учетные записи. Выбираем тип учетной записи Unix Mailspool (Movemail), жмем Далее. Выводимое имя абсолютно без разницы, мы сюда письма только получать будем, а Адрес электронной почты прописываем user@localhost (вновь, user - это ваше имя пользователя в Ubuntu). Жмем Далее, затем еще раз Далее, и еще раз Далее, и, наконец, Готово. Если все сделали правильно - во входящих видим наше только что отправленное при тестировании письмо.

Можем протестировать через PHP, аналогично тому, как мы делали это с SSMTP, только в index.php исправим адрес получателя на user@localhost.

Теперь в настройках сайта будем прописывать адрес получателя писем с сайта user@localhost.loc. Почему не user@localhost? Потому что в большинстве случаев такой адрес не пройдет валидацию. И не устаю напоминать: user заменяем на ваше имя пользователя в Ubuntu.

Осталось установить SSH-сервер. Как уже говорилось, это нужно лишь в том случае, если необходимо управлять сервером удаленно.

Открыли конфигурационный файл. Здесь я бы рекомендовал поменять порт, на котором ssh-сервер будет ожидать подключения. Находим строку

и меняем на любой из диапазона от 1025 до 65536, . Главное - не забыть его потом. В нашем примере пропишем

и будем его использовать в дальнейших примерах.

Дальше находим строку

и меняем значение yes на no.

Можно вообще запретить входить по SSH всем, кроме одного пользователя - вас. Для этого добавляем следующую строку (здесь, как всегда, user нужно заменить на ваше имя пользователя).

А теперь пробуем подключиться с удаленного устройства. Предположим, что IP-адрес сервера - 192.168.1.2. Вводим (заменив user на свое имя пользователя на сервере)

Вводим свой пароль на сервере и наслаждаемся. Чтобы отключиться, вводим exit.

Примечание. Если вы уже подключались к серверу с какого-либо устройства, но переустановили ОС на сервере, то после этого подключиться уже не получится. В этом случае удалите файл /home/user/.ssh/known_hosts на клиенте, подключитесь вновь и ответьте yes на вопрос Are you sure you want to continue connecting? (действительно ли вы хотите подключиться?). Все, можно работать.

Для заливки файлов на сервер удаленно также можно воспользоваться SSH, а не традиционным FTP. Можно это делать и в консоли. Но можно и проще. Показываю на примере файлового менеджера Dolphin в KDE.

В левой панели (Точки входа) жмем Сеть, здесь Добавить сетевую папку. Выбираем Папка SSH, жмем Далее и заполняем поля:

Имя - пишем что угодно, лишь бы понимать, куда мы подключаемся. Ну например, LocalServer.

Пользователь - имя пользователя на сервере.

Сервер - IP-адрес (или имя, если прописано в /etc/hosts) сервера.

Порт - мы меняли на 1111, его здесь и прописываем. Если не меняли - оставляем 22.

Протокол - выбираем fish.

Папка - для удобства пропишем корневую папку нашего web-сервера, т.е. /home/user/public_html. Теперь при подключении будем сразу попадать туда. Если оставить поле пустым - будет открываться корень Ubuntu, т.е. /.

Теперь жмем Сохранить и подключиться. И можем гонять файлы туда-сюда, как на родном компьютере.

В дальнейшем чтобы подключиться жмем Сеть и в открывшемся окне папку с земным шариком поверх с именем LocalServer.

Удаленный доступ к сайтам

Осталось понять, как зайти браузером с удаленного компьютера (в локальной сети) на наш сервер. Возьмем мою ситуацию. Напомню, сервер - на нетбуке, а работаю я на стационарном компьютере. Так вот, на компьютере открываем /etc/hosts и в новой строке прописываем

Владельцы и права

Ну и напоследок, еще три команды.

Здесь user - ваше имя пользователя в Ubuntu. Мы добавили себя в группу www-data (поскольку от пользователя www-data группы www-data работает Apache), сделали группу www-data группой владельца корневой папки наших сайтов и присвоили для этой папки права чтения и записи для владельца и его группы. Это нужно для того, чтобы пользователи user (от имени которого мы заливаем файлы на сервер) и пользователя www-data (от имени которого работает веб-сервер) имели одинаковые права. При добавлении каждого сайта над его папкой нужно будет производить эту процедуру (кроме первой команды; только не ко всей public_html, а лишь к папке нового сайта). Также нужно это делать для новых файлов, требующих изменения со стороны сервера.

Welcome

В результате файл “/var/www/sites/site1/index.html” будет содержать одну html-строку:

Welcome

3. Конфигурация Apache-сервера

Конфигурационные файлы сайтов находятся в каталоге “/etc/apache2/sites-available/”. Создадим конфигурационный файл для нового виртуального хоста взяв за основу конфигурацию по умолчанию из файла “000-default.conf”

cd /etc/apache2/sites-available/
cp 000-default.conf site1.conf

Откроем файл “site1.conf” и изменим параметр “DocumentRoot”. В качестве значения нужно указать путь к новому сайту, в нашем случае это “/var/www/sites/site1”

Настрйока и конфигурация Apache-сервера

На данном этапе нам не требуется настройка одновременной работы нескольких сайтов, поэтому отключим сайт по умолчанию и включим новый сайт. Для применения изменений перезагружаем конфигурацию сервера.

a2dissite 000-default
a2ensite site1
systemctl reload apache2

Настройка HTTP-сервера

Настройка FTP-сервера

1. Установка

Устанавливаем ftp-сервер и дополнительный пакет “db-util”, который потребуется для настройки виртуальных пользователей.

apt install vsftpd db-util

2. Создание локальной учетной записи

Сервер vsftpd позволяет очень гибко настраивать права доступа. Для решения наших задач ftp-пользователям необходимо обеспечить следующие возможности:

  • полный доступ к содержимому директории “/var/www/sites/”;
  • невозможность выхода за пределы директории “/var/www/”;
  • подключение с использованием виртуальной учетной записи;

Создадим локальную учетную запись “virtual” без возможности входа в систему, с домашней директорией “/var/www/”. Эта учетная запись будет использоваться для подключения виртуальных ftp-пользователей.

useradd -d /var/www virtual

По умолчанию, владельцем директории “/var/www” является “root”. Для того, того, чтобы ftp-пользователи могли изменять содержимое сайтов, изменим владельца каталога “/var/www/sites/”, включая вложенные папки на “virtual”.

chown -R virtual:root /var/www/sites

В результате изменения прав, пользователь “virtual” сможет просматривать содержимое каталога “/var/www/” и записывать во вложенный каталог “/var/www/sites/”

3. Конфигурация

Основная конфигурация хранится в файле “/etc/vsftpd.conf”, приводим его к следующему виду:

4. Создание базы данных

База данных необходима для хранения виртуальных учетных записей.

Предварительно создадим в домашнем каталоге простой текстовый файл “users.txt” и запишем логины и пароли виртуальных пользователей в чередующиеся строки. Например нам нужен виртуальный пользователь с логином “ftp” и паролем “Qwe123”, тогда содержимое файла будет таким:

Создаем базу данных

db_load -T -t hash -f ~/users.txt /etc/vsftpd_login.db

Меняем стандартное содержимое PAM файла “/etc/pam.d/vsftpd” на следующие строки.

auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login

Обратите внимание, что в различных дистрибутивах расположение библиотеки “pam_userdb.so” может отличаться, при необходимости путь к файлу нужно скорректировать.

Для применения изменений перезагружаем vsftpd сервер.

systemctl restart vsftpd

Настройка FTP-сервера завершена.

Данные для подключения:

  • ftp://[ip_адрес_сервера]
  • Логин: ftp
  • Пароль: Qwe123

Настройка PHP-сервера

1. Установка

На текущий момент последней стабильной версией PHP является php 7.4.5, которая отсутствует в официальных репозиториях Ubuntu. Подключим сторонний репозиторий и установим последнюю версию PHP.

apt update
apt install software-properties-common
add-apt-repository ppa:ondrej/php
apt update
apt install php7.4

2. Проверка

Для того, чтобы PHP код мог быть исполнен, файл веб страницы должен иметь расширение “.php”. Переименовываем тестовою страницу

cd /var/www/sites/site1/
mv index.html index.php

Добавляем в файл “/var/www/sites/site1/index.php” строку php-кода. В результате содержимое файла будет таким:

Welcome

Сохраняем изменения и проверяем результат в браузере.

Настройка PHP-сервера

Если вы видите результат работы функции “phpinfo()”, значит интерпретатор PHP работает корректно. Приступаем к следующему этапу.

Настройка MySQL (MariaDB)

1. Установка

Устанавливаем MariaDB и PHP-модуль для работы с MySQL, после завершения установки перезагружаем Apache

apt install mariadb-server php-mysql
systemctl restart apache2

Для проверки обновим тестовую страницу и в таблице с конфигурацией PHP и перейдем к разделу PDO. Наличие секции “PDO_mysql” говорит о корректной установке драйвера для работой с базой данных Mysql.

Настройка и установка MySQL на сервер

Для дальнейшей работы необходимо выполнить первоначальную настройку безопасности MariaDB, во время которой для пользователя “root” устанавливается пароль, запрещается удаленный вход и удаляются гостевые учетные записи.

На первом шаге необходимо ввести пароль пользователя "root" для входа в СУБД или нажать Enter, если пароль не задан. Так как после установки учетная запись "root" не имеет пароля, нажимаем “Enter”.

Обратите внимание, что в MariaDB существуют собственные учетные записи, которые не имеют отношения к учетным записям операционной системы. Речь идет о пользователе "root" в MariaDB.

 MySQL: Создание пользователя и установка пароля

Далее конфигуратор предложит задать пароль для пользователя root, нажимаем “y” для подтверждения и вводим новый пароль, в нашем случае “Qwe123”

 MySQL: установка пароля и доступа пользователей

На все последующие запросы просто нажимаем “y” до окончания настройки.

Данные для входа в MariaDB:

Настройка phpMyAdmin

1. Установка

Устанавливаем обязательное PHP-расширение mbstring.

apt install php-mbstring

В официальном репозитории размещена устаревшая версия phpMyAdmin, поэтому выполним установку в ручном режиме.

Копируем архив на сервер в каталог “/var/www/sites/” используя любой ftp-клиент.

Распаковываем архив, и для удобства, переименовываем извлеченную папку в “phpMyAdmin”. Для распаковки zip-архива предварительно установим утилиту “unzip”. После распаковки архив можно удалить.

apt install unzip
cd /var/www/sites/
unzip phpMyAdmin-5.0.2-all-languages.zip
mv phpMyAdmin-5.0.2-all-languages phpMyAdmin
rm phpMyAdmin-5.0.2-all-languages.zip

Создаем папку “/var/www/sites/phpMyAdmin/tmp” для хранения временных файлов с полными доступом для всех. Если этого не сделать phpMyAdmin сообщит об отсутствии доступа в временной папке.

cd /var/www/sites/phpMyAdmin/
mkdir tmp
chmod 777 tmp

2. Создание псевдонима

Так как phpMyAdmin не является отдельным виртуальным хостом и находится за пределами корневой директории сайта, настроим псевдоним для возможности доступа.

Открываем файл “/etc/apache2/mods-available/alias.conf” и вставляем строку

Alias /pma “/var/www/sites/phpMyAdmin"

Создание псевдонима в phpMyAdmin

Перезагружаем конфигурацию Apache для применения изменений.

systemctl reload apache2

3. Подготовка базы данных

Так как при первоначальной настройке MariaDB мы запретили использование учетной записи root для удаленного подключения, необходимо создать новую учетную запись с полными правами, которая будет использоваться для входа в phpMyAdmin.

Кроме того, для работы дополнительных функций phpMyAdmin необходима служебная база данных и учетная запись для доступа к ней.

Создадим учетные записи

mariadb -u root -p

GRANT ALL PRIVILEGES ON *.* TO 'pma'@'localhost' IDENTIFIED BY 'Qwe123' WITH GRANT OPTION;

GRANT SELECT, INSERT, UPDATE, DELETE ON `phpmyadmin`.* TO 'pmaservice'@'localhost' IDENTIFIED BY 'Qwe123' WITH grant option;

Обратите внимание, что имя базы данных во втором запросе заключено в обратные апострофы: “… ON `phpmyadmin`.* TO 'pma'@'localhost' IDENTIFIED BY …”,

В результате в MariaDB будет создано две учетные записи:

  1. Логин: pma, пароль: Qwe123
    Учетная запись имеет полные права и будет использоваться для входа в phpMyAdmin
  2. Логин: pmaservice, пароль:Qwe123
    Служебная учетная запись необходимая для работы дополнительных функций.

На следующем шаге эти учетные данные должны быть указаны в конфигурационном файле “config.inc.php”

Далее необходимо импортировать базу данных из файла “phpMyAdmin/sql/create_tables.sql”. Выполним импорт средствами phpMyAdmin.

Вводим логин “pma”, пароль “Qwe123”

Переходим на вкладку “Импорт”, нажимаем кнопку “Выберите файл” и выбираем файл ”sql/create_tables.sql” в корневой директории phpMyAdmin. Предполагается что на локальном компьютере существует папка с файлами “phpMyAdmin”, если необходимо, распакуйте архив.

Настройка phpmyadmin

4. Конфигурация

Копируем файл конфигурации из шаблона

cd /var/www/sites/phpMyAdmin/
cp config.sample.inc.php config.inc.php

Открываем конфигурационный файл “/var/www/sites/phpMyAdmin/config.inc.php” и вносим следующие изменения:

  1. Задаем произвольное значение длиной 32 символа для параметра “$cfg['blowfish_secret']”. Можно воспользоваться любым генератором паролей.
  2. Снимаем комментарии со всех строк раздела “phpMyAdmin configuration storage settings” и указываем для параметров “controluser” и “controlpass” логин и пароль служебной учетной записи MariaDB, созданной на предыдущем шаге. В нашем случае логин - pmaservice, пароль - Qwe123

Сохраняем изменения. Настройка завершена.

Данные для входа в phpMyadmin:

Установка и настройка WordPress на сервер Linux

1. Размещение файлов дистрибутива WP

Установка Wordpress на сервер: скачиваем дистрибутив WP

Установка Wordpress на сервер: скачиваем дистрибутив WP

Загружаем архив на сервер в каталог “/var/www/sites/” и распаковываем, файлы будут извлечены в папку “wordpress”.

Копируем содержимое папки “/var/www/sites/wordpress/” в корневую директорию сайта “/var/www/sites/site1/”

Так как копирование файлов выполнялось из консоли с root-правами еще раз изменяем владельца каталога “/var/www/sites/”, включая содержимое на virtual. Это нужно для восстановления полного доступа при подключении через ftp-клиент.

cd /var/www/sites/
tar -xzvf wordpress-5.4-ru_RU.tar.gz
cp -R wordpress/* site1/
chown -R virtual:root /var/www/sites

2. Создание базы данных для WordPress

Создание базы данных для WordPress

Выделяем в левой части окна созданную БД и нажимаем кнопку “Привилегии”

Создание базы данных для WordPress

Далее нажимаем “Добавить учетную запись пользователя”.

Добавляем учетную запись пользователя в базе данных для WordPress

3. Конфигурация WP на сервере под Linux

Переходим в корневую директорию сайта и копируем из шаблона конфигурационный файл.

cd /var/www/sites/site1/
cp wp-config-sample.php wp-config.php

Открываем файл “wp-config.php” и вводим параметры подключения к базе данных, созданной на предыдущем шаге и сохраняем изменения.

Настройка базы данных для WordPress

4. Установка CMS WordPress

Заполняем предложенные поля и нажимаем “Установить WordPress” Имя пользователя и пароль указываем произвольные, в нашем случае логин - wpadmin, пароль - Qwe123

Стек LAMP - это набор программного обеспечения с открытым исходным кодом, которой обычно устанавливается на сервер для отображения динамических веб-сайтов и веб-приложений. Эта аббревиатура обозначает операционную систему Linux с установленным веб-сервером Apache. Данные сайта хранятся в базе данных MySQL, динамический контент обрабатывается с помощью PHP.

Эта статья описывает процесс установки LAMP на виртуальный сервер (Droplet) в Ubuntu 16.04. Ubuntu удовлетворяет первому требованию к LAMP: это операционная система на базе Linux.

Необходимые условия

Перед тем, как начать следовать шагам, описанным в этой статье, вам необходимо настроить отдельный, не-рутовый (non-root) профиль пользователя на вашем сервере. Вы можете сделать это следуя шагам 1-4 статьи о первичной настройке сервера на Ubuntu 16.04.

Шаг 1 - Установка Apache и настройка файрвола

Веб-сервер Apache в настоящее время является одним из самых популярных веб-серверов в мире. Он хорошо документирован и используется значительную часть времени с момента создания сети Интернет, что делает его прекрасным выбором для хостинга веб-сайта.

Мы с легкостью можем установить Apache используя менеджер пакетов Ubuntu apt . Менеджер пакетов позволяет нам легко установить большую часть программного обеспечения из репозиториев Ubuntu. О том, как использовать apt , вы можете узнать из этой статьи.

Для начала установки выполним команды:

Поскольку мы используем команду sudo , эти команды будут выполняться с привилегиями root. В процессе операционная система запросит ваш пароль пользователя.

После ввода пароля apt сообщит, какие пакеты будут установлены и сколько места они займут на диске. Нажмите Y и Enter для продолжения установки.

Настройка глобальной переменной ServerName

Далее мы добавим одну строку в /etc/apache2/apache2.conf для устранения предупреждений (warnings) о синтаксических ошибках. Несмотря на то, что это просто предупреждение и никакой проблемы не существует, если не задать глобальную переменную ServerName , вы будете получать следующее предупреждение об ошибке при проверке настройки конфигурации Apache:

Откройте главный конфигурационный файл в своём текстом редакторе командой:

Добавьте в конец файла переменную ServerName , указывающую на ваше основное доменное имя. Если для вашего сервера не настроено доменное имя, вы можете использовать публичный IP-адрес сервера:

Если вы не знаете IP-адрес Вашего сервера, вы можете прочитать об этом в разделе Как найти публичный IP адрес вашего сервера.

После этого сохраните и закройте файл.

Теперь можно проверить результат напечатав следующую команду:

Поскольку мы установили глобальную переменную ServerName , вы должны увидеть вывод следующего характера:

Перезапустите Apache для применения внесённых изменений:

Теперь можно приступать к настройке файрвола.

Настройка файрвола

Проверим настройку профиля Apache Full , она должна разрешать трафик для портов 80 и 443:

Разрешим входящий трафик для этого профиля:

Проверить результат установки можно набрав в вашем веб-браузере публичный IP адрес вашего сервера (если вы еще не знаете, как найти публичный IP адрес вашего сервера, смотрите следующий раздел этой статьи):

Вы увидите страницу Apache, отображаемую по умолчанию для информации и целей тестирования. Она должна выглядеть похожим образом:

Тестовая страница Apache

Если вы видите эту страницу, ваш веб-сервер корректно установлен и доступен через файрвол.

Как найти публичный IP адрес вашего сервера

Если вы не знаете публичный IP адрес вашего сервера, его можно определить несколькими способами. Обычно, это адрес, который вы используете для соединения с вашим сервером по SSH.

Определить этот адрес можно с помощью командной строки. Сначала используйте инструмент iproute2 для получения вашего адреса набрав следующую команду:

Результатом выполнения этой команды будет одна или две строки, содержащие корректный адрес. Ваш компьютер, возможно, сможет использовать только один из них, поэтому попробуйте каждый вариант.

В качестве альтернативы можно узнать, как curl видит ваш сервер. Это можно сделать следующим образом:

В независимости от метода, который вы использовали для получения своего IP адреса, вы можете использовать этот IP адрес для доступа к серверу через адресную сроку веб-браузера.

Шаг 2 - Установка MySQL

Теперь, когда наш веб-сервер установлен и запущен, пора установить MySQL. MySQL это система управления базой данных. Она организует и обеспечит доступ к базам данных, в которых ваш сайт может хранить информацию.

Мы можем вновь использовать apt для загрузки и установки программного обеспечения. В этот раз мы также установим некоторые вспомогательные пакеты, которые помогут нам в налаживании взаимодействия между компонентами:

В данном случае вам нет необходимости предварительно выполнять команду sudo apt-get update , т.к. мы выполняли ее недавно при установке Apache, и индекс пакетов на вашем комьпютере уже должен быть обновлен.

Вам будет показан список пакетов, которые будут установлены, а также сколько места на диске они займут. Нажмите Y для продолжения установки.

В процессе установки ваш сервер попросит вас задать и подтвердить пароль для пользователя “root” в MySQL. Это администраторский аккаунт в MySQL, который имеет расширенные права. Рассматривайте его как аналог root-аккаунта для самого сервера (однако тот, который вы конфигурируете в данный момент, подходит только для MySQL). Задайте надёжный уникальный пароль, не оставляйте пароль не заданным.

После завершения установки нам потребуется выполнить некоторые дополнительные команды, чтобы наше окружение MySQL было настроено безопасным образом. Введите следующую команду:

Скрипт запросит пароль, который вы только что задали для root пользователя в MySQL. Далее вам будет предложено сконфигурировать плагин валидации паролей ( VALIDATE PASSWORD PLUGIN ).

Введите y для включения плагина или что-нибудь другое для продолжения без его включения:

Если вы включили валидацию паролей, вам будет предложено установить уровень надёжности паролей при валидации. Имейте в виду, что при выборе значения 2 (самый строгий уровень валидации), вы будете получать ошибки при попытке задать пароль без цифр, букв в верхнем и нижнем регистре, а также без специальных символов, а также при попытке использовать пароль, основанный на распространённых словах, которые уязвимы для подбора паролей по словарю.

Если вы включили валидацию паролей, вам будет показан уровень надёжности заданного вами ранее пароля root пользователя, а также вам будет предложено изменить этот пароль. Если вы не хотите менять пароль, введите n или no:

На все последующие вопросы просто вводите Y и нажимайте клавишу ENTER для выбора настроек по умолчанию. При этом удалятся некоторые тестовые пользователи и базы данных, будет отключена возможность удаленного доступа с учетной записью root-пользователя, и все изменения будут немедленно применены в MySQL.

Теперь ваша система управления базами данных установлена и мы можем двигаться дальше.

Шаг 3 - Установка PHP

PHP это компонент, который будет обрабатывать код для отображения динамического контента. Он может запускать скрипты, подключаться к нашим базам данных MySQL для получения информации и передавать обработанный контент в наш веб-сервер для отображения.

Мы можем вновь воспользоваться менеджером пакетов apt для установки компонентов. Мы также добавим некоторые вспомогательные пакеты, чтобы код на PHP мог работать с нашим сервером Apache, а также обращаться к базе данных MySQL:

Данная команда должна установить PHP без каких либо проблем. Вскоре мы это проверим.

В большинстве случаев, мы захотим изменить способ, который использует Apache для поиска файлов при запросе директории. На данный момент, если пользователь запрашивает директорию с сервера, Apache в первую очередь будет искать файл с названием index.html . Мы хотим, чтобы наш веб-сервер отдавал предпочтение PHP файлам, так что мы настроим Apache таким образом, чтобы сначала он искал файлы index.php .

Для этого введите следующую команду, чтобы открыть файл dir.conf в текстовом редакторе с привилегиями root-пользователя:

Содержимое файла будет выглядеть следующим образом:

Мы хотим переместить PHP файл index.php , выделенный выше, на первое место после спецификации DirectoryIndex следующим образом:

После внесения правок сохраните и закройте файл сочетанием клавиш CTRL-X. Вам придется подтвердить операцию вводом Y и затем нажатием клавиши ENTER для подтверждения места сохранения файла.

После этого нам необходимо перезапустить Apache для применения внесенных изменений. Вы можете сделать это при помощи команды:

Мы также можем проверить статус сервиса apache2 используя systemctl :

Установка модулей PHP

Чтобы расширить функциональность PHP, мы можем установить некоторые дополнительные модули.

Для просмотра доступных опций для модулей и библиотек PHP вы можете передать результат apt-cache search в less , которая позволит вам проматывать вывод:

Используйте клавиши стрелок вверх и вниз для промативания списка, для выхода нажмите q.

В результате вам будут показаны все опциональные компоненты, которые можно установить, сопровождаемые коротким описанием для каждого:

Чтобы получить больше информации по каждому модулю, вы можете поискать в Интернете или посмотреть полное описание пакета при помощи команды:

Ответ будет содержать много текста, среди которого есть поле Description-en . Именно оно и будет содержать расширенное описание функциональности, предоставляемой модулем.

Например, чтобы узнать назначение модуля php-cli , мы можем выполнить команду:

Помимо большого количества прочей информации, вы увидите следующее:

Если после изучение вы решили, что хотите установить пакет, вы можете сделать это используя команду apt-get install как мы делали ранее при установке другого программного обеспечения.

Если мы решили, что хотим установить php-cli , мы можем ввести команду:

Для установки сразу нескольких модулей, вы можете перечислить их через пробелы следом за командой apt-get install следующим образом:

Теперь ваш стек LAMP установлен и сконфигурирован. Однако нам еще предстоит протестировать PHP.

Шаг 4 - Тестирование работы PHP на вашем веб-сервере

Чтобы проверить, что наша система сконфигурирована должным образом, мы можем создать простой PHP скрипт.

Назовем скрипт info.php . Чтобы Apache нашел и обработал файл корректно, он должен быть сохранен в специальную директорию, которая называется “web root”.

В Ubuntu 16.04 данная директория находится по адресу /var/www/html/ . Мы можем создать там файл введя следующую команду:

Откроется пустой файл. Мы хотим ввести в файл следующий текст, который является корректным PHP кодом:

После внесения изменений сохраните и закройте файл.

Теперь мы можем проверить, может ли веб-сервер корректно отображать контент, сгенерированный PHP скриптом. Для проверки нам просто нужно открыть данную страницу в веб-браузере. Вам снова потребуется публичный IP-адрес сервера.

Откроем этот адрес:

Тестовая страница PHP

Данная страница содержит информацию о вашем сервере с точки зрения PHP. Она полезна для отладки и чтобы удостовериться в корректности применения настроек.

Если все прошло успешно, значит ваш PHP работает корректно.

Вы, возможно, захотите удалить этот файл после теста, т.к. он может дать информацию о вашем сервере неавторизованным пользователям. Для удаления файла введите команду:

Вы всегда сможете заново создать этот файл, если вам снова потребуется доступ к этой информации.

Заключение

Теперь, когда ваш стек LAMP установлен, у вас есть множество вариантов того, что делать дальше. Фактически, вы установили платформу, которая позволит установить (развернуть) большинство типов веб-сайтов и сетевого программного обеспечения на вашем сервере.

Некоторые другие популярные мероприятия:

    - наиболее популярную систему управления контентом в интернете. для управления базами данных MySQL из веб-браузера. для управления базами данных. для передачи файлов на ваш сервер и с него.

Обратите внимание: Мы будем обновлять указанные выше ссылки на документацию для 16.04 по мере ее написания.

Читайте также: