Сьогодні практично кожна поважаюча себе компанія має власний сайт. Чимало сайтів і у приватних осіб, завдяки тому, що стати власником сайту зовсім не складно і відносно недорого, або навіть безкоштовно.

Хостинг

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

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

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

З іншого боку, shared hosting має безліч недоліків:

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

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

Незалежно від того, який використовується сервер: фізичний або віртуальний, виникає необхідність встановлення та налаштування програмного забезпечення. Про те, як встановити та налаштувати веб-сервер ми і розповімо далі. 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 [email protected], де 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 [email protected]_адрес_сервера, де 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/ фрагменти глобальної конфігурації і модов/ конфігурація модів сервера. Для управління сервером використовуються команди 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/модов/dir.conf

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

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

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

Після чого натиснемо 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

Помістимо в нього наступні рядки:

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, але підтримує тільки один сайт. Якщо ви збираєтеся розміщувати на сервері кілька сайтів, то необхідно настроїти конфігурацію віртуальних хостів, але про це вже в іншій статті.

Джерело: http://3das.com.ua/