Ori.livneh has uploaded a new change for review.
https://gerrit.wikimedia.org/r/150873
Change subject: mediawiki: use HHVM module on trusty
......................................................................
mediawiki: use HHVM module on trusty
* Get rid of various $use_hhvm/$jobrunner_hhvm-style parameters. We can't run
MediaWiki on Trusty without HHVM, so the distro version check is both
necessary and sufficient for determining which interpreter we should use.
* For the same reason: include ::mediawiki::hhvm from ::mediawiki if >= Trusty.
* Get rid of mediawiki::jobrunner::hhvm. There is no longer anything unique
about the jobrunner HHVM setup. (We don't want to disable the service either
since we're transitioning to dispatching jobs via FastCGI).
* Lint: alphabetize modules in mediawiki::web::modules; fix indent.
* Get rid of duplicate max_req_workers in mediawiki::web::modules (the modules
class already has to call lookupvar for getting other variables from
mediawiki::web, so there's no reason to duplicate it).
Change-Id: I4aa104920d8121033e664458bb72c59233ef3868
---
M manifests/role/mediawiki.pp
M manifests/site.pp
M modules/mediawiki/manifests/hhvm.pp
D modules/mediawiki/manifests/hhvm/params.pp
M modules/mediawiki/manifests/init.pp
D modules/mediawiki/manifests/jobrunner/hhvm.pp
D modules/mediawiki/manifests/packages/hhvm.pp
M modules/mediawiki/manifests/web.pp
M modules/mediawiki/manifests/web/modules.pp
M modules/mediawiki/templates/apache/modules/mpm_prefork.conf.erb
M modules/mediawiki/templates/apache/modules/mpm_worker.conf.erb
D modules/mediawiki/templates/hhvm/hhvm.ini.erb
12 files changed, 44 insertions(+), 186 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/operations/puppet
refs/changes/73/150873/1
diff --git a/manifests/role/mediawiki.pp b/manifests/role/mediawiki.pp
index 0543ced..fb62624 100644
--- a/manifests/role/mediawiki.pp
+++ b/manifests/role/mediawiki.pp
@@ -81,12 +81,4 @@
runners_upload => 7,
runners_gwt => 1,
}
-
- if $jobrunner_hhvm == undef {
- $jobrunner_hhvm = false
- }
-
- if ($jobrunner_hhvm and versioncmp($::lsbdistrelease, '14.04') > 0) {
- require ::mediawiki::jobrunner::hhvm
- }
}
diff --git a/manifests/site.pp b/manifests/site.pp
index fbb2905..281d814 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -1900,7 +1900,6 @@
$cluster = 'jobrunner'
include role::mediawiki::jobrunner
- include mediawiki::jobrunner::hhvm
}
# mw1017-1052 are apaches (precise)
diff --git a/modules/mediawiki/manifests/hhvm.pp
b/modules/mediawiki/manifests/hhvm.pp
index ea1c674..6c6adec 100644
--- a/modules/mediawiki/manifests/hhvm.pp
+++ b/modules/mediawiki/manifests/hhvm.pp
@@ -1,60 +1,20 @@
-# == Class mediawiki::hhvm
+# == Class: mediawiki::hhvm
#
-# Base class to run an hhvm mediawiki environment.
+# Configures HHVM to serve MediaWiki in FastCGI mode.
#
-# This class will ensure that the hhvm packages and basic dirs are installed.
-# It also ensures the FastCGI is in the desired state and can tweak
-# configuration according to the needs of the dependent class.
-#
-class mediawiki::hhvm(
- $ini_overrides = {
- 'max_execution_time' => 180,
- },
- $service = 'running'
-) {
- # Install hhvm and all needed packages
- include mediawiki::packages::hhvm
+class mediawiki::hhvm {
+ requires_ubuntu('>= trusty')
- file { '/etc/hhvm':
- ensure => directory,
- mode => '0555',
- require => Package['hhvm']
+ class { '::hhvm':
+ user => 'apache',
+ group => 'wikidev',
+ fcgi_settings => {
+ hhvm => { server => { source_root =>
'/usr/local/apache/common/docroot' } },
+ },
}
- file { '/run/hhvm':
- ensure => directory,
- owner => 'apache',
- group => 'apache',
- mode => '0755',
- require => Class['mediawiki::users'],
- }
-
- # This directory contains the bytecode cache and should not be
- # world accessible
- file { '/run/hhvm/cache':
- ensure => directory,
- owner => 'apache',
- group => 'apache',
- mode => '0750',
- before => File['hhvm_config_ini'],
- }
-
- file { '/etc/hhvm/config.hdf':
- ensure => present,
- source => 'puppet:///modules/mediawiki/hhvm/jobrunner.hhvm.hdf',
- }
-
- file { 'hhvm_config_ini':
- path => '/etc/hhvm/php.ini',
- ensure => present,
- content => template('mediawiki/hhvm/hhvm.ini.erb'),
+ alternatives::config { 'php':
+ path => '/usr/bin/hhvm',
require => Package['hhvm'],
- }
-
- # Ensure the fcgi server is stopped
- service { 'hhvm':
- ensure => $service,
- provider => 'upstart',
- require => Class['::mediawiki::packages::hhvm'],
}
}
diff --git a/modules/mediawiki/manifests/hhvm/params.pp
b/modules/mediawiki/manifests/hhvm/params.pp
deleted file mode 100644
index e69de29..0000000
--- a/modules/mediawiki/manifests/hhvm/params.pp
+++ /dev/null
diff --git a/modules/mediawiki/manifests/init.pp
b/modules/mediawiki/manifests/init.pp
index 9482091..5436484 100644
--- a/modules/mediawiki/manifests/init.pp
+++ b/modules/mediawiki/manifests/init.pp
@@ -6,6 +6,10 @@
include ::ssh::server
+ if ubuntu_version('>= trusty') {
+ include ::mediawiki::hhvm
+ }
+
file { '/etc/cluster':
content => $::site,
owner => 'root',
diff --git a/modules/mediawiki/manifests/jobrunner/hhvm.pp
b/modules/mediawiki/manifests/jobrunner/hhvm.pp
deleted file mode 100644
index 89637c8..0000000
--- a/modules/mediawiki/manifests/jobrunner/hhvm.pp
+++ /dev/null
@@ -1,35 +0,0 @@
-# == Class: mediawiki::jobrunner::hhvm
-#
-# Installs and configures hhvm so that it's used to run all jobs
-#
-# This class will ensure that hhvm packages are installed, the fastcgi
-# server is turned off and hhvm is providing /usr/bin/php via the
-# alternatives mechanism. Please note that installation of the
-# alternative will be taken care of by the debian package.
-#
-# This class should be included along with the mediawiki::jobrunner
-# class that will install the runner upstart job and all the rest
-# We also store the bytecode cache (which is persistent) in /run/hhvm
-# which is in tmpfs as a bonus.
-#
-class mediawiki::jobrunner::hhvm {
- class { '::mediawiki::hhvm':
- service => 'stopped',
- ini_overrides => {
- 'hhvm.repo.local.mode' => '--',
- 'max_execution_time' => 86400, # yes, one day.
- }
- }
-
- # temporary while we work out luasandbox issues (bug 68413)
- package { 'lua5.1':
- ensure => present,
- }
-
- # ensure hhvm is the chosen runtime for /usr/bin/php
- alternatives::config { 'php':
- path => '/usr/bin/hhvm',
- require => Package['hhvm']
- }
-
-}
diff --git a/modules/mediawiki/manifests/packages/hhvm.pp
b/modules/mediawiki/manifests/packages/hhvm.pp
deleted file mode 100644
index cf3eab2..0000000
--- a/modules/mediawiki/manifests/packages/hhvm.pp
+++ /dev/null
@@ -1,13 +0,0 @@
-# == Class: mediawiki::packages::hhvm
-#
-# Installs all the packages needed for a working hhvm installation.
-#
-# This class should be directly included wherever you need hhvm to run.
-# It works on Trusty and newer distros.
-#
-class mediawiki::packages::hhvm {
- package { [ 'hhvm', 'hhvm-luasandbox', 'hhvm-fss', 'hhvm-wikidiff2' ]:
- # For now, we want to always install the latest and the shiniest
- ensure => latest
- }
-}
diff --git a/modules/mediawiki/manifests/web.pp
b/modules/mediawiki/manifests/web.pp
index cc94834..2775473 100644
--- a/modules/mediawiki/manifests/web.pp
+++ b/modules/mediawiki/manifests/web.pp
@@ -6,8 +6,8 @@
include ::apache
include ::mediawiki
include ::mediawiki::monitoring::webserver
+ include ::mediawiki::web::modules
- $use_hhvm = ubuntu_version('>= trusty')
$apache_server_limit = 256
if is_integer($workers_limit) {
@@ -16,18 +16,6 @@
$mem_available = to_bytes($::memorytotal) * 0.7
$mem_per_worker = to_bytes('85M')
$max_req_workers = min(floor($mem_available /$mem_per_worker),
$apache_server_limit)
- }
-
- if $use_hhvm {
- class { 'mediawiki::hhvm':
- service => 'running',
- before => Service['apache2']
- }
- }
-
- class { '::mediawiki::web::modules':
- use_hhvm => $use_hhvm,
- max_req_workers => $max_req_workers
}
file { '/etc/apache2/apache2.conf':
diff --git a/modules/mediawiki/manifests/web/modules.pp
b/modules/mediawiki/manifests/web/modules.pp
index 1b813e6..db611a1 100644
--- a/modules/mediawiki/manifests/web/modules.pp
+++ b/modules/mediawiki/manifests/web/modules.pp
@@ -1,38 +1,16 @@
-class mediawiki::web::modules (
- $use_hhvm = $::mediawiki::web::use_hhvm,
- $max_req_workers = $::mediawiki::web::max_req_workers
-)
-{
+class mediawiki::web::modules {
+ include apache::mod::alias
+ include apache::mod::authz_host
include apache::mod::autoindex
include apache::mod::dir
- include apache::mod::setenvif
- include apache::mod::authz_host
include apache::mod::expires
- include apache::mod::rewrite
include apache::mod::headers
- include apache::mod::alias
include apache::mod::mime
+ include apache::mod::rewrite
+ include apache::mod::setenvif
include apache::mod::status
- # Modules we don't enable.
- # Note that deflate and filter are activated deep down in the
- # apache sites, we should probably move them here
- apache::mod_conf { [
- 'cgi',
- 'authn_file',
- 'negotiation',
- 'auth_basic',
- 'authz_default',
- 'authz_groupfile',
- 'authz_user',
- 'deflate',
- 'env',
- 'reqtimeout'
- ]:
- ensure => absent
- }
-
- if $use_hhvm {
+ if ubuntu_version('>= trusty') {
include apache::mod::proxy_fcgi
# This will be useful once we switch to mpm worker. Please keep it.
@@ -44,13 +22,28 @@
mode => '0444',
before => Class['apache::mpm'],
}
-
} else {
include apache::mod::php5
}
+ # Modules we don't enable.
+ # Note that deflate and filter are activated deep down in the
+ # apache sites, we should probably move them here
+ apache::mod_conf { [
+ 'auth_basic',
+ 'authn_file',
+ 'authz_default',
+ 'authz_groupfile',
+ 'authz_user',
+ 'cgi',
+ 'deflate',
+ 'env',
+ 'negotiation',
+ 'reqtimeout',
+ ]:
+ ensure => absent,
+ }
- # This will be useful once we switch to mpm worker. Please keep it.
file { '/etc/apache2/mods-available/mpm_prefork.conf':
ensure => present,
content => template('mediawiki/apache/modules/mpm_prefork.conf.erb'),
@@ -114,5 +107,4 @@
group => 'root',
mode => '0444',
}
-
}
diff --git a/modules/mediawiki/templates/apache/modules/mpm_prefork.conf.erb
b/modules/mediawiki/templates/apache/modules/mpm_prefork.conf.erb
index 5fac8d2..12af930 100644
--- a/modules/mediawiki/templates/apache/modules/mpm_prefork.conf.erb
+++ b/modules/mediawiki/templates/apache/modules/mpm_prefork.conf.erb
@@ -9,7 +9,7 @@
MinSpareServers 5
MaxSpareServers 20
ServerLimit <%=
scope.lookupvar('::mediawiki::web::apache_server_limit') %>
- MaxClients <%= @max_req_workers %>
+ MaxClients <%=
scope.lookupvar('::mediawiki::web::max_req_workers') %>
<IfDefine SLOW>
MaxClients 5
</IfDefine>
diff --git a/modules/mediawiki/templates/apache/modules/mpm_worker.conf.erb
b/modules/mediawiki/templates/apache/modules/mpm_worker.conf.erb
index 9e465ab..901793a 100644
--- a/modules/mediawiki/templates/apache/modules/mpm_worker.conf.erb
+++ b/modules/mediawiki/templates/apache/modules/mpm_worker.conf.erb
@@ -12,11 +12,11 @@
<IfModule mpm_worker_module>
ServerLimit <%=
(scope.lookupvar('::mediawiki:::web::apache_server_limit') / 25).to_i + 1 %>
StartServers 2
- MinSpareThreads <%= [@max_req_workers, 25].min %>
- MaxSpareThreads <%= @max_req_workers %>
+ MinSpareThreads <%=
[scope.lookupvar('::mediawiki::web::max_req_workers').to_i, 25].min %>
+ MaxSpareThreads <%=
scope.lookupvar('::mediawiki::web::max_req_workers') %>
ThreadLimit 256
ThreadsPerChild 25
- MaxRequestWorkers <%= @max_req_workers %>
+ MaxRequestWorkers <%=
scope.lookupvar('::mediawiki::web::max_req_workers') %>
MaxConnectionsPerChild 10000
</IfModule>
diff --git a/modules/mediawiki/templates/hhvm/hhvm.ini.erb
b/modules/mediawiki/templates/hhvm/hhvm.ini.erb
deleted file mode 100644
index d718ee4..0000000
--- a/modules/mediawiki/templates/hhvm/hhvm.ini.erb
+++ /dev/null
@@ -1,29 +0,0 @@
-; PHP options
-date.timezone = "UTC"
-include_path = '.:/usr/share/php:/usr/share/pear'
-pid = /run/hhvm/cache/hhvm.pid
-
-; Extensions
-hhvm.dynamic_extension_path = /usr/lib/hphp/extensions/20140702
-hhvm.enable_zend_compat = true
-hhvm.mysql.typed_results = false
-
-; Runtime
-hhvm.enable_obj_destruct_call = true
-
-; JIT
-hhvm.jit = false
-hhvm.jit_afrozen_size = 100000000
-
-; Logging
-hhvm.log.always_log_unhandled_exceptions = true
-hhvm.log.level = Error
-hhvm.log.runtime_error_reporting_level = 8191
-hhvm.log.use_syslog = true
-
-; Repo
-hhvm.repo.central.path = /run/hhvm/hhvm.hhbc.sq3
-
-<% @ini_overrides.sort.each do |k,v| -%>
-<%= k %> = <%= v %>
-<% end -%>
--
To view, visit https://gerrit.wikimedia.org/r/150873
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4aa104920d8121033e664458bb72c59233ef3868
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ori.livneh <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits