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

Хостинг

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

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

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

С другой стороны, shared hosting имеет множество недостатков:

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

Избежать вышеуказанные проблемы поможет аренда собственного сервера или его покупка и размещение в стойке провайдера (colocation). Естественно, что такое решение обойдется значительно дороже, чем предыдущий вариант. Но есть компромисс, сопоставимый по цене с shared hosting: виртуальный выделенный сервер (Virtual Dedicated Server – VDS). В этом случае на одном физическом сервере размещается определенное количество виртуальных серверов, каждый из которых имеет собственную операционную систему и набор программного обеспечения, который нужен конкретному пользователю. При этом виртуальному серверу выделяются строго ограниченные ресурсы физического сервера, поэтому большая нагрузка или криво написанный скрипт на одном сервере практически никак не повлияет на остальные.

Независимо от того, какой используется сервер: физический или виртуальный, возникает необходимость установки и настройки программного обеспечения. О том, как установить и настроить web-сервер мы и расскажем далее. Web-сервер может быть использован, как для размещения сайта (хостинга), так и для его создания и отладки. В таком случае web-сервер можно запустить на локальном компьютере. Многие разработчики сайтов используют Windows даже тогда, когда сайт будет работать под Linux. Иногда доходит до абсурда: под Linux запускают виртуальную машину, в которой устанавливают Windows, чтобы использовать привычный «Денвер».

Мы будем устанавливать web-сервер на Ubuntu 14.04 LTS локально и одновременно на удаленном сервере. Ubuntu для сервера и десктопа — это одна система, различия только в стандартном наборе программного обеспечения (на сервере отсутствует графическая среда) и некоторых настройках, например, связанных с подключением к серверу. Далее мы установим наиболее популярное программное обеспечение для web-сервера — LAMP. Аббревиатура LAMP обозначает: Linux, Apache, MySQL, PHP. Чтобы установить web-сервер, откроем терминал комбинацией клавиш Ctrl+Alt+T. Подробнее о работе с терминалом смотрите статью  «Команды Linux». Для установки web-сервера на локальном компьютере будем выполнять команды непосредственно в терминале, а для работы с удаленным сервером необходимо сначала к нему подключиться.

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

Если вы устанавливаете web-сервер на локальном компьютере, то этот раздел можно пропустить и сразу перейти к разделу «Установка Apache». Подключимся к удаленному серверу с помощью ssh, набрав следующую команду:

ssh root@123.123.123.123, где 123.123.123.123 — IP-адрес сервера, root — имя пользователя.

В процессе подключения необходимо указать пароль. Кроме того, при первом подключении также нужно ответить «yes» в ответ на вопрос «Are you sure you want to continue connecting (yes/no)?» (Вы уверенны, что хотите продолжить соединение?).

Первым делом изменим пароль root, набрав команду:

passwd

После чего будет предложено ввести новый пароль и подтвердить его. Пароль рекомендуется выбирать длинной не менее восьми символов, в нем должны присутствовать как минимум одна цифра, одна прописная и одна строчная буква. Нельзя использовать в качестве пароля общеупотребительные слова и наборы символов: «qwerty», «123456» и т.д. Нужно хорошо запомнить или сохранить пароль в недоступном для других месте. Если вы забудете пароль, то скорее всего сервер придется устанавливать заново.

Теперь создадим нового пользователя для удаленного подключения к серверу, вместо root:

adduser alex

В данном случае это будет пользователь alex, естественно, можно выбрать любое другое имя. В процессе создания нового пользователя необходимо ввести и подтвердить пароль и ответить на несколько вопросов. Если вы не хотите отвечать на вопросы, можно просто нажать клавишу «Enter» несколько раз. Теперь у нас есть аккаунт пользователя alex, имеющий стандартные привилегии. Но нам нужен пользователь, который может выполнять административные задачи.

Добавим пользователю alex возможность выполнения административных задач с помощью команды sudo набрав:

visudo

Эта команда запустит редактор и откроет файл конфигурации. Найдем там следующие строчки:

# User privilege specification

root ALL=(ALL:ALL) ALL

И добавим ниже такую строчку:

alex ALL=(ALL:ALL) ALL

После чего нажмем последовательно комбинации клавиш Ctrl+O для записи файла и Ctrl+X для выхода из программы.

Следующая операция — настройка ssh. Откроем конфигурационный файл ssh:

nano /etc/ssh/sshd_config

По умолчанию подключение по ssh происходит по 22 порту. Изменим этот порт, чтобы к нему не подключались для подбора пароля. Это положительно отразится на безопасности и снизит ненужную нагрузку на сервер. Выберем номер нового ssh-порта в диапазоне 1024-65535, допустим 7777. Нужно убедиться, что этот порт не будет использоваться для других операций, например порты 8000 и 8080 могут использоваться web-сервером. Найдем в открытом файле /etc/ssh/sshd_config строчку

Port 22

И заменим ее на

Port 7777

Теперь запретим подключение по ssh с логином root. Найдем в файле строчку:

PermitRootLogin yes

и изменим «yes» на «no»:

PermitRootLogin no

Можно также указать пользователей, которые смогут подключаться по ssh, с помощью такой строчки:

AllowUsers alex

Теперь по ssh сможет подключиться только пользователь alex.

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

Теперь нажмем Ctrl+O и Ctrl+X для записи файла и выхода из программы. Перезапустим сервис ssh с новой конфигурацией:

service ssh restart

Прежде чем отключиться от сервера или продолжить установку, протестируем новую конфигурацию. Не выходя из текущего сеанса, откроем новое окно терминала (Ctrl+Alt+T) или вкладку (Ctrl+Shift+T) и попробуем подключиться к серверу, набрав команду:

