Установка Discourse на Ubuntu или Debian для разработки

:warning: Данное руководство содержит инструкции по установке в среде разработки. Для руководства по установке в продакшн-среде см.: Install Discourse in production with the official supported instructions


Итак, вы хотите настроить Discourse на Ubuntu или Debian для разработки и экспериментов?

Мы исходим из того, что вы работаете локально и у вас не установлены Ruby/Rails/Postgres/Redis на вашей системе Ubuntu или Debian. Давайте начнем!

Требования

Рекомендуется иметь как минимум 4 ГБ ОЗУ и 2 ядра процессора.

Текущая совместимость:

ОС Совместимость
Debian 11 :white_check_mark:
Crostini (Linux в ChromeOS) :white_check_mark:
Ubuntu 22.04 или новее :white_check_mark:

Установка зависимостей Discourse

В вашей системе должны быть установлены следующие пакеты:

** опционально

Теперь, когда зависимости Discourse установлены, перейдем к установке самого Discourse.

Клонирование Discourse

Склонируйте репозиторий Discourse в папку ~/discourse:

git clone https://github.com/discourse/discourse.git ~/discourse

~ обозначает домашнюю папку, поэтому исходный код Discourse будет доступен в вашей домашней папке.

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

Создайте роль с тем же именем, что и имя пользователя вашей Linux-системы:

cd /tmp && sudo -u postgres createuser -s "$USER"

Инициализация Discourse

Перейдите в папку Discourse:

 cd ~/discourse

Установите необходимые gems:

source ~/.bashrc
bundle install

Установите зависимости JS:

pnpm install

Теперь, когда gems успешно установлены, выполните следующие команды:

bin/rails db:create
bin/rails db:migrate
RAILS_ENV=test bin/rails db:create db:migrate

Запустите Rails и сборщик фронтенда:

bin/dev

Если изображения не отображаются, используйте вместо этого следующую команду:
(вы также можете указать IP-адрес, если работаете на удаленном сервере)

DISCOURSE_HOSTNAME=localhost UNICORN_LISTENER=localhost:3000 bin/dev

Теперь вы должны иметь возможность перейти по адресу http://localhost:3000, чтобы увидеть вашу локальную установку Discourse.

Создание нового администратора

Чтобы создать нового администратора, выполните следующую команду:

bin/rails admin:create

Следуйте подсказкам, и новая учетная запись администратора будет создана.

Настройка почты

Запустите MailHog:

mailhog

Поздравляем! Теперь вы администратор вашей собственной установки Discourse!

Удачной разработки! Чтобы начать, ознакомьтесь с Руководством для начинающих по созданию плагинов Discourse.


Последний раз проверено @blake 2023-04-03T06:00:00Z


Этот документ находится под контролем версий — предлагайте изменения на GitHub.

