apache - moduli


Apache - Asentaa Apache2:n ja PHP:n. Lisää myös 'webadmin'-käyttäjän, jonka 'home' kansioon luo varsiaisen www-kansion, joka on linkitetty '/var/www/' kansioon. Ylläpitää Apache2:sta php-tuella.


Ladattavissa täältä.

Käyttöjärjestelmät:

Testattu seuraavilla käyttöjärjestelmillä:


Xubuntu 12.10 32-bit

Ubuntu 12.04 LTS 64-bit

Debian 6.0 64-bit


Rakenne:

apache
├── manifests
│   ├── init.pp
│   ├── install.pp
│   ├── params.pp
│   ├── service.pp
│   ├── vhost.pp
│   └── webadmin.pp
├── README
└── templates
    └── vhost.conf.erb

README

#########################
# Puppet module: apache #
#########################

This module installs and manages apache2 and php.
It also adds virtual host and user to control websites.

######################
# TODO before using #
######################

Check apache::params for wanted specifications.
Change atleast '$webadmin_pass'.

################
# Sample usage #
################

1.
include apache

2.
apache::vhost { 'website.com':
        port     => '80',
        docroot  => '/var/www/website.com',
        priority => '000',
}

##########
# Author #
##########

Made by Sampo Tyllilä <sampo.tyllila@gmail.com>

###########
# License #
###########

This software is distributed under the GNU General Public License version 2 or any later version.
http://www.gnu.org/licenses/

Manifests kansion sisältö:


init.pp

# == Class: apache
#
# This module manages apache2 and php.
#
# === Parameters
#
# There are no default parameters for this class. All module parameters are managed
# via the apache::params class.
#
# === Examples
#
# See README for details.
#
# === Author
#
# Sampo Tyllilä 
#
class apache {
        include apache::params, apache::install, apache::service, apache::webadmin
}

install.pp

# == Class: apache::install
#
# This class installs apache2 and php.
#
# === Parameters
#
# [*package_apache*] - The name of apache2 package to install.
# [*package_php*]    - The name of php package to install.
#
# === Author
#
# Sampo Tyllilä 
#
class apache::install {
        package { $apache::params::package_apache:
                ensure     => latest,
        }

        package { $apache::params::package_php:
                ensure     => latest,
        }
}

service.pp

# == Class: apache::service
#
# This class manages APACHE2 service.
#
# === Parameters
#
# [*service*] - The name of the managed service.
#
# === Author
#
# Sampo Tyllilä 
#
class apache::service {
        service { $apache::params::service:
                ensure  => running,
                enable  => true,
                require => Class['apache::install'],
        }
}

webadmin.pp

# == Class: apache::webadmin
#
# This class manages user that is used to control websites.
#
# === Parameters
#
# [*webadmin*]       - The user that is used to control wesites.
# [*webadmin_pass*]  - The password for the user that is used to control websites.
#
# === Author
#
# Sampo Tyllilä 
#
class apache::webadmin {
        user { $apache::params::webadmin:
                ensure     => present,
                shell      => '/bin/bash',
                password   => $apache::params::webadminpass,
                managehome => true,
        }
}

params.pp

# == Class: apache::params
#
# This class manages apache modules parameters.
#
# === Parameters
#
# [*package_apache*] - The name of apache2 package to install.
# [*service*]        - The name of apache2 service.
# [*package_php*]    - The name of php package to install.
# [*webadmin*]       - The name of the user that is used to control wesites.
# [*webadmin_pass*]  - The password for the user that is used to control websites.
#
# === Author
#
# Sampo Tyllilä 
#
class apache::params {
        $package_apache = ['apache2', 'apache2.2-common']
        $service        = 'apache2'
        $package_php    = ['php5', 'libapache2-mod-php5', 'php5-mysql']
        $webadmin       = 'webadmin'
        $webadminpass   = '$6$PassHash'
}

vhost.pp

# == Define: apahce::vhost
#
# This class installs Apache Virtual Hosts
#
# === Parameters
#
# [*port*]     - The port to configure the host on.
# [*docroot*]  - The docroot for the virtual host.
# [*priority*] - The priority of the virtual host.
# [*template*] - The tempate to use to create vhost.
# [*name*]     - The virtual hosts name.
# [*webadmin*] - The name of the user that is used to control wesites.
#
# === Author
#
# Sampo Tyllilä 
#
define apache::vhost (
        $port,
        $docroot,
        $priority,
        $virtualhost = '*',
        $template = 'apache/vhost.conf.erb'
)       {

        include apache

        file { '/etc/apache2/sites-enabled/000-default':
                ensure => absent,
        }

        file { "/etc/apache2/sites-available/${name}":
                ensure  => file,
                content => template($template),
                owner   => 'root',
                group   => 'root',
                mode    => '0644',
                require => Class['apache::install'],
                notify  => Class['apache::service'],
         }

        file { "/etc/apache2/sites-enabled/${priority}-${name}":
                ensure  => link,
                target  => "/etc/apache2/sites-available/${name}",
                require => File["/etc/apache2/sites-available/${name}"],
        }

        file { "/home/${apache::params::webadmin}/${name}":
                ensure  => directory,
                replace => false,
                owner   => $apache::params::webadmin,
                group   => $apache::params::webadmin,
                mode    => '0644',
                require => Class['apache::webadmin'],
        }

        file { $docroot:
                ensure  => link,
                target  => "/home/${apache::params::webadmin}/${name}",
                require => File["/home/${apache::params::webadmin}/${name}"],
        }
}

Templates kansion sisältö:


vhost.conf.erb

# MANAGED BY PUPPET!
#
<VirtualHost <%= virtualhost %>:<%= port %>>
        ServerAdmin webmaster@localhost

        DocumentRoot <%= docroot %>
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory <%= docroot %>>
                Options FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                ServerSignature Off
        </Directory>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/<%= name %>_error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/<%= name %>_access.log combined
</VirtualHost>