2013-08-06 5 views
9

मैं एक nginx वेबसर्वर जोड़ने के लिए एडब्ल्यूएस ओप्सवर्क में एक कस्टम परत का उपयोग करने की कोशिश कर रहा हूं।एडब्ल्यूएस ओप्सवर्क कस्टम लेयर परिनियोजन

मैंने सफलतापूर्वक परत बनाई है, मैंने अपना ऐप जीआईटी (रेपो पर कोई पासवर्ड नहीं) के माध्यम से जोड़ा है, लेकिन जब मैं कमांड को तैनात करता हूं तो "सफल" होता है लेकिन मुझे अपने सर्वर पर कोई भी कोड नहीं दिखता है।

कस्टम परत में, केवल तैनाती नुस्खा "तैनाती :: डिफ़ॉल्ट" है।

क्या मुझे तैनाती को संभालने के लिए एक कस्टम नुस्खा चाहिए?

इसके अलावा, मैं तैनाती कहां "कहां" कॉन्फ़िगर कर सकता हूं? मैं ऑब्जेक्ट्स का उपयोग करने के बजाय अन्य दस्तावेज़ों को हमेशा तैनात करने के बजाय अपने दस्तावेज़ रूट को चुनना पसंद करूंगा।

इस पर किसी भी मदद के लिए धन्यवाद।

उत्तर

1

हां, आपको कस्टम परत के लिए अपना स्वयं का कस्टम तैनाती नुस्खा लिखना होगा। आपका तैनाती नुस्खा कॉन्फ़िगर कर सकता है कि तैनाती कहाँ जाती है और आपके सॉफ़्टवेयर को तैनात करने के लिए आवश्यक कोई भी कदम। वैकल्पिक रूप से आप OpsWorks स्थिर वेब सर्वर परत का विस्तार कर सकते हैं, जो आपकी आवश्यकताओं को पूरा करने के लिए, Nginx को तैनात करता है।

13

मैंने एक साधारण नुस्खा लिखा है जो ऐप को पूरी तरह से स्वचालित रूप से तैनात करने के लिए ओप्सवर्क्स nginx नुस्खा का उपयोग करता है। यह आपके कॉन्फ़िगर किए गए एससीएम से बाहर निकलता है, एक नया nginx vhost बनाता है और यदि आवश्यक हो तो nginx को पुनः लोड करता है।

परत में तैनाती config करने के लिए यह नुस्खा जोड़ें:

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 vhost टेम्पलेट अधिलेखित के लिए, बस nginx नामक एक नया रसोई की किताब बना सकते हैं और एक फ़ाइल जोड़ने site.erbtemplates/default में। Opsworks स्वचालित रूप से इस टेम्पलेट का उपयोग करेंगे।

मेरे site.erb तैनाती appserver :: तैनाती के लिए रसोई की किताब में (संगीतकार के लिए) इस

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 %> 

मेरे Berksfile की तरह लग रहा

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

cookbook 'composer', '~> 1.0.4' 

मेरे metadata.rb नुस्खा

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

जब आप किसी प्रश्न का बहुत विस्तार से जवाब देते हैं तो यह वाकई बेकार हो जाता है लेकिन आपका जवाब न तो स्वीकार किया जाता है और न ही आपको बस 'धन्यवाद' कहा जाता है। खैर .. अन्य एसओएफ उपयोगकर्ताओं की तरफ से धन्यवाद। – scaryguy

संबंधित मुद्दे