66 лайков
Docker setup for development
Share your Discourse dev setup
How to open via internal IP?
Discourse as Your First Rails App
Why is my dev server not showing me uploaded images in Topics?
Unable to Install Discourse for development
Can I install discourse on my local machine
Not receiving Activation Email
Override profile background via SSO
How to add a new language
Bitnami Discourse VM on Virtualbox + SMTP mail-server for testing
How do I go about making a very customized theme?
Jhead and svgo errors while running specs
Moderation Tools
Issue in setup discourse on ubuntu server
Rspec failing to load when using the official beginners guide
Mini_racer installation issues on ubuntu vagrant (OSX)
Can't set up dev environment due to cppjieba_rb failing to install
Can't install the bundle
Export only database data Postgres (for users, posts and topics)
Any interest in Podman?
Bundler cannot continue due installation error of mini_racer 0.4.0
How to setup discourse in my local for development?
How might we better structure #howto?
Please help, how do I install Discourse on macOS?
How might we better structure #howto?
Can't reach Discourse server in VM from Host
Images are not being populated in discourse
How to install Discourse locally?
Discourse Local setup
Is this correct? How long to install dev Version?
Overriding user_guardian.rb in a plugin (no fork necessary!)
How Sam's Windows development environment is configured
Site setting is different Every time on Ubuntu development installation
Problems with understanding the development of Discourse
How do I change the address in the database?
Discourse on local pc
Error while importing topics from Flarum (users, groups import OK)
Flarum To Discourse Migration
Problem in development Installation
Calling out for Testers
Problem in development Installation
Developing on the mobile version of Discourse
Can't build Discourse on Ubuntu 20.10
Discourse standalone
Set up a local Discourse Development Environment?
Unable to setup discourse
Migrate a phpBB3 forum to Discourse
Migrate a vBulletin 4 forum to Discourse
Migrate a FluxBB forum to Discourse
Migrate a NodeBB forum with Redis to Discourse
Migrate a MyBB forum to Discourse
Migrate a NodeBB forum with MongoDB to Discourse
Migrate a Ning forum to Discourse
Migrate a Phorum forum to Discourse
Migrate a PunBB forum to Discourse
Migrate from another forum to Discourse
Migrate a Kunena 3 forum to Discourse
Migrate a bbPress WordPress plugin forum to Discourse
Unable to setup discourse
Use the Discourse API ruby gem
Use Screen To Bootstrap A Development Install (Ubuntu)
Set up Discourse for development on Fedora Linux
Need to restart Ember in order to test front-end changes
Error installing `bullseye-backports` when trying to install for Development
Migrate a MyBB forum to Discourse
Local installation internal use only
ImageMagick Install Fails during Dev Installation on Ubuntu 22.04.1
Installing Plugins in Discourse Development Install
Discourse dev install script may need upgrade
I'm having trouble installing a local Discourse instance on Windows 11
Login popup not display
Not able to restore discourse docker backup on Ubuntu discourse installation
Migrate a bbPress WordPress plugin forum to Discourse
Installing Discourse on windows using Docker Desktop
End-to-end system testing for themes and theme components
CSRF problem in development with 'Discourse OpenID Connect' plug-in
Need help integrating code wrote on Edittext to the Discourse
Integration into custom auth system where emails are not unique?
Overriding user_guardian.rb in a plugin (no fork necessary!)
Contributing to Discourse development
Development install fails when running bin/rails db:migrate
Developing Discourse on GitHub Codespaces
Install Discourse on Windows for development
Connecting WP Discourse to a local Discourse Instance running a specific version
Chat not working after dev install
Discourse Ember CLI Proxy Error
Bundling more popular plugins with Discourse core
Dev environment: recommended way to bootstrap the first admin account without email?
Migrate from GetSatisfaction to Discourse
Developing Discourse Plugins - Part 6 - Add acceptance tests
Install Discourse for development using Docker
Install Discourse on macOS for development
Migrate a MyBB forum to Discourse
Discourse Server logs show DB queries when I run the server
ImageMagick Install Fails during Dev Installation on Ubuntu 22.04.1
Docker in VMWare - How to access to Discourse
How can I make my own Discourse plugins?
What is the latest recommended workflow for local development? (Ubuntu 16.04)
What is the latest recommended workflow for local development? (Ubuntu 16.04)
How to customize the Discourse app using docker container?
Uploads location on dev instance?
Update PhantomJS to latest for Ubuntu dev guide?
A check for updates has not been performed lately. Ensure sidekiq is running
How to fix bundler executable conflicts in the `techAPJ/install-rails` script?
Ubuntu development install: Permission denied @ apply2files
Install discourse on localhost
Trouble getting a top level page to Ember
Formal german available?
Any interest in Podman?
Rake aborted message is showing when installing vagrant development
Where is the db connection information discourse?
How to install the bootsnap gem?
State of disqus to discourse importer
Connecting to Droplet
Connecting to Droplet
Install and import Mysql on the development environment
Can't uninstall on Ubuntu 18.04
How to install Discourse on windows
Share your Discourse dev setup
Discourse running very slow on local machine
Can't find the Discourse folder inside virtual box via ssh
Importing MyBB database to Discourse
How to install Discourse on windows
How to create new user with verified email in development mode?
Unable to create Vagrant local installation
Installing problem - bundle install
How to get a docker image of discourse using bash on windows 10?
Attachment filename not set on download
[PAID] Import from Legacy Postgres DB
Does Gemfile need to include svg?
Does Gemfile need to include svg?
Database wont migrate Discourse
I want to build a debug version of discourse
How to reset discourse on dev mode? (w/o docker)
Nodebb to Discourse
RSpec search_spec.rb RateLimiter LimitExceeded problems
Discourse as Your First Rails App
Issue with vagrant version following the dev guide
Which is the better option to self-host?
NULL first_visited_at dates in the topic_users table
Multiple instances. Visiting the second instance signs out the logged in account on the running instance
Can't run my Discourse locally
I want to install a plugin for development, what should I do?
Vbulletin 4 import -
Hello from Gitpod! (installing on google cloud + automated dev setup)
How to Install Discourse on LocalHost in Windows?
Migrating a myBB forum to Discourse using Kubuntu in a VM
Migration from Yahoo! Groups
Does the forum for development start up 24 hours*?
How to allow customs hosts in development mode
Help with setting up discourse An error occurred while installing xorcist (1.1.2), and Bundler cannot continue

Исправил, удалив плагин календаря. :thinking:

3 лайка

Установка проходит очень медленно

Я уже около 45 минут пытаюсь настроить подключение к моей локальной БД, но не могу разобраться:

discourse $bin/rails db:create
Мы не нашли вашу базу данных: postgres. Её настройки находятся в файле конфигурации базы данных по пути config/database.yml

Вот полный трассировочный вывод:

