ChatGPT의 말:
503 Service Unavailable 오류는 보통 다음 중 하나야:
백엔드 앱이 죽었음
Apache는 살아있지만, ProxyPass 또는 ReverseProxy로 연결된 백엔드 (예: Flask, Rails, PHP-FPM 등)가 죽었을 때 발생해.
서비스 소켓 연결 실패
mod_proxy로 연결된 포트(localhost:3000, localhost:8000 등)가 열려있지 않거나, 거기 있는 앱이 꺼짐.
서버 과부하
너무 많은 요청 → Apache worker 다 죽어서 더 이상 처리 못 함.
Apache 설정 문제
ProxyPass, RewriteRule, mod_proxy_fcgi, php-fpm.sock 경로 잘못 지정.
bash
복사
편집
# Apache 상태 확인
sudo systemctl status apache2
# 관련된 백엔드 서비스 (예: gunicorn, php-fpm, rails 등) 상태 확인
sudo systemctl status rails-portfolio.service # 또는 gunicorn, php-fpm 등
# 포트 확인
sudo netstat -lnpt | grep -E '3000|8000|9000'
# Apache 로그 확인
sudo tail -n 100 /var/log/apache2/error.log
Apache 재시작
bash
복사
편집
sudo systemctl restart apache2
백엔드 서비스 재시작 (예: Gunicorn, Rails, PHP-FPM)
bash
복사
편집
sudo systemctl restart rails-portfolio.service
서비스 포트 확인
bash
복사
편집
curl -I http://localhost:3000 # 포트는 네가 쓰는 앱에 맞춰
확인해보고, error.log나 서비스 상태 결과 캡처해서 보여주면 바로 원인 찾아줄게.
나의 말:
ls했는데 왜 이렇게 나와? 보기 힘들어
ChatGPT의 말:
이 화면이 이렇게 나온 건 터미널 출력이 이상하게 겹쳐진 상태 때문이야. 보통 이런 현상은 다음과 같은 상황에서 발생해:
명령어 출력 중간에 에러 메시지가 끼어들었을 때
위에 보면 from config.ru:3:in 'require_relative' 이런 문구가 ls 출력 중간에 섞여버렸지.
서비스 데몬(예: Puma, Rails, Gunicorn 등)의 로그가 stdout으로 같이 터져나올 때
데몬이 stdout에 로그를 계속 뿌리는 경우, 동시에 다른 명령어(ls, top, htop) 출력이 꼬여버릴 수 있음.
백스페이스나 컬러코드 같은 ANSI 제어문자가 출력 중 꼬일 때
대개 로그나 에러 메시지가 컬러 포함되어 있을 때 발생함.
bash
복사
편집
# 1. 터미널 화면 완전 정리
reset
또는
bash
복사
편집
# 2. 기존 로그들 다 숨기고 클리어
clear
그리고 다시 보기 좋게 출력하고 싶으면:
bash
복사
편집
ls --color=auto -alF
bash
복사
편집
ls --color=never
혹시 저 config.ru:3 관련해서 실제 오류가 난 거면, 그 파일에서 뭔가 잘못 require_relative 한 걸 수도 있으니 그 줄도 같이 보여줘.
나의 말:
파일 깨진건가?
ChatGPT의 말:
파일이 깨진 건 아니고, 지금 화면에 보이는 오류 메시지:
bash
복사
편집
'-portfolio[8759]: from config.ru:3:in `require_relative'\\''
이건 어딘가에서 config.ru 파일을 실행하려다 실패한 백그라운드 프로세스가 stdout에 에러 로그를 출력하고 있어서 ls 명령 출력에 끼어든 거야.
config.ru 3번째 줄에서 require_relative을 호출했는데, 해당 파일이 없거나 경로가 잘못됐다는 의미야. 예를 들어:
ruby
복사
편집
require_relative 'application'
이런 코드가 있는데 application.rb 파일이 없으면 저런 식으로 에러가 나.
방해되는 프로세스 종료 (아마 puma나 rails server일 확률 높음)
bash
복사
편집
ps aux | grep portfolio
예를 들어 결과에 puma, rackup, rails 등 떠 있으면
bash
복사
편집
sudo kill -9 [PID]
터미널 깨끗하게 정리
bash
복사
편집
reset
또는 그냥
bash
복사
편집
clear
문제의 원인 코드 확인
bash
복사
편집
head -n 10 config.ru
3번째 줄쯤 확인해봐서 require_relative 하고 있는 대상 파일이 실제로 있는지 체크해봐.
ruby
복사
편집
require_relative 'config/environment'
인데, config/environment.rb가 없으면 저런 에러 남.
필요하면 config.ru 내용 10줄만 복사해서 보여줘, 같이 확인해볼게.
나의 말:
root@gpgugp:/home/ubuntu/portfolio_site# ps aux | grep portfolio
root 5189 0.0 0.0 16740 7168 ? S 14:34 0:00 sudo systemctl status rails-portfolio.service
root 5196 0.0 0.0 16740 2608 pts/2 Ss 14:34 0:00 sudo systemctl status rails-portfolio.service
root 5197 0.0 0.0 17332 6228 pts/2 T+ 14:34 0:00 systemctl status rails-portfolio.service
root 8315 0.0 0.0 16732 7040 ? S 14:40 0:00 sudo systemctl status rails-portfolio.service
root 8316 0.0 0.0 16732 2604 pts/3 Ss 14:40 0:00 sudo systemctl status rails-portfolio.service
root 8317 0.0 0.0 17332 6524 pts/3 T+ 14:40 0:00 systemctl status rails-portfolio.service
root 101078 0.0 0.0 6676 2176 pts/1 S+ 19:22 0:00 grep --color=auto portfolio
root@gpgugp:/home/ubuntu/portfolio_site#
ChatGPT의 말:
좋아, ps aux | grep portfolio 결과를 보면 Rails 앱이 실제로 실행되고 있지는 않아. systemctl status rails-portfolio.service만 실행 중이지, 실제로 앱을 서빙하는 프로세스(puma, rackup, rails server, gunicorn 등)는 없다는 뜻이야.
즉, 서비스가 죽어 있는 상태고, 그게 Apache에서 503 Service Unavailable로 이어진 거야.
bash
복사
편집
sudo systemctl status rails-portfolio.service
이걸 다시 확인해줘. 에러 메시지나 로그 줄 중에 빨간색 오류나 failed, Exited, code=exited, status=1 같은 거 있으면 알려줘.
bash
복사
편집
journalctl -u rails-portfolio.service -b --no-pager | tail -n 50
이 명령어로 서비스 시작 시점부터 최근 50줄 로그 확인해보자.
에러 메시지가 config.ru:3 in require_relative로 계속 나오고 있는 걸 보면, 아마 config.ru 내부의 require_relative에서 경로가 꼬였거나, 누락된 파일이 있을 확률이 높아. 이 파일도 같이 확인해줘:
bash
복사
편집
cat config.ru
이제 순서대로:
systemctl status 출력
journalctl 로그
config.ru 내용
이 세 개 보여주면 바로 원인 찾아줄 수 있어.
나의 말:
root@gpgugp:/home/ubuntu/portfolio_site# sudo systemctl status rails-portfolio.service
● rails-portfolio.service - Rails Portfolio App
Loaded: loaded (/etc/systemd/system/rails-portfolio.service; enabled; preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-03 19:22:21 KST; 2s ago
Process: 101243 ExecStart=/bin/bash -lc /home/ubuntu/.rbenv/shims/bundle exec rails s -b 0.0.0.0 -p 3000 (code=exited, status=1/FAILURE)
Main PID: 101243 (code=exited, status=1/FAILURE)
CPU: 1.111s
root@gpgugp:/home/ubuntu/portfolio_site#
ChatGPT의 말:
좋아, 핵심 나왔어.
서비스 상태: activating (auto-restart)
에러 원인: ExecStart로 실행된 bundle exec rails s 명령이 status=1/FAILURE로 실패
즉, Rails 서버 실행 도중 치명적인 에러 발생 → 앱이 꺼짐
지금부터 실패한 이유를 정확히 보자:
bash
복사
편집
journalctl -u rails-portfolio.service -b --no-pager | tail -n 50
이 명령어로 최근 서비스 실행 로그를 확인해야 해. 로그에 아마 다음 중 하나가 뜰 거야:
config.ru 파일에서 require_relative 경로 에러
Gemfile이나 bundle install 관련 오류
환경변수 누락
master.key 또는 credentials.yml.enc 문제
bash
복사
편집
cat config.ru
특히 3번째 줄에서 어떤 걸 require_relative 하는지 확인해서, 그 파일이 진짜 존재하는지 봐야 해.
bash
복사
편집
ls -l config/
ls -l app/
bash
복사
편집
bundle install
bash
복사
편집
config/master.key
파일 없으면 아래처럼 복구하거나 환경변수로 제공해야 돼:
bash
복사
편집
export RAILS_MASTER_KEY=xxxxxxxxxxxxxxxx
위 내용 순서대로 실행하거나 결과 보여줘. 그럼 바로 디버깅 가능해.
나의 말:
root@gpgugp:/home/ubuntu/portfolio_site# journalctl -u rails-portfolio.service -b --no-pager | tail -n 50
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/zeitwerk-2.7.3/lib/zeitwerk/registry/loaders.rb:10:in each'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/zeitwerk-2.7.3/lib/zeitwerk/loader.rb:429:in eager_load_all'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-8.0.2/lib/rails/application/finisher.rb:79:in block in <module:Finisher>'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:32:in instance_exec'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:32:in run'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:61:in block in run_initializers'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/3.3.0/tsort.rb:231:in block in tsort_each'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/3.3.0/tsort.rb:353:in block (2 levels) in each_strongly_connected_component'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/3.3.0/tsort.rb:434:in each_strongly_connected_component_from'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/3.3.0/tsort.rb:352:in block in each_strongly_connected_component'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/3.3.0/tsort.rb:350:in each'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/3.3.0/tsort.rb:350:in call'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/3.3.0/tsort.rb:350:in each_strongly_connected_component'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/3.3.0/tsort.rb:229:in tsort_each'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/3.3.0/tsort.rb:208:in tsort_each'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-8.0.2/lib/rails/initializable.rb:60:in run_initializers'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-8.0.2/lib/rails/application.rb:440:in initialize!'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/portfolio_site/config/environment.rb:5:in <main>'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from config.ru:3:in require_relative'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from config.ru:3:in block (2 levels) in <main>'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/rack-3.2.0/lib/rack/builder.rb:108:in eval'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/rack-3.2.0/lib/rack/builder.rb:108:in new_from_string'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/rack-3.2.0/lib/rack/builder.rb:97:in load_file'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/rack-3.2.0/lib/rack/builder.rb:67:in parse_file'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/rackup-2.2.1/lib/rackup/server.rb:354:in build_app_and_options_from_config'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/rackup-2.2.1/lib/rackup/server.rb:263:in app'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/rackup-2.2.1/lib/rackup/server.rb:424:in wrapped_app'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/rackup-2.2.1/lib/rackup/server.rb:326:in block in start'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/rackup-2.2.1/lib/rackup/server.rb:382:in handle_profiling'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/rackup-2.2.1/lib/rackup/server.rb:325:in start'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-8.0.2/lib/rails/commands/server/server_command.rb:38:in start'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-8.0.2/lib/rails/commands/server/server_command.rb:145:in block in perform'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from <internal:kernel>:90:in tap'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-8.0.2/lib/rails/commands/server/server_command.rb:136:in perform'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/thor-1.4.0/lib/thor/command.rb:28:in run'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/thor-1.4.0/lib/thor/invocation.rb:127:in invoke_command'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-8.0.2/lib/rails/command/base.rb:178:in invoke_command'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/thor-1.4.0/lib/thor.rb:538:in dispatch'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-8.0.2/lib/rails/command/base.rb:73:in perform'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-8.0.2/lib/rails/command.rb:65:in block in invoke'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-8.0.2/lib/rails/command.rb:143:in with_argv'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-8.0.2/lib/rails/command.rb:63:in invoke'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/railties-8.0.2/lib/rails/commands.rb:18:in <main>'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/3.3.0/bundled_gems.rb:74:in require'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/3.3.0/bundled_gems.rb:74:in block (2 levels) in replace_require'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from /home/ubuntu/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in require'
Aug 03 19:22:55 gpgugp rails-portfolio[101616]: from bin/rails:4:in <main>'
Aug 03 19:22:55 gpgugp systemd[1]: rails-portfolio.service: Main process exited, code=exited, status=1/FAILURE
Aug 03 19:22:55 gpgugp systemd[1]: rails-portfolio.service: Failed with result 'exit-code'.
root@gpgugp:/home/ubuntu/portfolio_site# cat config.ru
# This file is used by Rack-based servers to start the application.
require_relative "config/environment"
run Rails.application
Rails.application.load_server
root@gpgugp:/home/ubuntu/portfolio_site#
root@gpgugp:/home/ubuntu/portfolio_site# ls -l config/
ls -l app/
total 80
-rw-r--r-- 1 www-data www-data 997 Aug 2 12:16 application.rb
-rw-r--r-- 1 www-data www-data 207 Aug 2 12:16 boot.rb
-rw-r--r-- 1 www-data www-data 549 Aug 2 12:17 cable.yml
-rw-r--r-- 1 www-data www-data 300 Aug 2 12:17 cache.yml
-rw-r--r-- 1 www-data www-data 548 Aug 2 12:16 credentials.yml.enc
-rw-r--r-- 1 www-data www-data 1124 Aug 2 12:16 database.yml
-rw-r--r-- 1 www-data www-data 3655 Aug 2 12:17 deploy.yml
-rw-r--r-- 1 www-data www-data 128 Aug 2 12:16 environment.rb
drwxr-xr-x 2 www-data www-data 4096 Aug 2 12:16 environments
-rw-r--r-- 1 www-data www-data 285 Aug 2 12:17 importmap.rb
drwxr-xr-x 2 www-data www-data 4096 Aug 2 12:16 initializers
drwxr-xr-x 2 www-data www-data 4096 Aug 2 12:16 locales
-rw------- 1 www-data www-data 32 Aug 2 12:16 master.key
-rw-r--r-- 1 www-data www-data 1962 Aug 2 12:16 puma.rb
-rw-r--r-- 1 www-data www-data 290 Aug 2 12:17 queue.yml
-rw-r--r-- 1 www-data www-data 474 Aug 2 12:17 recurring.yml
-rw-r--r-- 1 www-data www-data 664 Aug 2 14:56 routes.rb
-rw-r--r-- 1 www-data www-data 664 Aug 2 17:21 routes.rb.bak
-rw-r--r-- 1 www-data www-data 723 Aug 2 14:34 routes.rb.cp
-rw-r--r-- 1 www-data www-data 1152 Aug 2 12:16 storage.yml
total 32
drwxr-xr-x 4 www-data www-data 4096 Aug 2 12:16 assets
drwxr-xr-x 3 www-data www-data 4096 Aug 2 14:36 controllers
drwxr-xr-x 2 www-data www-data 4096 Aug 2 12:42 helpers
drwxr-xr-x 3 www-data www-data 4096 Aug 2 12:17 javascript
drwxr-xr-x 2 www-data www-data 4096 Aug 2 12:16 jobs
drwxr-xr-x 2 www-data www-data 4096 Aug 2 17:21 mailers
drwxr-xr-x 3 www-data www-data 4096 Aug 2 12:16 models
drwxr-xr-x 6 www-data www-data 4096 Aug 2 17:20 views
root@gpgugp:/home/ubuntu/portfolio_site#
^C
root@gpgugp:/home/ubuntu/portfolio_site# bundle install
Don't run Bundler as root. Installing your bundle as root will break this application for all non-root users on this machine.
Bundle complete! 21 Gemfile dependencies, 119 gems now installed.
Use bundle info [gemname] to see where a bundled gem is installed.
1 installed gem you directly depend on is looking for funding.
Run bundle fund for details
root@gpgugp:/home/ubuntu/portfolio_site# config/master.key
-bash: config/master.key: Permission denied
root@gpgugp:/home/ubuntu/portfolio_site#
ChatGPT의 말:
여기서 거의 다 왔다!
지금 핵심 원인은 퍼미션(권한) 문제랑 연관이 확실해 보인다.
config.ru에서 require_relative "config/environment" → OK (파일도 존재)
config/master.key 파일도 있음 (근데 root가 못 읽고 있음)
로그를 보면 여전히 서버 시작하다가 실패, status=1/FAILURE
마지막에 config/master.key: Permission denied 라는 명확한 힌트!
Rails가 config/master.key 파일을 읽어야 credentials와 환경 설정을 불러오는데,
퍼미션 문제로 읽지를 못해서 앱이 크래시(죽음)하고 있는 상황.
아래 명령어로 퍼미션 고치자:
bash
복사
편집
sudo chown ubuntu:ubuntu config/master.key
sudo chmod 600 config/master.key
(※ 만약 데몬이 www-data로 실행된다면 www-data:www-data로 바꿔도 됨.)
그리고 전체 config 디렉토리도 한번:
bash
복사
편집
sudo chown -R ubuntu:ubuntu config
sudo chmod 700 config
만약 systemd 서비스가 root가 아니라 ubuntu 또는 www-data 계정으로 rails 실행 중이면, 그 계정에 맞게 chown!
서비스 재시작:
bash
복사
편집
sudo systemctl restart rails-portfolio.service
서비스 상태 확인:
bash
복사
편집
sudo systemctl status rails-portfolio.service
만약 여전히 안 되면,
로그의 최신 10줄 다시 보여줘!
궁금한 점 있으면 바로 물어봐!
(이거 퍼미션 고치면 90% 바로 해결된다.)
나의 말:
root@gpgugp:/home/ubuntu/portfolio_site# sudo chown ubuntu:ubuntu config/master.key
sudo chmod 600 config/master.key
root@gpgugp:/home/ubuntu/portfolio_site# sudo chown -R ubuntu:ubuntu config
sudo chmod 700 config
root@gpgugp:/home/ubuntu/portfolio_site# sudo systemctl restart rails-portfolio.service
root@gpgugp:/home/ubuntu/portfolio_site# sudo systemctl status rails-portfolio.service
● rails-portfolio.service - Rails Portfolio App
Loaded: loaded (/etc/systemd/system/rails-portfolio.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-08-03 19:25:38 KST; 2s ago
Main PID: 103453 (ruby)
Tasks: 10 (limit: 9126)
Memory: 94.3M (peak: 95.0M)
CPU: 1.634s
CGroup: /system.slice/rails-portfolio.service
└─103453 "puma 6.6.1 (tcp://0.0.0.0:3000) [portfolio_site]"
Aug 03 19:25:39 gpgugp rails-portfolio[103453]: => Run bin/rails server --help for more startup options
Aug 03 19:25:39 gpgugp rails-portfolio[103453]: Puma starting in single mode...
Aug 03 19:25:39 gpgugp rails-portfolio[103453]: * Puma version: 6.6.1 ("Return to Forever")
Aug 03 19:25:39 gpgugp rails-portfolio[103453]: * Ruby version: ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-linux]
Aug 03 19:25:39 gpgugp rails-portfolio[103453]: * Min threads: 3
Aug 03 19:25:39 gpgugp rails-portfolio[103453]: * Max threads: 3
Aug 03 19:25:39 gpgugp rails-portfolio[103453]: * Environment: production
Aug 03 19:25:39 gpgugp rails-portfolio[103453]: * PID: 103453
Aug 03 19:25:39 gpgugp rails-portfolio[103453]: * Listening on http://0.0.0.0:3000
Aug 03 19:25:39 gpgugp rails-portfolio[103453]: Use Ctrl-C to stop
root@gpgugp:/home/ubuntu/portfolio_site#
ChatGPT의 말:
오우~ 완벽하게 살아났다!
서비스 상태 active (running)이고, Puma가 정상적으로 3000번 포트에서 리스닝 중이다!
이제 거의 끝났어
웹에서 다시 접속해봐 (https://wujin.monster)
만약 Apache+Puma(혹은 ProxyPass) 구조면 바로 서비스 복구됐을 거야.
여전히 503 뜨면 Apache에서 ProxyPass 설정이나 VirtualHost를 점검해야 돼.
혹시라면, Apache도 한 번 재시작!
bash
복사
편집
sudo systemctl restart apache2
그리고, Apache 에러 로그도 체크!
bash
복사
편집
sudo tail -n 100 /var/log/apache2/error.log
/etc/apache2/sites-enabled/wujin.monster.conf 이런 식의 conf 파일에서
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
이렇게 되어 있으면, Puma(3000포트) → Apache 프록시 연동이니까
포트가 제대로 살아나면 바로 웹사이트도 정상 돌아올 거야.
정상 접속되는지 확인하고, 문제 있으면 메시지 남겨줘!
이제 99% 복구 성공!