메인서버 에러 트러블 슈팅

지피티를 활용하여 프로그래밍하는
재미를 아는 사람들만 애기해 주세용 !
Post Reply
gpgugp
Site Admin
Posts: 20
Joined: Sat Aug 02, 2025 8:36 am

메인서버 에러 트러블 슈팅

Post by gpgugp »

내 메인 웹서버가 작동을 안해

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 경로 잘못 지정.

🧪 진단 방법 (SSH 접속해서 실행해봐)
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
💡 팁: ls를 컬러 없이 쓰고 싶으면
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 하고 있는 대상 파일이 실제로 있는지 체크해봐.

🧩 예시: config.ru에서 자주 하는 실수
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/
📦 혹시 모를 dependency 문제 해결
bash
복사
편집
bundle install
🔑 그리고 Rails는 이거 자주 터져
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
👀 결과 확인해서 다시 503 안 뜨고 정상 접속 되면 OK!
만약 여전히 안 되면,
로그의 최신 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
💡 참고 (ProxyPass 연동 구조라면)
/etc/apache2/sites-enabled/wujin.monster.conf 이런 식의 conf 파일에서
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
이렇게 되어 있으면, Puma(3000포트) → Apache 프록시 연동이니까
포트가 제대로 살아나면 바로 웹사이트도 정상 돌아올 거야.

정상 접속되는지 확인하고, 문제 있으면 메시지 남겨줘!
이제 99% 복구 성공! 😎
Post Reply