fix: LD_PRELOAD with a proper value

This commit is contained in:
Tagadda 2025-08-29 21:49:53 +02:00
parent 3d53d933d5
commit e7f213118d
7 changed files with 31 additions and 49 deletions

View file

@ -1,7 +1,7 @@
# This is a system cron file, see crontab(5)
# m h dom mon dow user command
@daily __APP__ cd __INSTALL_DIR__/live && PATH=__PATH_WITH_RUBY__ __LD_PRELOAD__ RAILS_ENV=production bin/tootctl media remove
@monthly __APP__ cd __INSTALL_DIR__/live && PATH=__PATH_WITH_RUBY__ __LD_PRELOAD__ RAILS_ENV=production bin/tootctl media remove-orphans
@monthly __APP__ cd __INSTALL_DIR__/live && PATH=__PATH_WITH_RUBY__ __LD_PRELOAD__ RAILS_ENV=production bin/tootctl accounts cull
@monthly __APP__ cd __INSTALL_DIR__/live && PATH=__PATH_WITH_RUBY__ __LD_PRELOAD__ RAILS_ENV=production bin/tootctl statuses remove
@monthly __APP__ cd __INSTALL_DIR__/live && PATH=__PATH_WITH_RUBY__ __LD_PRELOAD__ RAILS_ENV=production bin/tootctl preview_cards remove
@daily __APP__ cd __INSTALL_DIR__/live && PATH=__PATH_WITH_RUBY__ LD_PRELOAD=libjemalloc.so RAILS_ENV=production bin/tootctl media remove
@monthly __APP__ cd __INSTALL_DIR__/live && PATH=__PATH_WITH_RUBY__ LD_PRELOAD=libjemalloc.so RAILS_ENV=production bin/tootctl media remove-orphans
@monthly __APP__ cd __INSTALL_DIR__/live && PATH=__PATH_WITH_RUBY__ LD_PRELOAD=libjemalloc.so RAILS_ENV=production bin/tootctl accounts cull
@monthly __APP__ cd __INSTALL_DIR__/live && PATH=__PATH_WITH_RUBY__ LD_PRELOAD=libjemalloc.so RAILS_ENV=production bin/tootctl statuses remove
@monthly __APP__ cd __INSTALL_DIR__/live && PATH=__PATH_WITH_RUBY__ LD_PRELOAD=libjemalloc.so RAILS_ENV=production bin/tootctl preview_cards remove

View file

@ -9,7 +9,7 @@ WorkingDirectory=__INSTALL_DIR__/live
Environment="RAILS_ENV=production"
Environment="DB_POOL=25"
Environment="MALLOC_ARENA_MAX=2"
Environment="__LD_PRELOAD__"
Environment="LD_PRELOAD=libjemalloc.so"
Environment="PATH=__PATH_WITH_RUBY__"
ExecStart=__INSTALL_DIR__/live/bin/bundle exec sidekiq -c 25
TimeoutSec=15

View file

@ -8,7 +8,7 @@ User=__APP__
WorkingDirectory=__INSTALL_DIR__/live
Environment="RAILS_ENV=production"
Environment="PORT=__PORT_WEB__"
Environment="__LD_PRELOAD__"
Environment="LD_PRELOAD=libjemalloc.so"
Environment="PATH=__PATH_WITH_RUBY__"
ExecStart=__INSTALL_DIR__/live/bin/bundle exec puma -C config/puma.rb
ExecReload=/bin/kill -SIGUSR1 $MAINPID

View file

@ -7,21 +7,3 @@
memory_needed="2560"
ruby_version=3.4.5
nodejs_version=20
case $YNH_ARCH in
amd64)
ld_preload="LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so"
;;
arm64)
ld_preload="LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libjemalloc.so"
;;
armhf)
ld_preload="LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libjemalloc.so"
;;
armel)
ld_preload="LD_PRELOAD=/usr/lib/arm-linux-gnueabi/libjemalloc.so"
;;
i386)
ld_preload="LD_PRELOAD=/usr/lib/i386-linux-gnu/libjemalloc.so"
;;
esac

View file

