zoukankan      html  css  js  c++  java
  • Capistrano + Puma + Apache

    系统中的80端口已经因为使用lampp被占用,故不能再次使用nginx来做解析:

    deploy/staging
     
    server "yan.com", user: "root", roles: %w{app db web}, my_property: :my_value
    set :branch, 'master'
    set :rails_env, 'production'
    set :deploy_to, "/opt/lampp/htdocs/#{ fetch(:application) }"
    set :puma_state, "#{shared_path}/tmp/pids/puma.state"
    set :puma_pid,   "#{shared_path}/tmp/pids/puma.pid"
    set :puma_bind, "tcp://0.0.0.0:9951"
    set :puma_conf, "#{shared_path}/puma.rb"
    set :puma_access_log, "#{shared_path}/log/puma_error.log"
    set :puma_error_log, "#{shared_path}/log/puma_access.log"
    set :puma_role, :app
    set :puma_env, fetch(:rack_env, fetch(:rails_env, 'production'))
    set :puma_threads, [0, 16]
    set :puma_workers, 0
    set :puma_init_active_record, false
    set :puma_preload_app, true
    

      

     
    deploy.rb
     
    # config valid for current version and patch releases of Capistrano
    lock "~> 3.10.1"
     
    set :application, "dsadas"
    set :repo_url, "git@gitee.co"
     
    set :puma_role, :app
    set :puma_init_active_record, true
    set :puma_config_file, 'config/puma.rb'
    # set :bundle_gemfile, "china_enterprise/Gemfile"
    # Default branch is :master
    # ask :branch, `git rev-parse --abbrev-ref HEAD`.chomp
     
    # Default deploy_to directory is /var/www/my_app_name
    # set :deploy_to, '/var/www/my_app_name'
     
    # Default value for :scm is :git
    # set :scm, :git
     
    # Default value for :format is :airbrussh.
    # set :format, :airbrussh
     
    # You can configure the Airbrussh format using :format_options.
    # These are the defaults.
    # set :format_options, command_output: true, log_file: 'log/capistrano.log', color: :auto, truncate: :auto
     
    # Default value for :pty is false
    # set :pty, true
     
    # Default value for :linked_files is []
    # append :linked_files, 'config/database.yml', 'config/secrets.yml'
    set :linked_files, fetch(:linked_files, []).push(
      'config/database.yml', 'config/secrets.yml', 'config/wechat.yml')
     
    # Default value for linked_dirs is []
    # append :linked_dirs, 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'public/system'
    set :linked_dirs, fetch(:linked_dirs, []).push(
      'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'public/assets', 'public/uploads')
     
     
    # set :sidekiq_config, 'config/sidekiq.yml'
    # Default value for default_env is {}
    # set :default_env, { path: "/opt/ruby/bin:$PATH" }
     
    # Default value for keep_releases is 5
    # set :keep_releases, 5
    namespace :deploy do
      desc 'Restart application'
      task :restart do
        on roles(:app), in: :sequence, wait: 5 do
        end
      end
      after :restart, :'puma:restart'    #添加此项重启puma
      after :publishing, :restart
     
      after :restart, :clear_cache do
        on roles(:web), in: :groups, limit: 3, wait: 10 do
        end
      end
    end
    

      

     
    capful
     
    # Load DSL and set up stages
    require "capistrano/setup"
     
    # Include default deployment tasks
    require "capistrano/deploy"
     
    # Load the SCM plugin appropriate to your project:
    #
    # require "capistrano/scm/hg"
    # install_plugin Capistrano::SCM::Hg
    # or
    # require "capistrano/scm/svn"
    # install_plugin Capistrano::SCM::Svn
    # or
    require "capistrano/scm/git"
    install_plugin Capistrano::SCM::Git
     
    # Include tasks from other gems included in your Gemfile
    #
    # For documentation on these, see for example:
    #
    #
     
    require "capistrano/rvm"
    # require "capistrano/rbenv"
    # require "capistrano/chruby"
    require "capistrano/bundler"
    require "capistrano/rails/assets"
    require 'capistrano/puma'
    install_plugin Capistrano::Puma, load_hooks: false
    require "capistrano/rails/migrations"
    # require "capistrano/passenger"
     
    # Load custom tasks from `lib/capistrano/tasks` if you have any defined
    Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
     
     
    主要问题在于使用Apache做解析:
     
    <VirtualHost *:80>
      ServerName crisp-code.com
      DocumentRoot /var/www/crisp-code.com/current/public
     
      # Redirect all requests that don't match a file on disk under DocumentRoot get proxied to Puma
      RewriteEngine On
      RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
      RewriteRule ^/(.*)$ http://127.0.0.1:9951%{REQUEST_URI} [P]
     
      LogLevel warn
      CustomLog ${APACHE_LOG_DIR}/crisp-code.com.access.log combined
      ErrorLog ${APACHE_LOG_DIR}/crisp-code.com.error.log
      # Don't allow client to fool Puma into thinking connection is secure
      RequestHeader unset X-Forwarded-Proto
     
      # Anything under public is open to the world
      <Directory /var/www/crisp-code.com/current/public>
        Satisfy any
        Allow from all
        Require all granted
        Options -MultiViews
      </Directory>
     
      # Disable ETags (https://github.com/h5bp/server-configs-apache/tree/master/doc#configure-etags)
      # Set Expiration date for all assets to one year in the future
      <Location ^/assets/.*$>
        # Use of ETag is discouraged when Last-Modified is present
        Header unset ETag
        FileETag None
        # RFC says only cache for 1 year
        ExpiresActive On
        ExpiresDefault "access plus 1 year"
      </Location>
     
      # Compress HTML on the fly
      AddOutputFilterByType DEFLATE text/html
     
    </VirtualHost>
     
    <VirtualHost *:80>
        ServerAlias www.crisp-code.com
        Redirect 301 / http://crisp-code.com
    </VirtualHost>
    

      

  • 相关阅读:
    用goto做异常处理
    零长度数组的妙用
    DTMF三种模式(SIPINFO,RFC2833,INBAND)
    Myeclipse下的struts2.3.8 配置 保证绝对好用
    Linux内核--内核数据类型
    Linux内核:kthread_create(线程)、SLEEP_MILLI_SEC
    3.4.4 数据预留和对齐(skb_reserve, skb_push, skb_put, skb_pull)
    Linux 2.6内核中新的锁机制--RCU
    Linux中SysRq的使用(魔术键)
    CentOS Linux服务器安全设置
  • 原文地址:https://www.cnblogs.com/tomtang/p/8575023.html
Copyright © 2011-2022 走看看