создание сайта, или первые шаги

Приветы!
В своё время писал несколько статей про создание сайта, но из-за моей халатности, они были утеряны.
Пришло время восстановить их!

немного заметок

Статья пишется незрячим для незрячих!
Если вдруг она проиндексируется, и вы случайный гость сайта, не спишите покидать сайт.
Информация будет вам полезна и понятна.
Да, без привычных вам картинок и скриншотов, за то с текстом!
Также уточню, что сайт будем разворачивать на обычной vds, заказанной тут
Вроде всё уяснили, начинаем!

подготовим необходимый набор программ и всё осмыслим

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

  • зачем мне нужен сайт?
  • что я буду продвигать?
  • а может это будет блог?
  • что я буду в нём писать?
  • как я его буду продвигать?
  • сможет ли сервер выдержать потенциальную нагрузку на него?
  • будут ли какие-то сервисы помимо сайта?

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

выбор оптимальной конфигурации сервера

Есть два подхода к выбору конфигурации:

  • взять конфигурацию с ресурсами на запас
  • Это может избавить вас от лишней миграции на какое-то время.

  • взять минимальную конфигурацию сервера

Как понятно из второго пункта, миграция в ближайшем будущем может случиться.

что мы имеем на борту для примера

У меня конфигурация следующая:

  • 1 ядро процессора
  • 512 мегабайт оперативной памяти
  • 7 гигабайт дискового пространства
  • 100 мегабит в секунду пропускная способность канала в ЦОД

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

начинаем готовить сервер

Для того, чтобы наш сайт работал, нам необходимо:

  • веб-сервер
  • Будем использовать apache.

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

  • php

Подключаемся к серверу по ssh, используя доступ к учётной записи root.
Я буду использовать «putty» для своего удобства.
Скачать программу, можно из раздела «ссылки» текущей статьи.
Начинаем устанавливать нужный софт на сервер.
В качестве системы, у меня на борту debian.
Для установки веб-сервера, системы управления базами данных, языка php, дополнительных расширений к нему, используем команды:
apt install apache2
apt install mariadb-server
mysql_secure_installation
apt install php php-mysql php-curl php-dom php-mbstring php-imagick php-zip php-xml php-gd
Перезапускаем apache
systemctl restart apache2

работа с базой данных

Нам необходимо написать команду, которая направит нас в консоль управления базами данных.
mysql
Далее, по очерёдности, вводим команды, как описано ниже.
create database dbname;
dbname —- это название базы данных.
create user username@localhost identified by 'password';
Вместо username и password, задаём свои значения.
Вы заметили, что в конце стоит ;?
Это не моя опечатка, а аргумент команды, который показывает, что инструкция завершилась.
Без этого символа команда исполнена не будет.
Вы или не увидите результат, или получите синтаксическую ошибку.
Продолжаем вводить команды.
grant all on dbname.* to username@localhost identified by 'password';
Эта команда даёт все разрешения пользователю базы данных.
Что это означает?
Этот пользователь получает разрешение на запись, изменение любых таблиц текущей базы данных, импорт, экспорт таблиц и т.д.
Без этого разрешения, ваш пользователь работать с базой данных не сможет, нужная CMS «Система управления контентом» не установится.
Продолжим.
flush privileges;
Эта команда сбросит все привелегии. Выполнять не обязательно, но я всегда это делаю.
Так, на всякий.
exit;
Можно попробовать подключиться к базе данных:
mysql dbname
Если «mariadb» вас поприветствует и покажет вам название базы данных, то всё хорошо.

конфигурируем apache

Пример конфигурации, оставлю в разделе ссылки.

создадим файл конфигурации

создадим новый текстовый документ вот с таким названием «example.com.conf»
Вместо моего примера доменного имени должно быть ваше.
То же самое относится ко всем параметрам конфигурации, где фигурирует пример.

начинаем заполнение

Открыли файл в блокноте, и начинаем вписывать строки в том порядке, в котором они даны.
Где потребуется, я поясню.
<VirtualHost *:80>
ServerName example.com

DocumentRoot /var/www/html/example.com

Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
ServerName example.com

DocumentRoot /var/www/html/example.com

<Directory /var/www/html/example.com>
options -indexes
AllowOverride all
</Directory>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

</VirtualHost>

А теперь поясню

  • сначала мы указали настройки хоста для порта 80, с перенаправлением на защищённый протокол https
  • потом мы указали настройки хоста для порта 443, который будет задействован по умолчанию.
  • включили модуль ssl
  • указали настройки индексов

Не забудьте сначала выпустить сертификаты перед тем, как заполнять пути к ним.
И да, не забудьте загрузить файл по пути:
/etc/apache2/sites-available
Также вернитесь в терминал и выполните:
a2dissite 000-default

установка ssl

Мы сделаем всё максимально красиво, модно и безопасно.
Снова возвращаемся в терминал, и пишем команду:
apt install letsencrypt
Как и везде, соглашаемся с тем, что будут установлены новые пакеты, дожидаемся завершения операции, и вводим команду:
certbot certonly
Выбираем 1, пишем электронную почту, соглашаемся с условиями лицензии, вводим домен, дожидаемся, пока выпустится сертификат.
Всё можно делать по инструкции из вывода команды.
Немного забыл!
Перед выпуском сертификата, остановите веб-сервер, выполнив:
systemctl stop apache2
Как только выпустили ssl, включим модуль:
a2enmod ssl
далее, выполним:
a2ensite sitename
Делаем:
systemctl restart apache2
Проверим синтаксис конфига:
apache2ctl -t
Если видим «syntax ok», то всё замечательно.
Едем дальше.
Давайте ещё включим модуль, который позволит нам делать красивые ссылки:
a2enmod rewrite

заключение

Сегодня мы подготовили сервер к тому, что на нём будет размещён сайт.
В следующих постах мы будем:

  • устанавливать cms
  • наполнять наш первый сайт
  • попробуем мигрировать на другой сервер

И это далеко не всё!
А теперь, пришло время оставить вам ссылки на сопутствующие материалы!

ссылки

скачать putty
скачать пример конфигурации
Спасибо за прочтение данной статьи!
Увидимся в следующих постах.
Все вопросы, дополнения и замечания, оставляйте в комментариях.

Выскажите своё мнение