@ -80,19 +80,19 @@ ynh_script_progression "Building app..."
pushd "$install_dir/live"
gem update --system
gem install bundler --no-document
ynh_hide_warnings ynh_exec_as_app $ld_preload bin/bundle config deployment 'true'
ynh_hide_warnings ynh_exec_as_app $ld_preload bin/bundle config without 'development test'
ynh_hide_warnings ynh_exec_as_app $ld_preload bin/bundle config set force_ruby_platform true --quiet
ynh_hide_warnings ynh_exec_as_app $ld_preload bin/bundle install -j$(getconf _NPROCESSORS_ONLN)
ynh_exec_as_app LD_PRELOAD=libjemalloc.so bin/bundle config deployment 'true'
ynh_exec_as_app LD_PRELOAD=libjemalloc.so bin/bundle config without 'development test'
ynh_exec_as_app LD_PRELOAD=libjemalloc.so bin/bundle config set force_ruby_platform true --quiet
ynh_exec_as_app LD_PRELOAD=libjemalloc.so bin/bundle install -j$(getconf _NPROCESSORS_ONLN)
env corepack enable
echo Y | ynh_hide_warnings ynh_exec_as_app yarn workspaces focus --production
ynh_hide_warnings ynh_exec_as_app yarn install --immutable
echo Y | ynh_exec_as_app yarn workspaces focus --production
ynh_exec_as_app yarn install --immutable
echo "SAFETY_ASSURED=1">> $config
# Generate vapid keys
ynh_hide_warnings ynh_exec_as_app RAILS_ENV=production $ld_preload bin/bundle exec rails mastodon:webpush:generate_vapid_key > vapid_key.txt
ynh_exec_as_app RAILS_ENV=production LD_PRELOAD=libjemalloc.so bin/bundle exec rails mastodon:webpush:generate_vapid_key > vapid_key.txt
# Generate active record encryption
ynh_hide_warnings ynh_exec_as_app RAILS_ENV=production $ld_preload bin/bundle exec rails db:encryption:init > active_record_encryption.txt
ynh_exec_as_app RAILS_ENV=production LD_PRELOAD=libjemalloc.so bin/bundle exec rails db:encryption:init > active_record_encryption.txt
popd
# Re-generate config with vapid keys and active record encryption
@ -112,12 +112,12 @@ ynh_delete_file_checksum "$config"
ynh_config_add --template=".env.production.sample" --destination="$config"
pushd "$install_dir/live"
ynh_hide_warnings ynh_exec_as_app RAILS_ENV=production $ld_preload bin/bundle exec rails db:migrate --quiet
ynh_hide_warnings ynh_exec_as_app RAILS_ENV=production $ld_preload bin/bundle exec rails db:seed --quiet
ynh_hide_warnings ynh_exec_as_app RAILS_ENV=production $ld_preload bin/bundle exec rails assets:precompile --quiet
ynh_exec_as_app RAILS_ENV=production LD_PRELOAD=libjemalloc.so bin/bundle exec rails db:migrate --quiet
ynh_exec_as_app RAILS_ENV=production LD_PRELOAD=libjemalloc.so bin/bundle exec rails db:seed --quiet
ynh_exec_as_app RAILS_ENV=production LD_PRELOAD=libjemalloc.so bin/bundle exec rails assets:precompile --quiet
# Create the first admin user
ynh_hide_warnings ynh_exec_as_app RAILS_ENV=production $ld_preload bin/tootctl accounts create "$admin" --email="$admin_mail" --confirmed --role=Owner
ynh_hide_warnings ynh_exec_as_app RAILS_ENV=production $ld_preload bin/tootctl accounts approve "$admin"
ynh_exec_as_app RAILS_ENV=production LD_PRELOAD=libjemalloc.so bin/tootctl accounts create "$admin" --email="$admin_mail" --confirmed --role=Owner
ynh_exec_as_app RAILS_ENV=production LD_PRELOAD=libjemalloc.so bin/tootctl accounts approve "$admin"
popd
#=================================================

View file