ssh -p 7777 alex@IP_адрес_сервера, где 7777 — новый порт ssh, alex — новое имя пользователя. Теперь все новые подключения к серверу следует производить с помощью этой команды. Если подключение прошло успешно, можно продолжить установку или отключиться от сервера с помощью команды:

exit

Следует помнить, что после вышеуказанных действий для выполнения команд с приведениями root нужно использовать sudo:

sudo command, где command — команда, для запуска которой нужны административные привилегии.

Установка Apache

Перед тем, как установить web-сервер, обновим программное обеспечение, выполнив команды:

sudo apt-get update

sudo apt-get upgrade

Сначала установим Apache — самый распространенный HTTP-сервер, который отличается надежностью, расширяемостью, возможностью использования модулей и гибкостью конфигурации.

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

sudo apt-get install apache2

После чего откроем браузер и проверим работу HTTP-сервера, набрав IP-адрес сервера в адресной строке браузера, например: http://127.0.0.1 или http://localhost, если сервер установлен на локальном компьютере. Мы увидим примерно следующее:

Рис. 1. Apache2 Ubuntu Default Page

Эта страница сообщает, что Apache работает нормально. Отображаемый файл расположен по адресу /var/www/html/index.html, документация находится в файле /usr/share/doc/apache2/README.Debian.gz. Файлы конфигурации расположены в директории /etc/apache2/. Основной файл конфигурации носит имя apache2.conf, а ports.conf служит для описания портов входящих соединений. В директории sites-enabled/ хранятся конфигурации виртуальных хостов, в conf-enabled/ фрагменты глобальной конфигурации и в mods-enabled/ конфигурация модов сервера. Для управления сервером используются команды a2enmod, a2dismod, a2dissite, a2ensite, a2enconf, a2disconf. Исполняемый файл /usr/bin/apache2 нельзя запускать непосредственно, так как при этом не будет учитываться конфигурация сервера. Для запуска или установки сервера следует использовать /etc/init.d/apache2 или apache2ctl.

На данном этапе уже можно разместить сайт на сервере, скопировав файлы в папку /var/www/html/, при условии, что сайт будет один без скриптов и баз данных. Чтобы разместить на сервере несколько сайтов нужно настроить конфигурацию. А для использования PHP и баз данных нужно установить соответствующее программное обеспечение.

Установка MySQL

MySQL— одна из самых популярных систем управление базами данных, для ее установки выполним команду:

sudo apt-get install mysql-server php5-mysql libapache2-mod-auth-mysql

В процессе установки надо будет ввести и подтвердить пароль для root пользователя MySQL. После установки создадим структуру баз данных с помощью команды:

sudo mysql_install_db

После чего запустим скрипт для настройки безопасности MySQL:

sudo mysql_secure_installation

Сначала введем пароль root MySQL, который задали выше. На первый вопрос «Change the root password?» (Изменить пароль root?) ответим «n», поскольку пароль мы уже задали. Далее, отвечая на вопросы, можно просто нажимать клавишу «Enter» — Yes по умолчанию. На следующий вопрос «Remove anonymous users?» (Удалить анонимных пользователей?) ответим «Y», поскольку анонимные пользователи — это потенциальная дыра в защите. На вопрос «Disallow root login remotely?» (Запретить удаленное подключение пользователя root?) также ответим «Y», если использовать удаленное подключение, то лучше делать это под менее привилегированным пользователем. Следующий вопрос — «Remove test database and access to it?» (Удалить тестовую базу данных?) отвечаем «Y». Ответ на вопрос «Reload privilege tables now?» также «Y».

Установка PHP

PHP — один из самых широко используемых скриптовых языков программирования для создания web-сайтов. Для его установки выполним следующую команду:

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

По умолчанию Apache при обращении к директории ищет там файл index.html, сделаем так, чтобы он искал сначала index.php. Для этого отредактируем файл dir.conf:

sudo nano /etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>

DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.h$

</IfModule>

Поставим index.php на первое место перед index.html:

<IfModule mod_dir.c>

DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.h$

</IfModule>

После чего нажмем Ctrl+O для записи файла и Ctrl+X для выхода из редактора. Чтобы сервер прочитал новую конфигурацию, перезагрузим его:

sudo service apache2 restart

Установка расширений PHP

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

apt-cache search php5-

Более полную информацию о конкретном модуле можно получить с помощью команды:

apt-cache show имя_модуля

Например, набрав:

apt-cache show php5-gd

мы узнаем, что это модуль для работы с графикой, поддерживающий форматы JPEG, PNG, XPM и шрифты Freetype/ttf. Для установки модуля php5-gd выполним команду:

sudo apt-get install php5-gd

При этом можно перечислить несколько модулей в одной строчке через пробел. После установки необходимых расширений, проверим работу сервера, запустив простой PHP скрипт. Откроем редактором nano файл

sudo nano /var/www/html/phpinfo.php

Поместим в него следующие строчки:

<?php

phpinfo();

?>

Сохраним файл и выйдем из редактора (Ctrl+O, Ctrl+X). Теперь откроем браузер и наберем в адресной строке http://ip_адрес_сервера/phpinfo.php, если сервер локальный, то http://localhost/phpinfo.php

Мы увидим подробную информацию о конфигурации PHP:

Рис. 2. Информация о конфигурации PHP

На рабочем сервере такие файлы лучше не оставлять, чтобы не давать информацию хакерам. Поэтому после проверки удалим файл phpinfo.php командой:

sudo rm /var/www/html/phpinfo.php

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

 

Популярные публикации

Самые популярные публикации по теме
за все время