2013-08-06 26 views
9

Nginx web sunucusu eklemek için AWS Opsworks uygulamasında özel bir katman kullanmaya çalışıyorum.AWS Opsworks Özel Katman Dağıtımı

Katmanı başarıyla oluşturdum, uygulamamı GIT üzerinden (repoda parola yok) ekledim, ancak dağıttığımda "başarılı" ancak sunucumdaki kodumdan hiçbirini göremiyorum. Özel katmanında

, sadece dağıtmak tarifi "dağıtmak :: varsayılan".

Ben dağıtım işlemek için özel bir tarifi gerekiyor mu? Ayrıca

, nasıl yapılandırılacağı yapmak dağıtım gider "nerede"? Opsworks'ün her zaman, her zaman dağıtmak istediği konumu kullanmak yerine belge kökümü seçmeyi tercih ederim.

Bu konuda HERHANGİ yardım için teşekkürler.

cevap

1

Evet, özel bir katman için kendi özel dağıtma tarifi yazmak gerekir. Dağıtım uygulamanız, dağıtımın nereye gittiğini ve yazılımınızı dağıtmak için gereken adımları yapılandırabilir. Alternatif olarak, gereksinimlerinizi karşılamak için Nginx'i dağıtan OpsWorks statik web sunucusu katmanını genişletebilirsiniz.

13

Ben tam otomatik olarak uygulamayı dağıtmak için Opsworks nginx tarifi kullanan basit bir reçete yazdım. Yapılandırılmış SCM'den kontrol eder, yeni bir nginx vhost oluşturur ve gerekirse nginx'i yeniden yükler.

katmanda dağıtma config bu tarifi ekleyin:

deploy.rb

include_recipe "deploy" 
include_recipe "php5" 

node[:deploy].each do |application, deploy| 

    Chef::Log.info("Deploying application #{application} on #{node[:opsworks][:instance][:hostname]}") 

    if deploy[:application_type] != 'php' 
    Chef::Log.warn("Skipping deploy::web application #{application} as it is not a PHP app") 
    next 
    end 

    opsworks_deploy_dir do 
    user deploy[:user] 
    group deploy[:group] 
    path deploy[:deploy_to] 
    end 

    opsworks_deploy do 
    app application 
    deploy_data deploy 
    end 

    nginx_web_app application do 
    application deploy 
    end 

    Chef::Log.info("Running composer update on #{deploy[:deploy_to]}") 
    composer_update do 
    path deploy[:deploy_to]} 
    end 
end 

nginx sankon şablonunun üzerine yazmak için sadece nginx adlı yeni yemek kitabı oluşturmak ve bir dosya ekleyin site.erbtemplates/default. Opsworks bu şablonu otomatik olarak kullanır.

Benim site.erb dağıtmak appserver :: dağıtmak için yemek kitabı (besteci için) bu

server { 
    listen 80; 
    server_name <%= @application[:domains].join(" ") %> <%= node[:hostname] %>; 
    access_log <%= node[:nginx][:log_dir] %>/<%= @application[:domains].first %>.access.log; 

    root <%= @application[:absolute_document_root] %>; 

    location/{ 
    try_files $uri /index.php?url=$uri&$args; 
    } 

    location ~ \.php { 
     try_files $uri =404; 

     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 

     include fastcgi_params; 
    } 

    # Block all svn access 
    if ($request_uri ~* ^.*\.svn.*$) { 
    return 404; 
    } 

    # Block all git access 
    if ($request_uri ~* ^.*\.git.*$) { 
    return 404; 
    } 

    location /nginx_status { 
    stub_status on; 
    access_log off; 
    allow 127.0.0.1; 
    deny all; 
    } 

} 

<% if @application[:ssl_support] %> 
server { 
    listen 443; 
    server_name <%= @application[:domains].join(" ") %> <%= node[:hostname] %>; 
    access_log <%= node[:nginx][:log_dir] %>/<%= @application[:domains].first %>-ssl.access.log; 

    ssl on; 
    ssl_certificate <%= node[:nginx][:dir] %>/ssl/<%= @application[:domains].first %>.crt; 
    ssl_certificate_key <%= node[:nginx][:dir] %>/ssl/<%= @application[:domains].first %>.key; 
    <% if @application[:ssl_certificate_ca] -%> 
    ssl_client_certificate <%= node[:nginx][:dir] %>/ssl/<%= @application[:domains].first %>.ca; 
    <% end -%> 

    location/{ 
    try_files $uri /index.php?url=$uri&$args; 
    } 

    location ~ \.php { 
     try_files $uri =404; 

     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 

     include fastcgi_params; 
    } 

    # Block all svn access 
    if ($request_uri ~* ^.*\.svn.*$) { 
    return 404; 
    } 

    # Block all git access 
    if ($request_uri ~* ^.*\.git.*$) { 
    return 404; 
    } 
} 
<% end %> 

Benim Berksfile gibi

source "https://supermarket.getchef.com" 

cookbook 'composer', '~> 1.0.4' 

My metadata.rb görünüyor tarifi

name    'appserver' 
maintainer  'Michel Feldheim' 
description  'Setting up the appserver environment' 
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) 
version   '0.1.0' 

depends   "nginx" 
depends   "php5" 
+6

Bir soruyu çok ayrıntılı bir şekilde cevapladığınızda gerçekten berbat ama cevabınız kabul edilmiyor ya da basitçe 'teşekkür ederim' diyorsunuz. İyi .. Diğer SOF kullanıcıları adına teşekkür ederiz. – scaryguy