You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by Sam Ruby <ru...@apache.org> on 2016/03/05 22:08:16 UTC

[whimsy.git] [1/1] Commit de7a1b3: rebase 'advanced' configuration on vhosts

Commit de7a1b3e1d29629982ce9134e45a58303b44a544:
    rebase 'advanced' configuration on vhosts


Branch: refs/heads/master
Author: Sam Ruby <ru...@intertwingly.net>
Committer: Sam Ruby <ru...@intertwingly.net>
Pusher: rubys <ru...@apache.org>

------------------------------------------------------------
DEVELOPMENT.md                                               | ++++++ ----------
www/test/vhost-generator.cgi                                 | ++++++++++++++ -
------------------------------------------------------------
89 changes: 51 additions, 38 deletions.
------------------------------------------------------------


diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md
index db85bc4..6e5dc2e 100644
--- a/DEVELOPMENT.md
+++ b/DEVELOPMENT.md
@@ -183,47 +183,33 @@ command `bundle install`.
 Advanced configuration
 ======================
 
-Note: these instructions are for Ubuntu.  Tailor as necessary for Mac OSX or
-Red Hat.
+Setting things up so that the **entire** whimsy website is available as
+a virtual host, complete with authentication:
 
-Setting things up so that the entire whimsy website is available as
-http://localhost/whimsy/:
-
-1. Add an alias
-
-        Alias /whimsy /srv/whimsy/www
-        <Directory /srv/whimsy/www>
-           Order allow,deny
-           Allow from all
-           Require all granted
-           Options Indexes FollowSymLinks MultiViews ExecCGI
-           MultiViewsMatch Any
-           DirectoryIndex index.html index.cgi
-           AddHandler cgi-script .cgi
-        </Directory>
-
-2. Configure `suexec` by editing `/etc/apache2/suexec/www-data`:
-
-        /srv
-        public_html
-
-3. Install passenger by running either running 
+1. Install passenger by running either running 
    `passenger-install-apache2-module` and following its instructions, or
    by visiting https://www.phusionpassenger.com/library/install/apache/install/oss/.
 
-4. Configure individual rack applications:
-
-        Alias /whimsy/board/agenda/ /srv/whimsy/www/board/agenda
-        <Location /whimsy/board/agenda>
-          PassengerBaseURI /whimsy/board/agenda
-          PassengerAppRoot /srv/whimsy/www/board/agenda
-          PassengerAppEnv development
-          Options -Multiviews
-        </Location>
-
-5. (Optional) run a service that will restart your passenger applications
-   whenever the source to that application is modified by creating a
-   `~/.config/upstart/whimsy-listener` file with the following contents:
+2. Visit [vhost-generator](https://whimsy.apache.org/test/vhost-generator) to
+   generate a custom a vhost definition, and to see which apache modules need
+   to be installed.
+
+   a. On Ubuntu, place the generated vhost definition into
+      `/etc/apache2/sites-available` and enable the site using `a2ensite`.
+      Enable the modules you need using `a2ensite`.  Restart the Apache httpd
+      web server using `service apache2 restart`.
+
+   b. On Mac OS/X, place the generated vhost definition into
+      `/private/etc/apache2/extra/httpd-vhosts.conf`.  Edit
+      `/etc/apache2/httpd.conf` and uncomment out the line that includes
+      `httpd-vhosts.conf`, and
+      enable the modules you need by uncommenting out the associated lines.
+      Restart the Apache httpd web server using `apachectl restart`.
+
+3. (Optional) run a service that will restart your passenger applications
+   whenever the source to that application is modified.  On Ubuntu, this is
+   done  by creating a `~/.config/upstart/whimsy-listener` file with the
+   following contents:
 
        description "listen for changes to whimsy applications"
        start on dbus SIGNAL=SessionNew
diff --git a/www/test/vhost-generator.cgi b/www/test/vhost-generator.cgi
index d67fc90..f7f49b4 100755
--- a/www/test/vhost-generator.cgi
+++ b/www/test/vhost-generator.cgi
@@ -6,12 +6,28 @@ require 'wunderbar'
 if ENV['REQUEST_METHOD'].upcase == 'POST'
   cgi = CGI.new
   cgi.out 'type' => 'text/plain' do
+    # extract parameters
     hostname = cgi.params['hostname'].first
     docroot = cgi.params['docroot'].first
 
+    # read live configuration
     conf = File.read(Dir['/etc/apache2/sites-available/*whimsy*.conf'].first)
 
-    conf[/<VirtualHost (.*)>/, 1] = hostname
+    # enable all interfaces
+    conf[/<VirtualHost (.*):\d+>/, 1] = '*'
+
+    # replace hostname
+    conf[/ServerName (.*)/, 1] = hostname
+
+    # don't override error or custom logs
+    conf[/()ErrorLog/, 1] = '# '
+    conf[/()CustomLog/, 1] = '# '
+
+    # disable Passenger Default user and group
+    conf[/()PassengerDefaultUser/, 1] = '# '
+    conf[/()PassengerDefaultGroup/, 1] = '# '
+
+    # global replace docroot
     conf.gsub! '/srv/whimsy', docroot.chomp('/')
 
     conf
@@ -31,6 +47,9 @@ _html do
     select {width: 3.06in}
     input[type=checkbox] {margin-left: 6em; width: 1em}
     input[type=submit] {margin-top: 0.5em; margin-left: 3em; width: 8em}
+
+    ul {padding: 0; display: flex; flex-wrap: wrap}
+    li {width: 10%; list-style-type: none; margin: 0 2em}
   }
 
   _form method: 'post' do
@@ -53,12 +72,20 @@ _html do
 
       _input type: 'submit', value: 'Submit'
     end
+
+    _h3 'Modules required'
+    _ul do
+      Dir['/etc/apache2/mods-enabled/*.conf'].sort.each do |conf|
+        _li File.basename(conf, '.conf')
+      end
+    end
   end
 
   _script %{
     var inputs = Array.prototype.slice.call(document.querySelectorAll("input"));
     var submit = document.querySelector("input[type=submit]");
 
+    // only enable submit button when all inputs are valid
     inputs.forEach(function(input) {
       input.addEventListener("input", function() {
         if (inputs.some(function(input) {