Sinatra 프로젝트 배포하기
인덱스 페이지 하나만 있는데 Rails로 배포하고 있었던 880322.com를 이번에 Sinatra로 변경했다.
추가로 이런저런 프로젝트를 작게 해보고 싶은데 너무 큰 프레임워크는 필요없을 것 같아서 변경하고 배포하는데 고생을 많이해서 간단하게 작성해본다.
Gemfile 생성
source 'https://rubygems.org'
gem 'sinatra'
gem 'sass'
gem 'puma'
Sinatra 프로젝트 생성하기.
/static 은 /public 로 변경해줘도 됨. 취향에 따라서. 작업하면 됨
작업한 대로 nginx의 public 폴더 이름도 변경해주면 됨.
require 'sinatra'
set :public_folder, File.dirname(__FILE__) + '/static'
configure {
set :server, :puma
}
get '/' do
erb :index
end
get '/common.css' do
scss :common
end
이후 작업한 내용은 views/index.erb, views/common.scss 에 필요한 파일을 만들어주면 된다.
config.ru 파일 만들기
require 'sinatra'
set :env, :production
disable :run
require './app.rb'
run Sinatra::Application
Puma AppServer 를 실행시킬 때의 설정을 한다. 서버에 맞게 설정해주면 된다.
config/puma.rb
root = "#{ Dir.getwd }"
puma_base_dir = "#{ root }/tmp/puma"
bind "unix://#{ puma_base_dir }/socket"
pidfile "#{ puma_base_dir }/pid"
state_path = "#{ puma_base_dir }/state"
rackup "#{ root }/config.ru"
threads 2, 4
/etc/nginx/nginx.conf 또는 /etc/nginx/sites-avaliable/
upstream app_name {
server unix:///app_dir/tmp/puma/socket;
}
server {
listen 80;
server_name 880322.com www.880322.com;
root /app_dir/static;
access_log /app_dir/log/nginx.access.log;
error_log /app_dir/log/nginx.error.log info;
location / {
try_files $uri @zero_app;
}
location @app_name {
include proxy_params;
proxy_pass http://app_name;
}
}
서버에서 설정 및 실행할 것들
bundle install
mkdir -p tmp/puma
mkdir log
# 앱 실행시 명령어
bundle exec puma -e production --config config/puma.rb > dev/null 2& &
이전 글 : 맥 개발 환경 설정하기
다음 글 : 몽고 DB 백업 및 복구 스크립트 작성하기