@ -55,7 +55,7 @@ ynh_script_progression "Building app..."
pushd "$install_dir/live"
gem update --system
gem install bundler --no-document
ynh_hide_warnings ynh_exec_as_app $ld_preload bin/bundle install --redownload -j$(getconf _NPROCESSORS_ONLN)
ynh_exec_as_app LD_PRELOAD=libjemalloc.so bin/bundle install --redownload -j$(getconf _NPROCESSORS_ONLN)
popd
#=================================================

View file

@ -79,14 +79,14 @@ ynh_script_progression "Building assets..."
pushd "$install_dir/live"
gem update --system
gem install bundler --no-document
ynh_hide_warnings ynh_exec_as_app $ld_preload bin/bundle config deployment 'true'
ynh_hide_warnings ynh_exec_as_app $ld_preload bin/bundle config without 'development test'
ynh_hide_warnings ynh_exec_as_app $ld_preload bin/bundle config set force_ruby_platform true --quiet
ynh_hide_warnings ynh_exec_as_app $ld_preload bin/bundle install -j$(getconf _NPROCESSORS_ONLN)
ynh_exec_as_app LD_PRELOAD=libjemalloc.so bin/bundle config deployment 'true'
ynh_exec_as_app LD_PRELOAD=libjemalloc.so bin/bundle config without 'development test'
ynh_exec_as_app LD_PRELOAD=libjemalloc.so bin/bundle config set force_ruby_platform true --quiet
ynh_exec_as_app LD_PRELOAD=libjemalloc.so bin/bundle install -j$(getconf _NPROCESSORS_ONLN)
env corepack enable
echo Y | ynh_hide_warnings ynh_exec_as_app yarn workspaces focus --production
ynh_hide_warnings ynh_exec_as_app yarn install --immutable
echo Y | ynh_exec_as_app yarn workspaces focus --production
ynh_exec_as_app yarn install --immutable
popd
chown -R "$app:www-data" "$install_dir/live/public"
@ -125,7 +125,7 @@ if ynh_app_upgrading_from_version_before 4.3.2~ynh1; then
pushd "$install_dir/live"
# Generate active record encryption
ynh_hide_warnings ynh_exec_as_app RAILS_ENV=production $ld_preload bin/bundle exec rails db:encryption:init > active_record_encryption.txt
ynh_exec_as_app RAILS_ENV=production LD_PRELOAD=libjemalloc.so bin/bundle exec rails db:encryption:init > active_record_encryption.txt
active_record_encryption_deterministic_key=$(grep -oP "ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=\K.+" "$install_dir/live/active_record_encryption.txt")
ynh_app_setting_set --key=active_record_encryption_deterministic_key --value="$active_record_encryption_deterministic_key"
active_record_encryption_key_derivation_salt=$(grep -oP "ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=\K.+" "$install_dir/live/active_record_encryption.txt")
@ -146,11 +146,11 @@ ynh_config_add --template=".env.production.sample" --destination="$config"
ynh_script_progression "Applying migrations..."
pushd "$install_dir/live"
ynh_hide_warnings ynh_exec_as_app RAILS_ENV=production $ld_preload bin/bundle exec rails db:migrate --quiet
ynh_hide_warnings ynh_exec_as_app RAILS_ENV=production $ld_preload bin/bundle exec rails assets:precompile --quiet
ynh_exec_as_app RAILS_ENV=production LD_PRELOAD=libjemalloc.so bin/bundle exec rails db:migrate --quiet
ynh_exec_as_app RAILS_ENV=production LD_PRELOAD=libjemalloc.so bin/bundle exec rails assets:precompile --quiet
# Apply redis namespace migration (https://github.com/mastodon/redis_namespace_migration)
ynh_hide_warnings ynh_exec_as_app RAILS_ENV=production COREPACK_ENABLE_DOWNLOAD_PROMPT=0 $ld_preload bin/rails runner rename.rb
ynh_exec_as_app RAILS_ENV=production COREPACK_ENABLE_DOWNLOAD_PROMPT=0 LD_PRELOAD=libjemalloc.so bin/rails runner rename.rb
redis_namespace="$(ynh_app_setting_get --key=redis_namespace)"
if [ $redis_namespace ]; then
if [ ynh_app_setting_get --key=es_enabled == "true" ] && [ ynh_app_setting_get --key=es_prefix == "" ]; then