Как добавить сайт на сервер Ubuntu без панели. Полный гид
Когда у администратора сервера встаёт вопрос как добавить сайт на сервер Ubuntu, многие предпочитают использовать панели управления, такие как cPanel или Plesk, для упрощения работы с сервером. Однако этот подход только на первый взгляд прост. Любые нештатные ситуации решаются гораздо сложнее, к тому же это дополнительные сервисы, которые могут замедлить работу системы. Кроме того, стоимость коммерческих панелей довольно высока. Бесплатные панели управления обычно имею ограниченный функционал, что немаловажно. Наше решение – добавить сайт на сервер Ubuntu без панели.
Новичкам процесс может показаться довольно сложным, но поверьте, оно того стоит. Панель стоит немалых денег, хотя и автоматизирует многие процессы администрирования. Вместе с панелью вы получаете много того без чего можно было обойтись и сэкономить ресурсы сервера. Выбор всегда за вами, но если вы решили администрировать свой сервер без помощи панели, наш гид вам поможет добавить сайт на сервер и настроить его работу.
В этом гиде мы рассмотрим настройку сайта на сервере Ubuntu без панели управления, что даст вам полный контроль над процессом и значительно повысит производительность.
В вашем случае могут быть незначительные различия, такие как база данных MySQL. Это не влияет на настройки. Если используете Apache вместо NGINX, настройки будут отличаться. Пишите в комментариях вопросы, объясним.
Мы будем использовать следующий конфиг:
1. Ubuntu 24.04
2. NGINX
3. MariaDB
4. Сертификаты Letsencrypt
Преимущества установки сайта без панели управления на сервере очевидны:
- Быстродействие: Отсутствие лишних слоёв программного обеспечения значительно ускоряет работу вашего сервера. Панели управления, несмотря на удобство, могут добавлять дополнительные процессы, которые замедляют сервер.
- Предсказуемость: Когда вы управляете сервером напрямую, вы лучше понимаете его работу. Отсутствие дополнительных абстракций позволяет вам точно контролировать, как работает каждый сервис, и быстрее устранять проблемы.
- Стабильность: Минимизация сторонних программ снижает вероятность возникновения ошибок и конфликтов между различными сервисами, что делает систему более стабильной.
В этом гиде мы покажем, как добавить сайт на сервер Ubuntu, используя стандартные утилиты, такие как Nginx и MariaDB, и настройку SSL-сертификатов для безопасности. Вы получите полный контроль над своим сервером, улучшите его производительность и безопасность.
Шаг 1: Установка необходимых компонентов
Для начала нам нужно установить несколько важных компонентов: Nginx, PHP, MariaDB и необходимые расширения для работы с сайтом. Все эти компоненты работают хорошо вместе и обеспечивают стабильную работу сайта.
Установка Nginx:
1 2 |
sudo apt update sudo apt install nginx |
Установка MariaDB:
1 |
sudo apt install mariadb-server |
После установки компонентов не забудьте запустить и включить их:
1 2 3 4 |
sudo systemctl start nginx sudo systemctl enable nginx sudo systemctl start mariadb sudo systemctl enable mariadb |
Шаг 2: Настройка MariaDB
Теперь, когда MariaDB установлена, нужно создать базу данных для вашего сайта. Заходим в MariaDB и создаем базу:
ВНИМАНИЕ! Не забудьте поменять название базы, имя пользователя и пароль на свои значения.
1 2 3 4 5 6 |
sudo mysql -u root CREATE DATABASE название базы; CREATE USER 'имя пользователя'@'localhost' IDENTIFIED BY 'пароль'; GRANT ALL PRIVILEGES ON crm.* TO 'имя пользователя'@'localhost'; FLUSH PRIVILEGES; EXIT; |
Шаг 3: Подготовка сайта
Теперь давайте подготовим директорию для сайта. В этом примере мы используем директорию /var/www/название_сайта
. Если ваш сайт еще не загружен, вы можете сделать это через SFTP или SCP в созданную директорию.
Надо отметить, что это не единственный вариант, но, пожалуй, самый простой. В более сложных структурах с несколькими пользователями сайт будет размещаться иначе.
Разархивируем и подготовим файлы:
1 |
tar -xvzf /var/www/название_сайта/название_архива -C /var/www/название_сайта |
Не забудьте задать правильные права на файлы и папки. Вполне вероятно при создании папок для файлов сайта под своим пользователем сайт не сможет иметь доступ к файловой системе. Это происходит потому, что сервер работает под пользователем www-data и обращаясь к файлам сайта, которые принадлежат вашему пользователю, будет получать отказ – “Permission denied”. Самое простое решение переназначить папки пользователю www-data, а после этого добавить своего пользователя в группу www-data, чтобы не потерять возможность работы с файлами под своим пользователем:
1 2 |
sudo chown -R www-data:www-data /var/www/название_сайта sudo usermod -a -G www-data ваш_пользователь |
Шаг 4: Настройка Nginx
Теперь перейдем к настройке Nginx. Создадим конфигурационный файл для нашего сайта в /etc/nginx/sites-available/название_сайта.conf, а затем создадим символическую ссылку в директории /etc/nginx/sites-enabled/.
Конфигурация Nginx для сайта будет выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
server { listen 80; server_name название_сайта www.название_сайта; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name название_сайта www.название_сайта; ssl_certificate /etc/letsencrypt/live/название_сайта/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/название_сайта/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ''; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; root /var/www/crm.wespe.club; index index.php index.html index.htm; client_max_body_size 50M; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTP_X_FORWARDED_PROTO $scheme; include fastcgi_params; } location ~ /\.ht { deny all; } add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-XSS-Protection "1; mode=block" always; access_log /var/log/nginx/название_сайта.access.log; error_log /var/log/nginx/название_сайта.error.log; } |
Не забудьте создать символическую ссылку:
1 |
sudo ln -s /etc/nginx/sites-available/название_сайта.conf /etc/nginx/sites-enabled/ |
Шаг 5: Установка SSL-сертификата
Для защиты сайта по HTTPS необходимо установить SSL-сертификат. Это на сегодняшний момент стандарт. Будем использовать Let’s Encrypt через Certbot. Certbot умеет писать настройки в NGINX, потому есть возможность получить сертификаты тремя способами:
- Без записи настроек. (После получения сертификатов это нужно будет делать вручную)
- В общий файл настроек Nginx (не рекомендуется для нескольких сайтов)
- В отдельный конфигурационный файл для каждого сайта (рекомендуемый вариант в нашем случае)
Вариант 1: Получение сертификата без изменения настроек Nginx
Этот вариант подходит, если вы хотите вручную настроить конфигурацию Nginx. Certbot только выдаст сертификаты, не изменяя файлы конфигурации:
1 |
sudo certbot certonly --nginx -d название_сайта -d www.название_сайта |
После выполнения команда выдаст путь к файлам сертификата, которые нужно будет прописать в конфигурации Nginx самостоятельно.
Вариант 2: Автоматическое добавление настроек SSL в общий файл Nginx
Если у вас в /etc/nginx/nginx.conf
или в другом общем файле уже есть настройки для всех сайтов, можно разрешить Certbot автоматически внести изменения:
1 |
sudo certbot --nginx -d название_сайта -d www.название_сайта |
В этом случае Certbot пропишет настройки SSL в основной конфигурации Nginx, что удобно, но может не подойти, если у вас индивидуальные файлы конфигурации для каждого сайта.
Вариант 3: Автоматическая настройка SSL в отдельном файле конфигурации сайта
Если вы используете отдельные файлы конфигурации для каждого сайта (например, /etc/nginx/sites-available/название_сайта.conf
), можно настроить Certbot так, чтобы он внёс изменения только в этот файл:
1 |
sudo certbot --nginx --nginx-server-root /etc/nginx/sites-available -d название_сайта -d www.название_сайта |
Этот метод удобен, если вы хотите, чтобы настройки применялись только к конкретному сайту, без изменения глобальных параметров Nginx.
После установки сертификатов для всех вариантов рекомендуется проверить конфигурацию и перезапустить Nginx:
1 |
sudo nginx -t && sudo systemctl reload nginx |
Шаг 6: Перезагрузка Nginx
После того как все настроено, перезагрузите Nginx, чтобы применить изменения:
1 |
sudo systemctl restart nginx |
Вот и всё! Теперь сайт должен быть доступен по адресу https://название_сайта
Заключение
В этом гиде мы шаг за шагом прошли через процесс настройки сайта на сервере Ubuntu без панели управления. Такой подход дает вам полный контроль над сервером, повышает его производительность и делает систему более предсказуемой и стабильной. Без лишних абстракций ваш сервер будет работать быстрее, и вы всегда будете понимать, что происходит на каждом этапе.
Если вы хотите узнать больше о настройках сервера или другие аспекты работы с Ubuntu, не стесняйтесь обращаться и задавать вопросы!