Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

nginx support, and able to skip installing php in case we already did it #1

Open
wants to merge 6 commits into from

2 participants

@ivey

No description provided.

@mdxp
Owner

Thank you very much for adding support for nginx. Unfortunately the config as generated by the cookbook will not generate a functional site. Didn't had a lot of time to troubleshoot this but it looks like you need to have fastcgi configured before on 127.0.0.1:9000 for nginx/drupal to work. Not sure if there is something else.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
This page is out of date. Refresh to see the latest.
View
2  attributes/default.rb
@@ -26,6 +26,8 @@
default[:drupal][:site][:admin] = "admin"
default[:drupal][:site][:pass] = "drupaladmin"
default[:drupal][:site][:name] = "Drupal7"
+default[:drupal][:webserver] = "apache2"
+default[:drupal][:skip_php] = false
::Chef::Node.send(:include, Opscode::OpenSSL::Password)
View
4 metadata.rb
@@ -8,11 +8,11 @@
recipe "drupal::cron", "Sets up the default drupal cron"
recipe "drupal::drush", "Installs drush - a command line shell and scripting interface for Drupal"
-%w{ php apache2 mysql openssl }.each do |cb|
+%w{ php apache2 mysql openssl nginx }.each do |cb|
depends cb
end
-%w{ debian ubuntu }.each do |os|
+%w{ debian ubuntu centos redhat amazon scientific }.each do |os|
supports os
end
View
54 recipes/default.rb
@@ -18,8 +18,15 @@
# limitations under the License.
#
-include_recipe %w{apache2 apache2::mod_php5 apache2::mod_rewrite apache2::mod_expires}
-include_recipe %w{php php::module_mysql php::module_gd}
+if node[:drupal][:webserver] == "apache2"
+ include_recipe %w{apache2 apache2::mod_php5 apache2::mod_rewrite apache2::mod_expires}
+elsif node[:drupal][:webserver] == "nginx"
+ # include_recipe %w{nginx}
+else
+ log("Only webservers currently supported: apache2 and nginx. You have: #{node[:drupal][:webserver]}") { level :warn }
+end
+
+include_recipe %w{php php::module_mysql php::module_gd} unless node[:drupal][:skip_php]
include_recipe "drupal::drush"
include_recipe "mysql::server"
@@ -44,10 +51,7 @@
execute "create #{node[:drupal][:db][:database]} database" do
command "/usr/bin/mysqladmin -u root -p#{node[:mysql][:server_root_password]} create #{node[:drupal][:db][:database]}"
- not_if do
- m = Mysql.new("localhost", "root", node[:mysql][:server_root_password])
- m.list_dbs.include?(node[:drupal][:db][:database])
- end
+ not_if "/usr/bin/mysql -u root -p#{node[:mysql][:server_root_password]} -e 'show databases' | grep -q #{node[:drupal][:db][:database]}"
end
execute "download-and-install-drupal" do
@@ -84,16 +88,34 @@
end
end
-web_app "drupal" do
- template "drupal.conf.erb"
- docroot "#{node[:drupal][:dir]}"
- server_name server_fqdn
- server_aliases node.fqdn
-end
-
include_recipe "drupal::cron"
-execute "disable-default-site" do
- command "sudo a2dissite default"
- notifies :reload, resources(:service => "apache2"), :delayed
+
+if node[:drupal][:webserver] == "apache2"
+ web_app node[:drupal][:site][:name] do
+ template "drupal.conf.erb"
+ docroot "#{node[:drupal][:dir]}"
+ server_name server_fqdn
+ server_aliases node.fqdn
+ end
+
+ execute "disable-default-site" do
+ command "sudo a2dissite default"
+ notifies :reload, resources(:service => "apache2"), :delayed
+ end
+end
+
+if node[:drupal][:webserver] == "nginx"
+ template "#{node[:nginx][:dir]}/sites-enabled/#{node[:drupal][:site][:name]}" do
+ source "sites.conf.erb"
+ owner "root"
+ group "root"
+ mode "0600"
+ variables(
+ :docroot => "#{node[:drupal][:dir]}",
+ :server_name => server_fqdn
+ )
+ end
+
+ nginx_site node[:drupal][:site][:name]
end
View
2  recipes/drush.rb
@@ -18,7 +18,7 @@
# limitations under the License.
#
-include_recipe %w{php php::module_mysql php::module_gd}
+include_recipe %w{php php::module_mysql php::module_gd} unless node[:drupal][:skip_php]
remote_file "#{node[:drupal][:src]}/drush-All-versions-#{node[:drupal][:drush][:version]}.tar.gz" do
checksum node[:drupal][:drush][:checksum]
View
40 templates/default/sites.conf.erb
@@ -0,0 +1,40 @@
+server {
+ listen 80;
+ server_name <%= @server_name %>;
+
+ access_log <%= node[:nginx][:log_dir] %>/<%= @server_name %>.access.log;
+
+ root <%= @docroot %>;
+ index index.php;
+
+ if (!-e $request_filename) {
+ rewrite ^/(.*)$ /index.php?q=$1 last;
+ break;
+ }
+
+ location ~ (\.php)$ {
+ include fastcgi_params;
+ fastcgi_index index.php;
+ fastcgi_connect_timeout 60;
+ fastcgi_send_timeout 180;
+ fastcgi_read_timeout 180;
+ fastcgi_buffer_size 128k;
+ fastcgi_buffers 4 256k;
+ fastcgi_busy_buffers_size 256k;
+ fastcgi_temp_file_write_size 256k;
+ fastcgi_intercept_errors on;
+ fastcgi_pass 127.0.0.1:9000;
+ }
+
+## Images and static content is treated different
+ location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
+ access_log off;
+ expires 30d;
+ }
+
+
+## Disable viewing .htaccess & .htpassword
+ location ~ /\.ht {
+ deny all;
+ }
+}
Something went wrong with that request. Please try again.