Королева форумов — Discourse. Ruby on Rails is Best
В мире CMS-ок уже десятилетиями правит один язык. Который создан чисто для веба. Все его знают это PHP. Все самые популярные CMS сделаны на этом языке. Есть конечно же CMS написанные на других языках. Но как правило они не так популярны. Точнее значительно уступают по популярности CMS на PHP.
Вот статистика таких CMS и SaaS платформ:
Shopify сделанный на Ruby on Rails второй по списку!
Как видно из источника самыми популярными CMS являются — WordPress, Joomla, Drupal, Bitrix, OpenCart и так далее. Поэтому здесь другим не место.
И поэтому удивительно что среди «движков» для форумов появился сильный игрок (игроки) из не PHP мира. Это очень мощная форум платформа — Discourse. Пока по статистике использования на втором месте (поэтому королева, а не король):
Discourse и Mastadon написаны на Ruby!
Что из себя представляет Discourse?
Это мощная платформа для создания форумов. С большим сообществом и наличием огромного количества дополнении. Если вы хотите создать форум то мы рекомендуем вам ее.
Админка форума
Админка этого движка форума довольно функциональная:
Админка форума
Можно поменять логотип сайта:
Добавить логотип на форум
Также можно поменять название сайта, мета описание, тайтл и так далее. Это в принципе есть у всех сайтов.
А вот что есть не у всех то это оформление сайта. В Дискорсе вы можете менять цвета кнопок, ссылок, текстов и так далее:
Поменять стиль сайта
То есть можно полностью изменить внешний вид сайта!
Еще одно необычное свойство этого форума то что на нем можно поменять любой текст! Любой. Например если мы хотим поменять слово Войти на Зайти. Или что то другое то просто идем в Оформление---Текст и вводим слово Войти:
Можно менять все тексты
Вы можете поменять везде на сайте где есть слово Войти. Или поставить в разные части разные слова.
Это очень полезная вещь. Потому что вы сможете сами подстоить под себя все оформление. Особенно если это тематические форумы то там часто используется сленг. Например не Регистрация, а Давай к нам. Или Присоединяйся.
На заказ я устанавливал и настраивал очень большое количество форумов. И скажу честно что наверное самым удобным для пользователя есть и является Дискорс. Благодаря вот таким фишкам вроде поменять любые тексты.
Еще одно полезное свойство это вставка Произвольных полей:
Поля для пользователей
Вы можете добавить любые поля для участников форума. Какие? Да один бог знает какие! Все зависит от Заказчика. Где то нужно просто добавить поле модель авто. Если это допустим форум для автомобилистов Тойоты то ставите модель авто.
А где то такие поля будут в большом количестве. И иногда вроде кажется зачем это нужно? Но поверьте они нужны!
Таких вещей в админке Дискорса очень много. Чтобы их всех записать нужно написать целую книгу!
Установка Discourse
В отличие от PHP форумов она не устанавливается путем скачивания архива на Shared хостинг. Есть много компании которые предлагают установку в один клик. Например Digital Ocean. Кроме этого есть облачная версия:
Установка форума под ключ
Почти у всех движков форумов есть такие облачные версии.
А так устанавливают с помощью Docker. И это правильно! Потому что для этого форума нужен не только Ruby, но Redis и другое. Которые по одиночке устанавливать придется очень долго.
В интернете есть много разного рода статей по установке Дискорса. Например вот этот — https://www.rosehosting.com/blog/how-to-install-discourse-on-ubuntu-22–04/. Есть и официальный гайд — https://github.com/discourse/discourse/blob/main/docs/INSTALL-cloud.md
Я расскажу здесь в кратце как идет установка. Предположим что у вас Ubuntu 22.04 (или другой версии).
Еще хотел бы сказать на счет системных требовании. Дискорс требует как минимум 2GB оперативки. И около 50GB места. В зависимости от того как считает ваш хостинг оператор.
Если у вас 2ГБ то рекомендуем сделать вам SWAP файл. Сразу на четыре или больше ГигаБайт.
Сперва зайдем и обновим все пакеты:
sudo apt-get update -y && sudo apt-get upgrade -y
Это вещь стандартная. Всегда нужно обновлять.
Потом идем и устанавливаем GPG ключи:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
Если у вас не заработает и вы новичок в Линуксе, то установите сперва Curl:
sudo apt install curl
Обычно новички которые работают с консолем впервые не могут понять в чем проблема? Я вроде написал команду из сайта правильно. А ничего не устанавливается!
Теперь устанавливаем сам Докер:
sudo apt install docker-ce docker-ce-cli containerd.io -y
Теперь включаем его как сервис:
sudo systemctl start docker && sudo systemctl enable docker
Не помню. Но кажется в шестнадцатой версии появился systemctl. Поэтому если у вас более древняя версия Убунту то будут проблемы с установкой Докера.
А такое может быть! Например в прошлом году я видел хостинг который предлагает установить на VPS хостинг Убунту 14 версии! Конечно это не правильно. Но в жизни все может быть. Например заказчик купил вот такой хостинг. А вы потом паритесь.
Теперь проверьте работает ли Докер:
sudo systemctl status docker
Ответ примерно должен быть таким:
root@host:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2023-03-02 16:28:53 CST; 21s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 96031 (dockerd)
Tasks: 9
Memory: 24.8M
CPU: 525ms
CGroup: /system.slice/docker.service
└─96031 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Если не так то повторите шаги обратно. Может что-то сделано не так.
Теперь установим сам Дискорс в Докере. Для этого сперва пишем вот так:
sudo mkdir -p /home/discourse
cd /home/discourse/
sudo git clone https://github.com/discourse/discourse_docker.git .
То есть создаем сперва папку (команда mkdir -p /home/discourse) /home/discourse. Потом идем туда (команда cd) и закачиваем Дискорс из Github.com
Это я пишу для новичков. Хочу развежать все. Чтобы они не сидели часами смотря на консоль и думая, а что я сделал не так?
Если консоль пишет что такая папка есть. То набираем так:
cd /home/discourse/
sudo git clone https://github.com/discourse/discourse_docker.git .
Если и это уже сделано то идем дальше. Повторюсь. Если папка уже есть и она содержит все нужное то идем дальше.
Набираем вот такую команду:
sudo bash ./discourse-setup
В ответ выйдет примерное такое:
Checking your domain name . . .
Connection to yourdomain.com succeeded.
Email address for admin account(s)? [me@example.com,you@example.com]: admin@yourdomain.com
SMTP server address? [smtp.example.com]: smtp.yourdomain.com
SMTP port? [587]:
SMTP user name? [user@example.com]: user@yourdomain.com
SMTP password? [pa$word]: YourStrongPasswordHere
notification email address? [noreply@yourdomain.com]:
Optional email address for Let's Encrypt warnings? (ENTER to skip) [me@example.com]:
Optional Maxmind License key (ENTER to continue without MAXMIND GeoLite2 geolocation database) [1234567890123456]:
Does this look right?
Hostname : yourdomain.com
Email : admin@yourdomain.com
SMTP address : smtp.yourdomain.com
SMTP port : 587
SMTP username : user@yourdomain.com
SMTP password : YourStrongPasswordHere
Notification email: noreply@yourdomain.com
Maxmind license: (unset)
ENTER to continue, 'n' to try again, Ctrl+C to exit:
letsencrypt.ssl.template.yml enabled
Configuration file at containers/app.yml updated successfully!
Здесь вводим данные сайта. Адрес, почту и SMTP сервис. В качестве SMTP можно использовать Джимейл. В интернете есть много уроков как настроить его.
Кроме Гугла есть и другие сервисы SMTP. У большинства из них есть бесплатные версии. SMTP нужен для отправки писем (это тоже пишу для новичков).
Если все ок то выйдет вот такая надпись:
DISCOURSE_HOSTNAME=yourdomain.com -e
DISCOURSE_DEVELOPER_EMAILS=admin@yourdomain.com -e
DISCOURSE_SMTP_ADDRESS=smtp.yourdomain.com -e DISCOURSE_SMTP_PORT=587 -e
DISCOURSE_SMTP_USER_NAME=user@yourdomain.com -e
DISCOURSE_SMTP_PASSWORD=YourStrongPasswordHere -e
DISCOURSE_SMTP_DOMAIN=yourdomain.com -e
DISCOURSE_NOTIFICATION_EMAIL=noreply@yourdomain.com -e
LETSENCRYPT_ACCOUNT_EMAIL=me@example.com -h host-app -e
DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:a7:ac:92:6f:88 local_discourse/app /sbin/boot
48d8ab41804db85677cc197fd19e7d5510faec248d99ce16d5a31082956f3463
А на сайте должны быть вот так:
Удачная установка форума
Следует отметить что такая надпись может выйти не сразу. Например если вы домен зарегистрировали недавно. И добавили ДНС записи не так давно.
Ждем обновление ДНС. Обычно до 24 часов. В зависимости от зоны домена. Если это ком то он быстро обновится. В течение нескольких минут. Но все равно подождите.
Потом жмем на Register и заполняем данные. Пароль, почту админа и так далее.
Установка плагинов Дискорса
В отличие от WordPress плагины вроде систем как Дискорс устанавливаются через консоль. Сперва пишем вот так:
cd /var/discourse
nano containers/app.yml
Потом откроется app.xml это файл настроек Дискорса:
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git
- sudo -E -u discourse git clone https://github.com/discourse/discourse-solved.git
Вот сюда пишем адрес репризотория плагина для Дискорса:
- sudo -E -u discourse git clone https://github.com/мой-плагин.git
Вместо «мой плагин» пишем адрес где расположен ваш плагин.
Теперь обновляем сам Дискорс:
cd /var/discourse
./launcher rebuild app
Если сайт перестал работать то не проблема. Это Дискорс устанавливает зависимости. И на несколько минут ваш форум будет не доступен.
Поэтому лучше установку плагинов делать когда люди не часто пользуются вашим форумом. Например ночью или в выходные дни (в зависимости от тематики форума его активность бывает в разное время).
Если нужно удалить плагин то убираем строку с его адресом в файле app.yml и набираем:
cd /var/discourse
./launcher rebuild app
Также Дискорс рекомендуется часто обновлять из консоли. Хотя бы несколько раз в году. Еще не рекомендуем вам обновлять Дискорс из админки если ваш программист не в доступе. Все может поламатся.
Ну и конечно же делайте резервные копии перед установкой плагина и обновлением форума.
Ruby умирает?
Да не смешите людей! Чтобы говорить о том что тот или иной язык умирает должны быть реальные основания. В виде цифр. Статистические. Однако везде только эмоции. Не конкретики что этот язык умирает.
Где статистика того что Руби начали использовать меньше? Есть? Нет! А вот реальные данные:
Руби последние десять лет только растет!
Вот источник — w3techs.com/technologies/history_overview/programming_language/ms/y.