Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Joomla — третья по популярности (после Wordpress и Shopify) система управления контентом, написанная на языке PHP и использующая в качестве хранилища данных реляционные базы данных.
Как и многие другие CMS, Joomla полностью бесплатна для использования и имеет открытый код. Система шаблонов легко позволяет менять внешний вид сайта, а огромный каталог расширений, позволяет так же легко дополнять функциональность сайта нужными модулями.
За что мы любим Joomla
Вот 10 фактов, за которые мы любим ее сами.
- Бесплатная
Главное, за что мы любим Joomla и что помогло ей стать настолько популярной - Опенсорсная
Как опенсорсный продукт, любой может брать ее код и менять, если понадобится. Это привело много разработчиков к работе именно с Joomla.
- SEO Friendly
Система управления контентом в Joomla хорошо дружит с поисковыми системами. Работает на apache-модуле, который создает ссылки, которые хорошо воспринимаются поисковиками. Он же помогает добалять свои собственные названия страница, мета-описания и мета-ключевые слова. Это помогает сайтам на джумле хорошо индексироваться.
- Безопасная
Безопасность играет важную роль в веб-разработке, с джумлой в этом вопросе можно быть спокойным. У CMS есть специальная команда разработчиков «Joomla Security Strike Team», которая занимается только поиском уязвимостей и их починкой. Они прогоняют множество автоматических тестов, проверяют каждый кусок кода, принимают фидбек от пользователей и так далее. При использовании свежей версии Joomla можно быть достаточно уверенным в безопасности и в том, что хакеры пойдут далеко и надолго.
- Простая интеграция шаблонов
У Joomla огромное количество шаблонов для подключения. Подключаются они в несколько кликов, но самое лучшее в том, что разные шаблоны можно использовать под разные страницы.
- Мультиязычность
Причем и сайтов, и админки, и поддержки
- Обширная библиотека расширений
Joomla создали собственный фреймворк, благодаря которому расширений действительно много: почти под любую задачу можно найти и подключить уже готовое. Есть три варианта расширений: компоненты, модули и плагины.
- Регулярные обновления
Один из наших любимых пунктов: обновления выходят часто, в августе они за релизили новую свежую версию.
- Большое коммьюнити и его активная поддержка
Сообщество разработчиков на Joomla одно из самых больших онлайн-коммьюнити в мире. Много форумов, где можно получить ответ от опытных разработчиков, которые активно поддерживаются самой командой CMS.
- Отличная документация
Детально проработанные документации для дизайнеров, разработчиков и администраторов сайтов. Есть канал на youtube, где учат быстро разворачивать сайт новичкам.
При такой большой любви, мы конечно не могли оставить наш маркетплейс без Joomla и создали новый образ с ней.
Как мы создавали этот образ: требования к серверу
Для использования Joomla рекомендуется использовать 2 Гб RAM и 2 ядра CPU.
Основные файлы Joomla занимают около 40 Мб, дополнительно вам понадобится место для хранения картинок, базы данных, тем, дополнительных модулей и резервных копий, которое будет зависить от размера вашего сайта.
Для Joomla 3.9 требуется минимальная версия PHP 5.3.10, но рекомендуется использовать 7.3 или выше.
В качестве веб-сервера Joomla может использовать Apache, Nginx или IIS, а в качестве базы данных MySQL, MSSQL или PostgreSQL.
Мы будем устанавливать Joomla с использованием Nginx и MySQL.
Установка
Обновленим установленные пакеты до последней версии:
sudo dnf update -y
Добавим постоянное разрешение для входящего трафика на
http/80
и https/443
порты:sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
Применим новые правила файрвола:
sudo systemctl reload firewalld
Запустим и включим сервер Nginx:
sudo systemctl start nginx
sudo systemctl enable nginx
Установим PHP, PHP-FPM, и требуемые модули PHP:
sudo dnf install php-fpm php-cli php-mysqlnd php-json php-gd php-ldap php-odbc php-pdo php-opcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip -y
Установим MySQL Server:
sudo dnf install mysql-server -y
Включим и запустим сервер MySQL:
sudo systemctl start mysqld
sudo systemctl enable mysqld
Так как мы делаем шаблон для VDS, а они могут быть медленными, добавим задержку старта mysqld 30 секунд, иначе могут быть проблемы со стартом сервера при первоначальной загрузке системы:
sudo sed -i '/Group=mysql/a \
ExecStartPre=/bin/sleep 30
' /usr/lib/systemd/system/mysqld.service
Изменим группу и пользователя из под которого будет работать nginx внеся изменения в
/etc/php-fpm.d/www.conf:
sudo sed -i --follow-symlinks 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf
sudo sed -i --follow-symlinks 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf
Изменим владельца каталога сессий PHP так же соответственно на nginx:
sudo chown -R nginx. /var/lib/php/session
Удалим строки с коментариями из файла конфигурации /etc/nginx/nginx.conf (что бы не было двойных срабатываний для sed):
sudo sed -i -e '/^[ \t]*#/d' /etc/nginx/nginx.conf
Добавим в
/etc/nginx/nginx.conf
настройки компрессии gzipsudo sed -i '/types_hash_max_size 2048;/a \
\
gzip on;\
gzip_static on;\
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/x-icon image/svg+xml application/x-font-ttf;\
gzip_comp_level 9;\
gzip_proxied any;\
gzip_min_length 1000;\
gzip_disable "msie6";\
gzip_vary on; \
' /etc/nginx/nginx.conf
Добавим в /etc/nginx/nginx.conf настройки индексного файла index.php:
sudo sed -i '/ root \/usr\/share\/nginx\/html;/a \
index index.php index.html index.htm;\
' /etc/nginx/nginx.conf
Добавим настройки для дефолтного сервера обработку php через сокет php-fpm, отключим лог для статических файлов, увеличим время expire, отключим лог доступа и ошибок для favicon.ico и robots.txt и запретим доступ к файлам .ht для всех:
sudo sed -i '/ location \/ {/a \
try_files $uri $uri/ /index.php?q=$uri&$args;\
}\
\
location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ {\
access_log off;\
expires max;\
}\
\
location ~ \.php$ {\
try_files $uri =404;\
fastcgi_pass unix:/run/php-fpm/www.sock;\
fastcgi_index index.php;\
include fastcgi_params;\
fastcgi_intercept_errors on;\
fastcgi_ignore_client_abort off;\
fastcgi_connect_timeout 60;\
fastcgi_send_timeout 180;\
fastcgi_read_timeout 180;\
fastcgi_buffer_size 128k;\
fastcgi_buffers 4 256k;\
fastcgi_busy_buffers_size 256k;\
fastcgi_temp_file_write_size 256k;\
}\
\
location = /favicon.ico {\
log_not_found off;\
access_log off;\
}\
\
location = /robots.txt {\
allow all;\
log_not_found off;\
access_log off;\
}\
\
location ~ /\.ht {\
deny all;' /etc/nginx/nginx.conf
Установим wget требуемый для установки certbot:
sudo dnf install wget -y
Скачаем исполняемый файл certbot с оффсайта:
cd ~
wget https://dl.eff.org/certbot-auto
Переместим certbot в /usr/local/bin/:
mv certbot-auto /usr/local/bin/certbot-auto
И назначим права и владельцем root:
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto
Установим зависимости certbot и на данном этапе прервем его работу (Ответы: Y, c):
certbot-auto
Скачаем с оффсайта архив с Joomla_3-9-22-Stable-Full_Package
cd ~
wget https://downloads.joomla.org/cms/joomla3/3-9-22/Joomla_3-9-22-Stable-Full_Package.tar.gz?format=gz
Установим tar для распаковки архива
sudo dnf install tar -y
Распакуем файлы в каталог веб-сервера
tar xf Joomla_3-9-22-Stable-Full_Package.tar.gz\?format\=gz -C /usr/share/nginx/html/
Удалим архив
rm -f Joomla_3-9-22-Stable-Full_Package.tar.gz\?format\=gz
Назначим владельцем файлов nginx
sudo chown -R nginx. /usr/share/nginx/html
Отключим буферизацию вывода по рекомендации Joomla
sudo sed -i --follow-symlinks 's/output_buffering = 4096/output_buffering = Off/g' /etc/php.ini
На данном этапе мы выключим сервер и сделаем снапшот:
shutdown -h now
После запуска VDS из снапшота выполним первоначальную настройку MySQL сервера запустив скрипт:
mysql_secure_installation
Включим валидатор паролей:
Would you like to setup VALIDATE PASSWORD component? : y
Зададим пароль пользователя root MySQL:
New password:
Re-enter new password:
Удалим анонимных пользователей:
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Запретим подключаться root удаленно:
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Удалим тестовую базу данных:
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Перезагрузим таблицы привилегий:
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
После этого, для завершения установки, мы можем перейти по адресу vps_ip_address
По этому адресу мы увидим страницу с установкой Joomla.
Укажем название сайта, зададим email, логин и пароль администратора Joomla. Нажмем «Далее».
На второй странице укажем имя пользователя БД root и пароль, который мы задали при запуске mysql_secure_installation.
Зададим имя базе данных, например joomla. Нажмем "Далее".
На третьей странице, мы можем выбрать установку демо-данных для ознакомления с возможностями CMS или выбрать пустой сайт по умолчанию, после выбора нажмем "Установка".
Для установки русского языка, нужно нажать "Установка языковых пакетов" — Russian, и после установки, установить языком по умолчанию.
Для завершения установки нужно нажать "Удалить директорию", что бы удалить файлы используемые для установки.
После этого можно перейти в панель управления с созданным логином и паролем администратора Joomla.
НАСТРОЙКА HTTPS (ОПЦИОНАЛЬНО)
Для настройки HTTPS у VDS должно быть действующее DNS имя, укажите в /etc/nginx/nginx.conf
в разделе server имя сервера (например):
server_name domainname.ru;
Перезапустим nginx:
service nginx restart
Запустим certbot:
sudo /usr/local/bin/certbot-auto --nginx
Введем свой e-mail, cогласимся с условиями сервиса (A), Подписка на рассылку (опционально) (N), выберем доменные имена для которых нужно издать сертификат (Enter для всех).
В случае, если все прошло без ошибок, мы увидим сообщение об успешной выдаче сертификатов и настройке сервера:
Congratulations! You have successfully enabled ...
После этого подключения на 80 порт будут перенаправляться на 443 (https).
Добавим в /etc/crontab для автоматического обновления сертификатов:
# Cert Renewal
30 2 * * * root /usr/local/bin/certbot-auto renew --post-hook "nginx -s reload"
Для владельцев бизнеса: предложите свой софт
Если вы — разработчик софта, который разворачивают и используют на VPS, то мы можем включить вас в маркетплейс. Так мы можем помочь вам привести новых клиентов, трафик и узнаваемость. Пишите нам
Просто предложить нам образ в комментариях
Напишите, какой с каким софтом вы хотели бы иметь возможность разворачивать виртуалки в один клик?
Чего вам не хватает в маркетплейсе RUVDS?
Что каждый уважающий себя хостинг должен обязательно включить в свой маркетплейс?