discourse $bin/rails db:create --trace
** Invoke db:create (first_time)
** Invoke db:force_skip_persist (first_time)
** Execute db:force_skip_persist
** Invoke db:load_config (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:load_config
** Execute db:create
Мы не нашли вашу базу данных: postgres. Её настройки находятся в файле конфигурации базы данных по пути config/database.yml.

Чтобы решить эту проблему:

- Вы создали базу данных для этого приложения или удалили её? Возможно, вам нужно создать базу данных.
- Изменилось ли имя базы данных? Проверьте, что в конфигурации database.yml указано правильное имя базы данных.

Чтобы создать базу данных, выполните:

        bin/rails db:create
Не удалось создать базу данных 'discourse_development'. Проверьте вашу конфигурацию.
rails aborted!
ActiveRecord::NoDatabaseError: Мы не нашли вашу базу данных: postgres. Её настройки находятся в файле конфигурации базы данных по пути config/database.yml. (ActiveRecord::NoDatabaseError)

Чтобы решить эту проблему:

- Вы создали базу данных для этого приложения или удалили её? Возможно, вам нужно создать базу данных.
- Изменилось ли имя базы данных? Проверьте, что в конфигурации database.yml указано правильное имя базы данных.

Чтобы создать базу данных, выполните:

        bin/rails db:create
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/postgresql_adapter.rb:81:in `rescue in new_client'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/postgresql_adapter.rb:77:in `new_client'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/postgresql_adapter.rb:37:in `postgresql_connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:656:in `public_send'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:656:in `new_connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:700:in `checkout_new_connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:679:in `try_to_checkout_new_connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:640:in `acquire_connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:341:in `checkout'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:181:in `connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_handler.rb:211:in `retrieve_connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_handling.rb:313:in `retrieve_connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_handling.rb:280:in `connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/postgresql_database_tasks.rb:12:in `connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/postgresql_database_tasks.rb:26:in `create'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:122:in `create'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:184:in `block in create_current'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/discourse_dev_assets-0.0.4/lib/discourse_dev_assets.rb:27:in `block in each_current_configuration'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:557:in `block (2 levels) in each_current_configuration'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:554:in `each'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:554:in `block in each_current_configuration'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:553:in `each'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:553:in `each_current_configuration'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/discourse_dev_assets-0.0.4/lib/discourse_dev_assets.rb:22:in `each_current_configuration'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:184:in `create_current'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/railties/databases.rake:45:in `block (2 levels) in <main>'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/task.rb:281:in `block in execute'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/task.rb:281:in `each'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/task.rb:281:in `execute'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/task.rb:199:in `synchronize'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/task.rb:188:in `invoke'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:188:in `invoke_task'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:138:in `block (2 levels) in top_level'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:138:in `each'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:138:in `block in top_level'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:147:in `run_with_threads'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:132:in `top_level'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.8.1/lib/rails/commands/rake/rake_command.rb:24:in `block (2 levels) in perform'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:214:in `standard_exception_handling'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.8.1/lib/rails/commands/rake/rake_command.rb:24:in `block in perform'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/rake_module.rb:59:in `with_application'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.8.1/lib/rails/commands/rake/rake_command.rb:18:in `perform'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.8.1/lib/rails/command.rb:51:in `invoke'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.8.1/lib/rails/commands.rb:18:in `<main>'
<internal:/home/dylan/.rbenv/versions/3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/home/dylan/.rbenv/versions/3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
bin/rails:18:in `<main>'

Caused by:
PG::ConnectionBad: подключение к серверу через сокет "/var/run/postgresql/.s.PGSQL.5432" не удалось: fe_sendauth: пароль не предоставлен (PG::ConnectionBad)
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pg-1.5.4/lib/pg/connection.rb:696:in `async_connect_or_reset'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pg-1.5.4/lib/pg/connection.rb:824:in `connect_to_hosts'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pg-1.5.4/lib/pg/connection.rb:759:in `new'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/pg-1.5.4/lib/pg.rb:63:in `connect'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/postgresql_adapter.rb:78:in `new_client'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/postgresql_adapter.rb:37:in `postgresql_connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:656:in `public_send'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:656:in `new_connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:700:in `checkout_new_connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:679:in `try_to_checkout_new_connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:640:in `acquire_connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:341:in `checkout'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:181:in `connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/abstract/connection_handler.rb:211:in `retrieve_connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_handling.rb:313:in `retrieve_connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_handling.rb:280:in `connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/postgresql_database_tasks.rb:12:in `connection'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/postgresql_database_tasks.rb:26:in `create'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:122:in `create'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:184:in `block in create_current'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/discourse_dev_assets-0.0.4/lib/discourse_dev_assets.rb:27:in `block in each_current_configuration'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:557:in `block (2 levels) in each_current_configuration'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:554:in `each'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:554:in `block in each_current_configuration'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:553:in `each'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:553:in `each_current_configuration'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/discourse_dev_assets-0.0.4/lib/discourse_dev_assets.rb:22:in `each_current_configuration'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/tasks/database_tasks.rb:184:in `create_current'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/railties/databases.rake:45:in `block (2 levels) in <main>'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/task.rb:281:in `block in execute'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/task.rb:281:in `each'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/task.rb:281:in `execute'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/task.rb:199:in `synchronize'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/task.rb:188:in `invoke'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:188:in `invoke_task'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:138:in `block (2 levels) in top_level'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:138:in `each'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:138:in `block in top_level'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:147:in `run_with_threads'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:132:in `top_level'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.8.1/lib/rails/commands/rake/rake_command.rb:24:in `block (2 levels) in perform'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:214:in `standard_exception_handling'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.8.1/lib/rails/commands/rake/rake_command.rb:24:in `block in perform'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/rake_module.rb:59:in `with_application'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.8.1/lib/rails/commands/rake/rake_command.rb:18:in `perform'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.8.1/lib/rails/command.rb:51:in `invoke'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/railties-7.0.8.1/lib/rails/commands.rb:18:in `<main>'
<internal:/home/dylan/.rbenv/versions/3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/home/dylan/.rbenv/versions/3.2.1/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/home/dylan/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
bin/rails:18:in `<main>'
Tasks: TOP => db:create

Здравствуйте. Попробовал установить на Ubuntu Server 24, но не удалось установить ImageMagick:

консольный лог
install-imagemagick                                         100%[========================================================================================================================================>]   2.57K  --.-KB/s    in 0s


2024-06-23 14:08:00 (13.4 MB/s) - ‘install-imagemagick’ saved [2631/2631]

Reading package lists...
Building dependency tree...
Reading state information...
Package 'imagemagick' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package libwebp6
E: Unable to locate package libltdl7-dev

Похоже, что в Ubuntu нужно устанавливать libwebp7, а не libwebp6, но в скрипте есть проверка версии libwebp только для Ubuntu 22:

# Ubuntu 22.04/22.10  doesn't have libwebp6
LIBWEBP=$(cat /etc/issue | grep -qi 'Ubuntu 22' && echo 'libwebp7' || echo 'libwebp6')

Я думаю, этот код нужно изменить, чтобы устанавливать libwebp7 в любом случае…

1 лайк

У меня такая же проблема. Есть какие-нибудь предложения?

Я скачал основной скрипт:
https://raw.githubusercontent.com/discourse/install-rails/main/linux

и скачал install-imagemagick

В скрипте install-imagemagick я изменил строку 12:
было:
LIBWEBP=$(cat /etc/issue | grep -qi 'Ubuntu 22' && echo 'libwebp7' || echo 'libwebp6')
стало:
LIBWEBP=$(cat /etc/issue | grep -qi 'Ubuntu 22' && echo 'libwebp7' || echo 'libwebp7')

Также я изменил строку 105 в основном скрипте, где вызывается скрипт install-imagemagick. Таким образом, в этой строке будет вызываться мой отредактированный файл установки install-imagemagick, а не оригинальный.

1 лайк

Теперь у меня новая ошибка:

Значение 'bullseye-backports' недопустимо для APT::Default-Release, так как такой релиз недоступен в источниках
ошибка

Я сдаюсь…
Стоит отметить, что инструкции из первого поста сейчас не актуальны.
Попробую с docker

Некоторое время назад я отправил PR с поддержкой Ubuntu 20 и Debian 12. Похоже, мне придётся вернуться к этой работе.

Для Ubuntu 24 вам нужно будет изменить регулярные выражения на что-то вроде:
grep -qiE 'Ubuntu 2[2-9]'

Вы можете убрать эту проверку, как я сделал в PR.


В вашем случае можно использовать эту обновлённую версию:

#!/bin/bash
set -e

# проверка версии: https://github.com/ImageMagick/ImageMagick/releases
IMAGE_MAGICK_VERSION="7.1.0-62"
IMAGE_MAGICK_HASH="d282117bc6d0e91ad1ad685d096623b96ed8e229f911c891d83277b350ef884a"

# Мы используем Debian, но GitHub CI застрял на Ubuntu Bionic, поэтому это должно работать и там, и там
LIBJPEGTURBO=$(cat /etc/issue | grep -qi Debian && echo 'libjpeg62-turbo libjpeg62-turbo-dev' || echo 'libjpeg-turbo8 libjpeg-turbo8-dev')

# В Ubuntu 22/23/24 и Debian 12 нет libwebp6
LIBWEBP=$(cat /etc/issue | grep -qiE 'Ubuntu 22|Debian.*12' && echo 'libwebp7' || echo 'libwebp6')

PREFIX=/usr/local
WDIR=/tmp/imagemagick

# Установка зависимостей для сборки
apt -y -q remove imagemagick
apt -y -q install git make gcc pkg-config autoconf curl g++ yasm cmake \
    libde265-0 libde265-dev ${LIBJPEGTURBO} x265 libx265-dev libtool \
    libpng16-16 libpng-dev ${LIBJPEGTURBO} ${LIBWEBP} libwebp-dev libgomp1 \
    libwebpmux3 libwebpdemux2 ghostscript libxml2-dev libxml2-utils librsvg2-dev \
    libltdl7-dev libbz2-dev gsfonts libtiff-dev libfreetype6-dev libjpeg-dev

apt -y install libheif1 libaom-dev libheif-dev

mkdir -p $WDIR
cd $WDIR

# Сборка и установка ImageMagick
wget -q -O $WDIR/ImageMagick.tar.gz "https://github.com/ImageMagick/ImageMagick/archive/$IMAGE_MAGICK_VERSION.tar.gz"
sha256sum $WDIR/ImageMagick.tar.gz
echo "$IMAGE_MAGICK_HASH $WDIR/ImageMagick.tar.gz" | sha256sum -c
IMDIR=$WDIR/$(tar tzf $WDIR/ImageMagick.tar.gz --wildcards "ImageMagick-*/configure" |cut -d/ -f1)
tar zxf $WDIR/ImageMagick.tar.gz -C $WDIR
cd $IMDIR
PKG_CONF_LIBDIR=$PREFIX/lib LDFLAGS=-L$PREFIX/lib CFLAGS=-I$PREFIX/include ./configure \
          --prefix=$PREFIX \
          --enable-static \
          --enable-bounds-checking \
          --enable-hdri \
          --enable-hugepages \
          --with-threads \
          --with-modules \
          --with-quantum-depth=16 \
          --without-magick-plus-plus \
          --with-bzlib \
          --with-zlib \
          --without-autotrace \
          --with-freetype \
          --with-jpeg \
          --without-lcms \
          --with-lzma \
          --with-png \
          --with-tiff \
          --with-heic \
          --with-rsvg \
          --with-webp
make all && make install

cd $HOME
rm -rf $WDIR
ldconfig /usr/local/lib

# Проверка установки ImageMagick
test $(convert -version | grep -o -e png -e tiff -e jpeg -e freetype -e heic -e webp | wc -l) -eq 6
3 лайка

Да. Работает, спасибо! У меня есть несколько вопросов. Как настроить Discourse для использования в локальной сети для отладки? Мой Ubuntu — это Hyper-V Ubuntu Server, поэтому я использую не «localhost» для доступа к Discourse, а локальный IP-адрес (в моем случае 192.168.2.20) из браузера другого ПК. Все изображения с пометкой «self hosted» недоступны, и возникает ошибка 404 (поскольку их URL выглядит так: //localhost:4200/uploads/default/original/2X/8/81ce02e47fa4b791e9cb4b880c6c4dab9e0b6d9d.png), и, конечно же, это не работает в локальной сети.

1 лайк

2 сообщения были перенесены в новую тему: Установка в продакшн без Docker

TL;DR: Пожалуйста, объедините #750. Устаревшие системы всегда создают проблемы.

Если говорить проще, в инструкциях прямо указано:

Если кто-то ещё раз ошибочно решит, что это просто дружеская рекомендация, пожалуйста, передумайте. Любая попытка запустить систему с 1 ГиБ ОЗУ и 4 ГиБ подкачки приведёт не к снижению производительности, а к:

Ошибка компиляции CSS-актива

RuntimeError: Discourse не поддерживает компиляцию файлов scss/sass через Sprockets

…/discourse/config/application.rb:190:in `call’

Согласно этой теме, это симптом недостаточного выделения оперативной памяти.

В конечном итоге вам также может повезти и вы получите трассировку стека JavaScript, начинающуюся с:

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

Поэтому следуйте инструкциям! Я отправляюсь переделывать это упражнение на свеже созданном VPS. Вместо того чтобы пытаться возиться с настройкой чего-то столь старого и устаревшего, я решил переиспользовать старый отключённый сервер на Bullseye, который у меня всё ещё работал.

Возможно, второй рецензент захочет взглянуть на этот PR, добавляющий поддержку Bookworm, так что, надеюсь, я буду последним, кто пострадает от этого?

1 лайк

Я предпринял вторую попытку на Ubuntu 22.04.4 LTS (Jammy Jellyfish), и теперь у меня, кажется, рабочая среда разработки. Правда, на это ушло несколько попыток, так как в инструкциях отсутствует одна очень важная команда.

Критически важный шаг перед запуском ./linux — создать каталог кэша gem:

mkdir --parent /home/discourse/.cache/gem

Если пропустить этот шаг, каталог будет создан с правами root:root, что приведёт к сбою установки при запуске с только что созданной учётной записью пользователя.

Полная настройка

Ссылка на Gist: Discourse SetUp · GitHub

  1. Вставьте эту команду
    bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/main/linux)

  2. Вы получите эту ошибку
    Установка ImageMagick …

Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
libtool уже является самой последней версией (2.4.7-7build1).
Следующие пакеты были автоматически установлены и больше не требуются:
  graphicsmagick libgraphicsmagick-q16-3t64 libhwy1t64 libjpeg9 libjxl0.7
Используйте 'sudo apt autoremove', чтобы удалить их.
Обновлено 0, установлено новых 0, удалено 0 и не обновлено 0.
--2024-08-14 03:41:23--  https://raw.githubusercontent.com/discourse/discourse_docker/main/image/base/install-imagemagick
Разрешение raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.111.133, ...
Подключение к raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... установлено.
HTTP-запрос отправлен, ожидание ответа... 200 OK
Длина: 2624 (2.6K) [text/plain]
Сохранение в: «install-imagemagick.3»

install-imagemagick.3   100%[==============================>]   2.56K  --.-КБ/с    в 0с

**2024-08-14 03:41:23 (32.6 МБ/с) - «install-imagemagick.3» сохранено [2624/2624]**

**chmod: изменение прав доступа к 'install-imagemagick': Операция не разрешена**
**не удалось**
  1. sudo apt-get install imagemagick

  2. magick --version
    Вы получите эту ошибку
    test@tworks:~$ magick --version
    Команда ‘magick’ не найдена, возможно, вы имели в виду:
    команду ‘magics’ из пакета deb magics++ (4.14.2-2)
    команду ‘magic’ из пакета deb magic (8.3.105+ds.1-1.1)
    Попробуйте: sudo apt install <имя_пакета>

  3. cd

  4. sudo apt install build-essential make git

  5. git clone GitHub - ImageMagick/ImageMagick: ImageMagick is a free, open-source software suite for creating, editing, converting, and displaying images. It supports 200+ formats and offers powerful command-line tools and APIs for automation, scripting, and integration across platforms. · GitHub

  6. cd ImageMagick

  7. ./configure

  8. make

  9. sudo make install

  10. sudo ldconfig /usr/local/lib

  11. convert -version

**Вывод**
test@tworks:~/ImageMagick$ convert -version
Версия: ImageMagick 6.9.12-98 Q16 x86_64 18038 https://legacy.imagemagick.org
Авторские права: (C) 1999 ImageMagick Studio LLC
Лицензия: https://imagemagick.org/script/license.php
Функции: Cipher DPC Modules OpenMP(4.5)
Делегаты (встроенные): bzlib djvu fftw fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png raw tiff webp wmf x xml zlib
  1. sudo find /home/$USER -name magick 2>/dev/null
    Вывод
    test@tworks:~/ImageMagick$ sudo find /home/$USER -name magick 2>/dev/null
    /home/test/ImageMagick/utilities/magick
    /home/test/ImageMagick/utilities/.libs/magick

  2. Вставьте эту команду (замените test на имя вашего пользователя)
    echo ‘export PATH=“/home/test/ImageMagick/utilities:$PATH”’ >> ~/.bashrc
    source ~/.bashrc

  3. magick --version

Вывод
Версия: ImageMagick 7.1.1-37 (Beta) Q16-HDRI x86_64 852a4e91b:20240727 https://imagemagick.org
Авторские права: (C) 1999 ImageMagick Studio LLC
Лицензия: ImageMagick | License
Функции: Cipher DPC HDRI OpenMP(4.5)
Делегаты (встроенные): bzlib fontconfig freetype heic jbig jng jpeg lzma png tiff webp x xml zlib zstd
Компилятор: gcc (13.2)

  1. cd
  2. Вставьте это
    bash <(wget -qO- https://files.suhail.app/ok.sh)

если этот URL не найден

то создайте файл script.sh

вставьте это

#!/usr/bin/env bash

# Установка Rails

trap 'ret=$?; test $ret -ne 0 && printf "failed\n\n" >&2; exit $ret' EXIT

# Ubuntu 22+ будет запрашивать перезапуск служб без этих настроек
export NEEDRESTART_MODE=a
export DEBIAN_FRONTEND=noninteractive

set -e
log_info() {
  printf "\n\e[0;35m $1\e[0m\n\n"
}

if [ ! -f "$HOME/.bashrc" ]; then
  touch $HOME/.bashrc
fi



log_info "Установка утилит для изображений ..."
  sudo -E apt-get -y install advancecomp gifsicle jpegoptim libjpeg-progs optipng pngcrush pngquant
  sudo -E apt-get -y install jhead

  # Установка oxipng
  cd /tmp && \
    wget https://github.com/shssoichiro/oxipng/releases/download/v8.0.0/oxipng-8.0.0-x86_64-unknown-linux-musl.tar.gz && \
    tar -xzvf oxipng-8.0.0-x86_64-unknown-linux-musl.tar.gz && \
    sudo cp oxipng-8.0.0-x86_64-unknown-linux-musl/oxipng /usr/local/bin
  cd /tmp && \
    rm oxipng-8.0.0-x86_64-unknown-linux-musl.tar.gz && \
    rm -Rf oxipng-8.0.0-x86_64-unknown-linux-musl

if [[ ! -d "$HOME/.rbenv" ]]; then
  log_info "Установка rbenv ..."
    git clone https://github.com/rbenv/rbenv.git ~/.rbenv

    if ! grep -qs "rbenv init" ~/.bashrc; then
      printf 'export PATH="$HOME/.rbenv/bin:$PATH"\n' >> ~/.bashrc
      printf 'eval "$(rbenv init - --no-rehash)"\n' >> ~/.bashrc
    fi

    export PATH="$HOME/.rbenv/bin:$PATH"
    eval "$(rbenv init -)"
fi

if [[ ! -d "$HOME/.rbenv/plugins/ruby-build" ]]; then
  log_info "Установка ruby-build для установки Rubies ..."
    git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
fi

ruby_version="3.2.1"

log_info "Установка Ruby $ruby_version ..."
  rbenv install "$ruby_version"

log_info "Установка $ruby_version в качестве глобального Ruby по умолчанию ..."
  rbenv global $ruby_version
  rbenv rehash

log_info "Обновление до последней версии Rubygems ..."
  gem update --system

log_info "Установка Rails ..."
  gem install rails

log_info "Установка Bundler ..."
  gem install bundler

log_info "Установка MailHog ..."
  sudo wget -qO /usr/bin/mailhog https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_linux_amd64
  sudo chmod +x /usr/bin/mailhog

log_info "Установка Node.js 18 ..."
  curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
  sudo -E apt-get -y install nodejs
  sudo npm install -g svgo
  sudo npm install -g yarn
1~#!/usr/bin/env bash

# Установка Rails

trap 'ret=$?; test $ret -ne 0 && printf "failed\n\n" >&2; exit $ret' EXIT

# Ubuntu 22+ будет запрашивать перезапуск служб без этих настроек
export NEEDRESTART_MODE=a
export DEBIAN_FRONTEND=noninteractive

set -e
log_info() {
  printf "\n\e[0;35m $1\e[0m\n\n"
}

if [ ! -f "$HOME/.bashrc" ]; then
  touch $HOME/.bashrc
fi

log_info "Обновление пакетов ..."
  sudo -E apt-get update

log_info "Установка Git ..."
  sudo -E apt-get -y install git

log_info "Установка базовых инструментов сборки ..."
  sudo -E apt-get -y install build-essential

log_info "Установка библиотек для общих зависимостей gem ..."
  sudo -E apt-get -y install libxslt1-dev libcurl4-openssl-dev libksba8 libksba-dev libreadline-dev libssl-dev zlib1g-dev libsnappy-dev libyaml-dev

log_info "Установка sqlite3 ..."
  sudo -E apt-get -y install libsqlite3-dev sqlite3

log_info "Установка Postgres ..."
  sudo -E apt-get -y install postgresql postgresql-server-dev-all postgresql-contrib libpq-dev
  sudo -E service postgresql status || sudo -E service postgresql start
  cd /tmp && sudo -u postgres createuser -s "$USER"

log_info "Установка curl ..."
  sudo -E apt-get -y install curl

log_info "Установка Redis ..."
  cd /tmp && \
    wget https://download.redis.io/redis-stable.tar.gz && \
    tar -xzvf redis-stable.tar.gz && \
    cd redis-stable && \
    make && \
    sudo -E make install
  cd /tmp && \
    rm redis-stable.tar.gz && \
    rm -Rf redis-stable

  sudo adduser --system --group --no-create-home redis
  FILE="/etc/systemd/system/redis-server.service"
  if [ ! -f "$FILE" ]; then
    sudo bash -c "cat > $FILE" <<EOF
[Unit]
Описание=redis хранилище данных в оперативной памяти
После=network.target

[Service]
Пользователь=redis
Группа=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Перезапуск=всегда

[Install]
WantedBy=multi-user.target
EOF
  fi

  sudo mkdir -p /var/log/redis /var/lib/redis /etc/redis
  sudo chown redis:redis /var/log/redis /var/lib/redis /etc/redis
  sudo chmod 755 /var/log/redis /var/lib/redis /etc/redis

  FILE="/etc/redis/redis.conf"

  if [ ! -f "$FILE" ]; then
    sudo bash -c "cat > $FILE" <<EOF
bind 127.0.0.1
protected-mode no
port 6379
dir /var/lib/redis
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000
logfile /var/log/redis/redis-server.log
loglevel debug
EOF
    sudo chown redis:redis "$FILE"
    sudo chmod 644 "$FILE"
  fi

  sudo systemctl daemon-reload
  sudo systemctl enable redis-server
  sudo systemctl start redis-server
  sudo systemctl --no-pager status redis-server
  sudo redis-cli ping

log_info "Установка ImageMagick ..."
  sudo -E apt-get -y install libtool

  wget https://raw.githubusercontent.com/discourse/discourse_docker/main/image/base/install-imagemagick
  sed -i '12s/libwebp6/libwebp7/' install-imagemagick
  chmod +x install-imagemagick
  sudo -E ./install-imagemagick

log_info "Установка утилит для изображений ..."
  sudo -E apt-get -y install advancecomp gifsicle jpegoptim libjpeg-progs optipng pngcrush pngquant
  sudo -E apt-get -y install jhead

  # Установка oxipng
  cd /tmp && \
    wget https://github.com/shssoichiro/oxipng/releases/download/v8.0.0/oxipng-8.0.0-x86_64-unknown-linux-musl.tar.gz && \
    tar -xzvf oxipng-8.0.0-x86_64-unknown-linux-musl.tar.gz && \
    sudo cp oxipng-8.0.0-x86_64-unknown-linux-musl/oxipng /usr/local/bin
  cd /tmp && \
    rm oxipng-8.0.0-x86_64-unknown-linux-musl.tar.gz && \
    rm -Rf oxipng-8.0.0-x86_64-unknown-linux-musl

if [[ ! -d "$HOME/.rbenv" ]]; then
  log_info "Установка rbenv ..."
    git clone https://github.com/rbenv/rbenv.git ~/.rbenv

    if ! grep -qs "rbenv init" ~/.bashrc; then
      printf 'export PATH="$HOME/.rbenv/bin:$PATH"\n' >> ~/.bashrc
      printf 'eval "$(rbenv init - --no-rehash)"\n' >> ~/.bashrc
    fi

    export PATH="$HOME/.rbenv/bin:$PATH"
    eval "$(rbenv init -)"
fi

if [[ ! -d "$HOME/.rbenv/plugins/ruby-build" ]]; then
  log_info "Установка ruby-build для установки Rubies ..."
    git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
fi

ruby_version="3.2.1"

log_info "Установка Ruby $ruby_version ..."
  rbenv install "$ruby_version"

log_info "Установка $ruby_version в качестве глобального Ruby по умолчанию ..."
  rbenv global $ruby_version
  rbenv rehash

log_info "Обновление до последней версии Rubygems ..."
  gem update --system

log_info "Установка Rails ..."
  gem install rails

log_info "Установка Bundler ..."
  gem install bundler

log_info "Установка MailHog ..."
  sudo wget -qO /usr/bin/mailhog https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_linux_amd64
  sudo chmod +x /usr/bin/mailhog

log_info "Установка Node.js 18 ..."
  curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
  sudo -E apt-get -y install nodejs
  sudo npm install -g svgo
  sudo npm install -g yarn

  1. Это установит rbenv, ruby-build, Ruby 3.2.1
    Установка Ruby 3.2.1 займет около 5 минут… пожалуйста, подождите…

Вывод

 Установка MailHog ...


^[[B^[[B
 Установка Node.js 18 ...

2024-08-14 04:11:55 - Установка предварительных требований
Hit:1 https://repos.insights.digitalocean.com/apt/do-agent main InRelease
Hit:2 https://repos-droplet.digitalocean.com/apt/droplet-agent main InRelease
Hit:3 https://deb.nodesource.com/node_18.x nodistro InRelease
Ign:4 https://pkg.jenkins.io/debian-stable binary/ InRelease
Hit:5 https://pkg.jenkins.io/debian-stable binary/ Release
Hit:6 http://mirrors.digitalocean.com/ubuntu noble InRelease
Hit:8 http://mirrors.digitalocean.com/ubuntu noble-updates InRelease
Get:9 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Hit:10 https://ppa.launchpadcontent.net/ubuntu-toolchain-r/test/ubuntu noble InRelease
Hit:11 http://mirrors.digitalocean.com/ubuntu noble-backports InRelease
Get:12 http://security.ubuntu.com/ubuntu noble-security/main amd64 c-n-f Metadata [3696 B]
Загружено 130 kB за 2с (67.2 kB/s)
Чтение списков пакетов... Готово
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
apt-transport-https уже является самой последней версией (2.7.14build2).
ca-certificates уже является самой последней версией (20240203).
curl уже является самой последней версией (8.5.0-2ubuntu10.2).
gnupg уже является самой последней версией (2.4.4-2ubuntu17).
Следующие пакеты были автоматически установлены и больше не требуются:
  graphicsmagick libgraphicsmagick-q16-3t64 libhwy1t64 libjpeg9 libjxl0.7
Используйте 'sudo apt autoremove', чтобы удалить их.
Обновлено 0, установлено новых 0, удалено 0 и не обновлено 0.
Hit:1 https://deb.nodesource.com/node_18.x nodistro InRelease
Hit:2 https://repos-droplet.digitalocean.com/apt/droplet-agent main InRelease
Ign:3 https://pkg.jenkins.io/debian-stable binary/ InRelease
Hit:4 https://repos.insights.digitalocean.com/apt/do-agent main InRelease
Hit:5 https://pkg.jenkins.io/debian-stable binary/ Release
Hit:7 http://mirrors.digitalocean.com/ubuntu noble InRelease
Hit:8 http://security.ubuntu.com/ubuntu noble-security InRelease
Hit:9 http://mirrors.digitalocean.com/ubuntu noble-updates InRelease
Hit:10 https://ppa.launchpadcontent.net/ubuntu-toolchain-r/test/ubuntu noble InRelease
Hit:11 http://mirrors.digitalocean.com/ubuntu noble-backports InRelease
Чтение списков пакетов... Готово
2024-08-14 04:12:02 - Репозиторий успешно настроен.
2024-08-14 04:12:02 - Для установки Node.js выполните: apt-get install nodejs -y
2024-08-14 04:12:02 - Вы можете использовать N|solid Runtime как альтернативу node.js
2024-08-14 04:12:02 - Для установки N|solid Runtime выполните: apt-get install nsolid -y

Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
nodejs уже является самой последней версией (20.16.0-1nodesource1).
Следующие пакеты были автоматически установлены и больше не требуются:
  graphicsmagick libgraphicsmagick-q16-3t64 libhwy1t64 libjpeg9 libjxl0.7
Используйте 'sudo apt autoremove', чтобы удалить их.
Обновлено 0, установлено новых 0, удалено 0 и не обновлено 0.

изменено 19 пакетов за 3с

9 пакетов ищут финансирование
  выполните `npm fund` для деталей

изменен 1 пакет за 672мс
/dev/fd/63: строка 80: 1~#!/usr/bin/env: Нет такого файла или каталога
не удалось

  1. cd && git clone GitHub - discourse/discourse: A platform for community discussion. Free, open, simple. · GitHub ~/discourse
  2. cd ~/discourse
  3. source ~/.bashrc
  4. bundle install || bundle install
    Вывод
    Сообщение после установки от rubyzip:
    RubyZip 3.0 уже близко!

Публичный API некоторых классов Rubyzip был модернизирован для использования именованных
параметров для необязательных аргументов. Пожалуйста, проверьте использование следующих классов:

  • Zip::File
  • Zip::Entry
  • Zip::InputStream
  • Zip::OutputStream

Пожалуйста, убедитесь, что ваши Gemfiles и .gemspecs достаточно ограничительны,
чтобы избежать неожиданных сбоев при выпуске версии 3.0 (например, ~> 2.3.0).
Подробнее см. на GitHub - rubyzip/rubyzip: Official Rubyzip repository · GitHub. В файле Changelog также
перечислены другие улучшения и исправления ошибок, реализованные с версии 2.3.0.

  1. yarn install
    Вывод
    test@tworks:~/discourse$ yarn install
    yarn install v1.22.22
    [1/5] Проверка package.json…
    [2/5] Разрешение пакетов…
    предупреждение: поле разрешения “unset-value@2.0.1” несовместимо с запрошенной версией “unset-value@^1.0.0”
    успешно уже обновлено.
    $ ./app/assets/javascripts/run-patch-package && rm -rf app/assets/javascripts/node_modules
    patch-package 8.0.0
    Применение патчей…
    babel-plugin-debug-macros@0.3.4 :check_mark:
    content-tag@2.0.1 :check_mark:
    decorator-transforms@2.0.0 :check_mark:
    ember-this-fallback@0.4.0 (1 deprecation-name) :check_mark:
    ember-this-fallback@0.4.0 (2 themes) :check_mark:
    ember-this-fallback@0.4.0 (3 exclude-strict-mode) :check_mark:
    virtual-dom@2.1.1 :check_mark:
    Готово за 1.26с.

  2. bin/rails db:create && bin/rails db:migrate && bin/rails db:migrate

  3. bin/ember-cli -u

Если возникнет ошибка

например
EACCES: permission denied, mkdir ‘/tmp/suhail/if-you-need-to-delete-this-open-an-issue-async-disk-cache/d828492962979ed87b104d6da2d66d89d2834137’
или
permission denied $TMPDIR/embroider/webpack-babel-loader/36ae93087b7f9608f2e88c4ce085f854eb311bb409533a5040262f329b132a02.json.gz

Тогда предоставьте полный доступ к этому пути

sudo chmod -R 777 /tmp/suhail/if-you-need-to-delete-this-open-an-issue-async-disk-cache/

sudo chmod -R 777 /tmp/embroider/webpack-babel-loader

Ошибка прокси Discourse Ember CLI
FetchError: запрос к http://127.0.0.1:3000/ не удался, причина: connect ECONNREFUSED 127.0.0.1:3000
at ClientRequest. (file:///home/test/discourse/app/assets/javascripts/custom-proxy/node_modules/node-fetch/src/index.js:108:11)
at ClientRequest.emit (node:events:519:28)
at Socket.socketErrorListener (node:_http_client:500:9)
at Socket.emit (node:events:519:28)
at emitErrorNT (node:internal/streams/destroy:169:8)
at emitErrorCloseNT (node:internal/streams/destroy:128:3)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)

"use strict";

module.exports = function (environment) {
  const ENV = {
    modulePrefix: "discourse",
    environment,
    rootURL: process.env.DISCOURSE_RELATIVE_URL_ROOT || "/",
    locationType: "history",
    historySupportMiddleware: false,
    EmberENV: {
      FEATURES: {
        // Здесь вы можете включить экспериментальные функции в сборке ember canary
        // например, EMBER_NATIVE_DECORATOR_SUPPORT: true
      },
      EXTEND_PROTOTYPES: {
        // Предотвратить переопределение Date.parse в Ember Data.
        Date: false,
        String: false,
      },
    },
    exportApplicationGlobal: true,

    APP: {
      // Здесь вы можете передать флаги/опции экземпляру вашего приложения
      // при его создании
    },
  };

  if (process.env.EMBER_RAISE_ON_DEPRECATION === "1") {
    ENV.EmberENV.RAISE_ON_DEPRECATION = true;
  } else if (process.env.EMBER_RAISE_ON_DEPRECATION === "0") {
    ENV.EmberENV.RAISE_ON_DEPRECATION = false;
  } else {
    // По умолчанию (обычно false; true в основных запусках qunit)
  }

  if (environment === "development") {
    // ENV.APP.LOG_RESOLVER = true;
    // ENV.APP.LOG_ACTIVE_GENERATION = true;
    // ENV.APP.LOG_TRANSITIONS = true;
    // ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
    // ENV.APP.LOG_VIEW_LOOKUPS = true;
  }

  if (environment === "test") {
    // Testem предпочитает это...
    ENV.locationType = "none";

    // сделать вывод консоли тестов тише
    ENV.APP.LOG_ACTIVE_GENERATION = false;
    ENV.APP.LOG_VIEW_LOOKUPS = false;

    ENV.APP.rootElement = "#ember-testing";
    ENV.APP.autoboot = false;
  }

  if (environment === "production") {
    // здесь вы можете включить функцию, специфичную для производства
  }

  return ENV;
};


  1. если локально : то перейдите по адресу

http://localhost:4200

если облако, то перейдите по адресу

http://cloudPublicIp:4200
пример : http://139.59.13.239:4200/

1 лайк

Привет! Вы ищете помощь или публикуете руководство?

1 лайк

Да, помогите мне, пожалуйста. Я почти всё настроил, но… как редактировать, и настройка почты вызывает путаницу.

Кто-нибудь пробовал это на Arch? Я не могу установить через AUR..

Продвинулся дальше, чтобы получить пощёчину от Rails, похоже, я просто потратил время впустую..

Да. Вам нужно пройти через скрипт по адресу install-rails/linux at main · discourse/install-rails · GitHub и установить пакеты вручную. Все они доступны либо через pacman, либо через AUR. Мне потребовалось немного времени на метод проб и ошибок, чтобы разобраться с некоторыми пакетами. Я где-то записал процесс, если вы застряли на этапе определения необходимых пакетов для установки.

Редактирование: сложная часть была здесь:

Эквивалент для Arch:

sudo pacman -S base-devel

sudo pacman -S libxslt curl libksba readline openssl zlib snappy libyaml

Также возникло несколько других проблем, если вы застряли. Если у вас есть доступ к ChatGPT, он более или менее провел меня через весь процесс.

3 лайка

Я всё ещё не могу запустить PostgreSQL. Я не могу инициализировать базу данных, а при попытке войти система говорит мне «иди лесом» из-за… базы данных, которой не существует.