아, 알겠어. 그래, OS가 다르니까 그런 거구나. 이미 어떻게 했는지 물어보는 사람이 있어서 혹시 모르니 여기에 공유할게.
Ruby 3.2.x(rbenv를 사용해야 OS에 종속되지 않음), Node v16.19.x/npm 8.19.x, 그리고 PostgreSQL(11 이상의 버전이면 아마 문제없을 것)이 필요해.
.ruby-version 파일을 만들어서 설치한 Ruby 버전(3.2.2)을 지정했어.
bundle을 실행했는데 모든 gem이 정상적으로 빌드됐어.
- PostgreSQL 자체에서 데이터베이스를 설정해야 했어:
CREATE DATABASE discourse;
CREATE USER discourse WITH password 'fA....';
GRANT ALL PRIVILEGES ON DATABASE discourse TO discourse;
\c discourse
GRANT ALL ON SCHEMA public TO discourse;
database.yml이 production 변수를 받지 않는다는 점이 놀라웠어 (이건 Rails 관례에 매우 어긋나는 것 같아). 모든 DB 설정은 SMTP 값과 함께 config/discourse.conf에 있었다. 그 값들을 채워 넣었어.
그 다음 데이터베이스 마이그레이션을 실행했어:
bundle exec rails db:migrate
모두 정상 작동했고 마이그레이션도 성공적으로 완료됐어.
config/sidekiq.yml에서 development 섹션 뒤에 다음 내용을 추가했어:
production:
:concurrency: 2
:queues:
- [critical, 2]
- [default, 1]
- [low]
- [ultra_low]
- 그 다음
lib/tasks/assets.rake 파일을 151줄 부근에서 수정해서 다음 내용을 추가했어:
harmony: true,
그러면 다음과 같이 보여:
uglified, map =
Uglifier.new(
comments: :none,
harmony: true,
source_map: {
filename: File.basename(from),
output_filename: File.basename(to),
},
).comp
그리고 다음 npm 패키지를 설치했어:
npm install terser
npm install -g uglify-js@"<3"
그 후 에셋을 빌드했어:
RAILS_ENV=production bundle exec rake assets:precompile
그리고 성공! 이제 이 명령이 작동해야 해:
bundle exec sidekiq -e production -C config/sidekiq.yml
bundle exec puma --config config/puma.rb -e production
이것으로 sidekiq와 puma 웹 서버가 실행돼.
(훨씬 저렴하고 더 많은 제어가 가능해, 예를 들어 나는 이미 Ruby 3.2.2를 실행하고 있어). 대부분의 시간은 특이한 문제들을 해결하는 데 걸렸어 (예를 들어 production 값들이 있어야 할 자리에 없어서 찾아보는 것 같은). 하지만 그 외에는 꽤 빨랐어!