Merge pull request #130 from cytopia/REL-0.12

Rel 0.12
This commit is contained in:
cytopia 2017-10-10 15:45:38 +02:00 committed by GitHub
commit c04fa23578
42 changed files with 623 additions and 811 deletions

View File

@ -1,3 +0,0 @@
<?php
// Fix DocumentRoot for VirtualDocumentRoot Hosts
$_SERVER['DOCUMENT_ROOT'] = str_replace($_SERVER['SCRIPT_NAME'], '', $_SERVER['SCRIPT_FILENAME']);

View File

@ -1,3 +0,0 @@
<?php
// Fix DocumentRoot for VirtualDocumentRoot Hosts
$_SERVER['DOCUMENT_ROOT'] = str_replace($_SERVER['SCRIPT_NAME'], '', $_SERVER['SCRIPT_FILENAME']);

View File

@ -1,23 +0,0 @@
CustomLog "/var/log/apache-2.2/access_log" combined
ErrorLog "/var/log/apache-2.2/error_log"
LogLevel warn
AddDefaultCharset UTF-8
# No DNS
HostnameLookups Off
#
Timeout 60
KeepAlive On
KeepAliveTimeout 10
MaxKeepAliveRequests 100
#
#
EnableMMAP Off
EnableSendfile Off
#
#
#
#
XSendFile On
XSendFilePath /shared/httpd

View File

@ -1,6 +0,0 @@
#### PHP-FPM config ####
AddType application/x-httpd-fastphp5 .php
Action application/x-httpd-fastphp5 /php5-fcgi
Alias /php5-fcgi /usr/local/bin/php-fcgi
FastCgiExternalServer /usr/local/bin/php-fcgi -host php:9000 -pass-header Authorization

View File

@ -1,40 +0,0 @@
##
## Default Host for http://localhost
##
NameVirtualHost *:80
<VirtualHost _default_:80>
ServerName localhost
ServerAlias 127.0.0.1
ServerAlias 172.16.238.*
ServerAlias httpd
ServerAdmin root@localhost
ErrorLog /var/log/apache-2.2/devilbox-error.log
CustomLog /var/log/apache-2.2/devilbox-access.log combined
DirectoryIndex index.php index.html
DocumentRoot "/var/www/default/htdocs"
<Directory "/var/www/default/htdocs">
DirectoryIndex index.php index.html
AllowOverride All
Options All
RewriteEngine on
RewriteBase /
Order allow,deny
Allow from all
</Directory>
<Location /devilbox-httpd-status>
SetHandler server-status
Order allow,deny
Allow from all
</Location>
</VirtualHost>

View File

@ -1,44 +0,0 @@
##
## Default Mass Virtual Host
##
<VirtualHost *:80>
# Get the server name from the Host: header
UseCanonicalName Off
ServerName localhost
ServerAlias *.*
ServerAdmin root@localhost
# Required for DNS checking
SetEnvIf Origin "http(s)?://(domain1.org|localhost|127.0.0.1|httpd)$" AccessControlAllowOrigin=$0$1
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
LogFormat "%V;%h;%l;%u;%t;\"%r\";%>s;%b;\"%{Referer}i\";\"%{User-agent}i\"" vcommon
CustomLog "/var/log/apache-2.2/projects-access.log" vcommon
ErrorLog /var/log/apache-2.2/projects-error.log
DirectoryIndex index.php index.html
# When using VirtualDocumentRoot the PHP Env var DOCUMENT_ROOT
# is not filled, so we need to do that manually with a custom script.
VirtualDocumentRoot /shared/httpd/%-2+/htdocs/
php_admin_value auto_prepend_file /opt/bin/fix-virtual-docroot.php
# Devilbox API endpoint
Alias "/devilbox-api" "/var/www/default/api/devilbox-api"
<Directory "/shared/httpd/*/htdocs/">
DirectoryIndex index.php index.html
AllowOverride All
Options All
RewriteEngine on
RewriteBase /
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

View File

@ -1,23 +0,0 @@
CustomLog "/var/log/apache-2.4/access_log" combined
ErrorLog "/var/log/apache-2.4/error_log"
LogLevel warn
AddDefaultCharset UTF-8
# No DNS
HostnameLookups Off
#
Timeout 60
KeepAlive On
KeepAliveTimeout 10
MaxKeepAliveRequests 100
#
#
EnableMMAP Off
EnableSendfile Off
#
#
#
#
XSendFile On
XSendFilePath /shared/httpd

View File

@ -1,17 +0,0 @@
#### PHP-FPM config ####
# enablereuse
# Defining a worker will improve performance
# And in this case, re-use the worker (dependent on support from the fcgi application)
# If you have enough idle workers, this would only improve the performance marginally
#
# enablereuse requires Apache 2.4.11 or later
#<Proxy "fcgi://php:9000/" enablereuse=on max=10></Proxy>
<FilesMatch "\.php$">
Require all granted
# Pick one of the following approaches
# Use the standard TCP socket
SetHandler "proxy:fcgi://php:9000"
# If your version of httpd is 2.4.9 or newer (or has the back-ported feature), you can use the unix domain socket
#SetHandler "proxy:unix:/path/to/app.sock|fcgi://localhost/:9000"
</FilesMatch>

View File

@ -1,42 +0,0 @@
##
## Default Host for http://localhost
##
<VirtualHost _default_:80>
ServerName localhost
ServerAlias 127.0.0.1
ServerAlias 172.16.238.*
ServerAlias httpd
ServerAdmin root@localhost
ErrorLog /var/log/apache-2.4/devilbox-error.log
CustomLog /var/log/apache-2.4/devilbox-access.log combined
DirectoryIndex index.php index.html
DocumentRoot "/var/www/default/htdocs"
<Directory "/var/www/default/htdocs">
DirectoryIndex index.php index.html
AllowOverride All
Options All
RewriteEngine on
RewriteBase /
Order allow,deny
Allow from all
Require all granted
</Directory>
<Location /devilbox-httpd-status>
SetHandler server-status
Order allow,deny
Allow from all
Require all granted
</Location>
</VirtualHost>

View File

@ -1,45 +0,0 @@
##
## Default Mass Virtual Host
##
<VirtualHost *:80>
# Get the server name from the Host: header
UseCanonicalName Off
ServerName localhost
ServerAlias *.*
ServerAdmin root@localhost
# Required for DNS checking
SetEnvIf Origin "http(s)?://(domain1.org|localhost|127.0.0.1|httpd)$" AccessControlAllowOrigin=$0$1
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
LogFormat "%V;%h;%l;%u;%t;\"%r\";%>s;%b;\"%{Referer}i\";\"%{User-agent}i\"" vcommon
CustomLog "/var/log/apache-2.4/projects-access.log" vcommon
ErrorLog /var/log/apache-2.4/projects-error.log
DirectoryIndex index.php index.html
# When using VirtualDocumentRoot the PHP Env var DOCUMENT_ROOT
# is not filled, so we need to do that manually with a custom script.
VirtualDocumentRoot /shared/httpd/%-2+/htdocs/
php_admin_value auto_prepend_file /opt/bin/fix-virtual-docroot.php
# Devilbox API endpoint
Alias "/devilbox-api" "/var/www/default/api/devilbox-api"
<Directory "/shared/httpd/*/htdocs/">
DirectoryIndex index.php index.html
AllowOverride All
Options All
RewriteEngine on
RewriteBase /
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>

View File

@ -1,8 +0,0 @@
charset utf-8;
send_timeout 60;
keepalive_timeout 10;
sendfile off;
tcp_nopush on;
tcp_nodelay on;

View File

@ -1,77 +0,0 @@
##
## Default Host for http://localhost
##
server {
listen 80 default_server;
server_name _;
server_name localhost;
server_name 127.0.0.1;
server_name httpd;
server_name 172.16.238.*;
# Root directive
root /var/www/default/htdocs;
index index.php;
access_log /var/log/nginx-mainline/devilbox-access.log main;
error_log /var/log/nginx-mainline/devilbox-error.log warn;
# Devilbox httpd info/status
location /devilbox-httpd-status {
stub_status on;
access_log off;
}
# Devilbox API endpoint
location ~ /devilbox-api/ {
root /var/www/default/api/;
index status.json;
# Allow cross-domain requests to this domain
# Used to validate if client DNS is setup correctly
if ( $http_origin ~* (https?://(localhost|127\.0\.0\.1|httpd)$) ) {
add_header "Access-Control-Allow-Origin" "$http_origin";
}
}
# Front-controller pattern as recommended by the nginx docs
location / {
try_files $uri $uri/ /index.php;
}
# PHP FPM
location ~ \.php?$ {
# PHP.INI:
# ---------------------------
# // Find this:
# cgi.fix_pathinfo=1
# // Replace with:
# cgi.fix_pathinfo=0
try_files $uri = 404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_split_path_info ^(.+\.php)(.*)$;
#### FPM Server
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_intercept_errors on;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
location ~ /\.ht {
deny all;
}
# disallow access to git configs path
location ~ /\.git {
deny all;
}
}

View File

@ -1,67 +0,0 @@
##
## Default Mass Virtual Host
##
server {
listen 80;
server_name ~^(?<domain>.+)\.[a-zA-Z]+$;
# Root directive
root /shared/httpd/$domain/htdocs/;
index index.php;
access_log /var/log/nginx-mainline/projects-access.log main;
error_log /var/log/nginx-mainline/projects-error.log warn;
# Devilbox API endpoint
location ~ /devilbox-api/ {
root /var/www/default/api/;
index status.json;
access_log off;
# Allow cross-domain requests to this domain
# Used to validate if client DNS is setup correctly
if ( $http_origin ~* (https?://(localhost|127\.0\.0\.1|httpd)$) ) {
add_header "Access-Control-Allow-Origin" "$http_origin";
}
}
# Front-controller pattern as recommended by the nginx docs
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
# PHP FPM
location ~ \.php?$ {
# PHP.INI:
# ---------------------------
# // Find this:
# cgi.fix_pathinfo=1
# // Replace with:
# cgi.fix_pathinfo=0
try_files $uri = 404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_split_path_info ^(.+\.php)(.*)$;
#### SOCKET
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_intercept_errors on;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
location ~ /\.ht {
deny all;
}
# disallow access to git configs path
location ~ /\.git {
deny all;
}
}

View File

@ -1,8 +0,0 @@
charset utf-8;
send_timeout 60;
keepalive_timeout 10;
sendfile off;
tcp_nopush on;
tcp_nodelay on;

View File

@ -1,75 +0,0 @@
##
## Default Host for http://localhost
##
server {
listen 80 default_server;
server_name _;
server_name localhost;
server_name 127.0.0.1;
server_name httpd;
server_name 172.16.238.*;
# Root directive
root /var/www/default/htdocs;
index index.php;
access_log /var/log/nginx-stable/devilbox-access.log main;
error_log /var/log/nginx-stable/devilbox-error.log warn;
# Devilbox httpd info/status
location /devilbox-httpd-status {
stub_status on;
access_log off;
}
# Devilbox API endpoint
location ~ /devilbox-api/ {
root /var/www/default/api/;
index status.json;
# Allow cross-domain requests to this domain
# Used to validate if client DNS is setup correctly
if ( $http_origin ~* (https?://(localhost|127\.0\.0\.1|httpd)$) ) {
add_header "Access-Control-Allow-Origin" "$http_origin";
}
}
# Front-controller pattern as recommended by the nginx docs
location / {
try_files $uri $uri/ /index.php;
}
# PHP FPM
location ~ \.php?$ {
# PHP.INI:
# ---------------------------
# // Find this:
# cgi.fix_pathinfo=1
# // Replace with:
# cgi.fix_pathinfo=0
try_files $uri = 404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_split_path_info ^(.+\.php)(.*)$;
#### FPM Server
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_intercept_errors on;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
location ~ /\.ht {
deny all;
}
# disallow access to git configs path
location ~ /\.git {
deny all;
}
}

View File

@ -1,67 +0,0 @@
##
## Default Mass Virtual Host
##
server {
listen 80;
server_name ~^(?<domain>.+)\.[a-zA-Z]+$;
# Root directive
root /shared/httpd/$domain/htdocs/;
index index.php;
access_log /var/log/nginx-stable/projects-access.log main;
error_log /var/log/nginx-stable/projects-error.log warn;
# Devilbox API endpoint
location ~ /devilbox-api/ {
root /var/www/default/api/;
index status.json;
access_log off;
# Allow cross-domain requests to this domain
# Used to validate if client DNS is setup correctly
if ( $http_origin ~* (https?://(localhost|127\.0\.0\.1|httpd)$) ) {
add_header "Access-Control-Allow-Origin" "$http_origin";
}
}
# Front-controller pattern as recommended by the nginx docs
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
# PHP FPM
location ~ \.php?$ {
# PHP.INI:
# ---------------------------
# // Find this:
# cgi.fix_pathinfo=1
# // Replace with:
# cgi.fix_pathinfo=0
try_files $uri = 404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_split_path_info ^(.+\.php)(.*)$;
#### SOCKET
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_intercept_errors on;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
location ~ /\.ht {
deny all;
}
# disallow access to git configs path
location ~ /\.git {
deny all;
}
}

View File

@ -13,8 +13,8 @@ error_reporting(-1);
putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1');
$DEVILBOX_VERSION = 'v0.11';
$DEVILBOX_DATE = '2017-08-16';
$DEVILBOX_VERSION = 'v0.12';
$DEVILBOX_DATE = '2017-10-10';
$DEVILBOX_API_PAGE = 'devilbox-api/status.json';
//

View File

@ -3,12 +3,17 @@ require '../config.php';
if (loadClass('Helper')->isLoggedIn()) {
//
// ?database=
//
if (isset($_GET['database'])) {
// &type=mysql
if (isset($_GET['type']) && $_GET['type'] == 'mysql') {
echo json_encode(array(
'size' => (string)loadClass('Mysql')->getDBSize($_GET['database']),
'table' => (string)loadClass('Mysql')->getTableCount($_GET['database'])
));
// &type=postgres
} else if (isset($_GET['type']) && $_GET['type'] == 'postgres') {
$schema = isset($_GET['schema']) ? $_GET['schema'] : '';
echo json_encode(array(
@ -16,12 +21,93 @@ if (loadClass('Helper')->isLoggedIn()) {
'table' => (string)loadClass('Pgsql')->getTableCount($_GET['database'], $schema)
));
}
} else if (isset($_GET['vhost'])) {
echo loadClass('Httpd')->checkVirtualHost($_GET['vhost']);
} else {
loadClass('Helper')->redirect('/');
}
} else {
//
// ?vhost=
//
else if (isset($_GET['vhost'])) {
echo loadClass('Httpd')->checkVirtualHost($_GET['vhost']);
}
//
// ?software=
//
else if (isset($_GET['software'])) {
$no = '<span class="text-danger">not installed</span>';
$software = array();
if ($_GET['software'] == 'composer') {
echo json_encode(array(
$_GET['software'] => (($version = loadClass('Php')->getComposerVersion()) !== false) ? $version : $no
));
}
else if ($_GET['software'] == 'drupalc') {
echo json_encode(array(
$_GET['software'] => (($version = loadClass('Php')->getDrupalConsoleVersion()) !== false) ? $version : $no
));
}
else if ($_GET['software'] == 'drush') {
echo json_encode(array(
$_GET['software'] => (($version = loadClass('Php')->getDrushVersion()) !== false) ? $version : $no
));
}
else if ($_GET['software'] == 'git') {
echo json_encode(array(
$_GET['software'] => (($version = loadClass('Php')->getGitVersion()) !== false) ? $version : $no
));
}
else if ($_GET['software'] == 'laravel') {
echo json_encode(array(
$_GET['software'] => (($version = loadClass('Php')->getLaravelVersion()) !== false) ? $version : $no
));
}
else if ($_GET['software'] == 'mds') {
echo json_encode(array(
$_GET['software'] => (($version = loadClass('Php')->getMdsVersion()) !== false) ? $version : $no
));
}
else if ($_GET['software'] == 'node') {
echo json_encode(array(
$_GET['software'] => (($version = loadClass('Php')->getNodeVersion()) !== false) ? $version : $no
));
}
else if ($_GET['software'] == 'npm') {
echo json_encode(array(
$_GET['software'] => (($version = loadClass('Php')->getNpmVersion()) !== false) ? $version : $no
));
}
else if ($_GET['software'] == 'phalcon') {
echo json_encode(array(
$_GET['software'] => (($version = loadClass('Php')->getPhalconVersion()) !== false) ? $version : $no
));
}
else if ($_GET['software'] == 'symfony') {
echo json_encode(array(
$_GET['software'] => (($version = loadClass('Php')->getSymfonyVersion()) !== false) ? $version : $no
));
}
else if ($_GET['software'] == 'wpcli') {
echo json_encode(array(
$_GET['software'] => (($version = loadClass('Php')->getWpcliVersion()) !== false) ? $version : $no
));
} else {
echo json_encode(array($_GET['software'] => 'unknown software'));
}
}
//
// WRONG REQUEST
//
else {
loadClass('Helper')->redirect('/');
}
}
//
// Not logged in
//
else {
loadClass('Helper')->redirect('/');
}

View File

@ -30,6 +30,7 @@ $connection = array();
$error = null;
// ---- HTTPD (required) ----
$host = $GLOBALS['HTTPD_HOST_NAME'];
$succ = loadClass('Httpd')->canConnect($error, $host);
$connection['Httpd'][$host] = array(
@ -51,7 +52,6 @@ $connection['Httpd'][$host] = array(
'host' => $host,
'succ' => $succ
);
// ---- MYSQL ----
if ($avail_mysql) {
$host = $GLOBALS['MYSQL_HOST_NAME'];
@ -127,6 +127,7 @@ if ($avail_redis) {
);
}
// ---- MEMCACHED ----
if ($avail_memcd) {
$host = $GLOBALS['MEMCD_HOST_NAME'];
@ -351,6 +352,14 @@ $HEALTH_PERCENT = 100 - ceil(100 * $HEALTH_FAILS / $HEALTH_TOTAL);
<th>gid</th>
<td><?php echo loadClass('Php')->getGid(); ?></td>
</tr>
<tr>
<th>vHost docroot dir</th>
<td><?php echo loadClass('Helper')->getEnv('HTTPD_DOCROOT_DIR'); ?></td>
</tr>
<tr>
<th>vHost config dir</th>
<td><?php echo loadClass('Helper')->getEnv('HTTPD_TEMPLATE_DIR'); ?></td>
</tr>
<tr>
<th>vHost TLD</th>
<td>*.<?php echo loadClass('Httpd')->getTldSuffix(); ?></td>
@ -409,47 +418,47 @@ $HEALTH_PERCENT = 100 - ceil(100 * $HEALTH_FAILS / $HEALTH_TOTAL);
<tbody>
<tr>
<th>composer</th>
<td><?php if (($version = loadClass('Php')->getComposerVersion()) === false) {echo '<span class="text-danger">not installed</span>';}else{echo $version;}; ?></td>
<td id="app_composer"></td>
</tr>
<tr>
<th>drupal-console</th>
<td><?php if (($version = loadClass('Php')->getDrushConsoleVersion()) === false) {echo '<span class="text-danger">not installed</span>';}else{echo $version;}; ?></td>
<td id="app_drupalc"></td>
</tr>
<tr>
<th>drush</th>
<td><?php if (($version = loadClass('Php')->getDrushVersion()) === false) {echo '<span class="text-danger">not installed</span>';}else{echo $version;}; ?></td>
<td id="app_drush"></td>
</tr>
<tr>
<th>git</th>
<td><?php if (($version = loadClass('Php')->getGitVersion()) === false) {echo '<span class="text-danger">not installed</span>';}else{echo $version;}; ?></td>
<td id="app_git"></td>
</tr>
<tr>
<th>Laravell installer</th>
<td><?php if (($version = loadClass('Php')->getLaravelVersion()) === false) {echo '<span class="text-danger">not installed</span>';}else{echo $version;}; ?></td>
<th>Laravel installer</th>
<td id="app_laravel"></td>
</tr>
<tr>
<th>mysqldump-secure</th>
<td><?php if (($version = loadClass('Php')->getMdsVersion()) === false) {echo '<span class="text-danger">not installed</span>';}else{echo $version;}; ?></td>
<td id="app_mds"></td>
</tr>
<tr>
<th>node</th>
<td><?php if (($version = loadClass('Php')->getNodeVersion()) === false) {echo '<span class="text-danger">not installed</span>';}else{echo $version;}; ?></td>
<td id="app_node"></td>
</tr>
<tr>
<th>npm</th>
<td><?php if (($version = loadClass('Php')->getNpmVersion()) === false) {echo '<span class="text-danger">not installed</span>';}else{echo $version;}; ?></td>
<td id="app_npm"></td>
</tr>
<tr>
<th>Phalcon devtools</th>
<td><?php if (($version = loadClass('Php')->getPhalconVersion()) === false) {echo '<span class="text-danger">not installed</span>';}else{echo $version;}; ?></td>
<td id="app_phalcon"></td>
</tr>
<tr>
<th>Symfony installer</th>
<td><?php if (($version = loadClass('Php')->getSymfonyVersion()) === false) {echo '<span class="text-danger">not installed</span>';}else{echo $version;}; ?></td>
<td id="app_symfony"></td>
</tr>
<tr>
<th>Wordpress cli</th>
<td><?php if (($version = loadClass('Php')->getWpcliVersion()) === false) {echo '<span class="text-danger">not installed</span>';}else{echo $version;}; ?></td>
<td id="app_wpcli"></td>
</tr>
</tbody>
</table>
@ -762,8 +771,8 @@ $HEALTH_PERCENT = 100 - ceil(100 * $HEALTH_FAILS / $HEALTH_TOTAL);
</tr>
<tr>
<th>httpd</th>
<td>-</td>
<td>-</td>
<td>./cfg/<?php echo loadClass('Helper')->getEnv('HTTPD_SERVER'); ?></td>
<td>/etc/httpd-custom.d</td>
</tr>
<?php if ($avail_mysql): ?>
<tr>
@ -902,6 +911,37 @@ $HEALTH_PERCENT = 100 - ceil(100 * $HEALTH_FAILS / $HEALTH_TOTAL);
(function() {
// your page initialization code here
// the DOM will be available here
/**
* Update installed tool versions.
* Ajax method is faster for loading the front page
* @param string app Name of the tool
*/
function updateVersions(app) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
var elem = document.getElementById('app_'+app);
if (this.readyState == 4 && this.status == 200) {
json = JSON.parse(this.responseText);
elem.innerHTML = json[app];
}
};
xhttp.open('GET', '_ajax_callback.php?software='+app, true);
xhttp.send();
}
updateVersions('composer');
updateVersions('drupalc');
updateVersions('drush');
updateVersions('git');
updateVersions('laravel');
updateVersions('mds');
updateVersions('node');
updateVersions('npm');
updateVersions('phalcon');
updateVersions('symfony');
updateVersions('wpcli');
})();
</script>
</body>

View File

@ -39,7 +39,7 @@
<?php foreach ($vHosts as $vHost): ?>
<tr>
<td><?php echo $vHost['name'];?></td>
<td><?php echo loadClass('Helper')->getEnv('HOST_PATH_HTTPD_DATADIR');?>/<?php echo $vHost['name'];?>/htdocs</td>
<td><?php echo loadClass('Helper')->getEnv('HOST_PATH_HTTPD_DATADIR');?>/<?php echo $vHost['name'];?>/<?php echo loadClass('Helper')->getEnv('HTTPD_DOCROOT_DIR');?></td>
<td class="text-xs-center text-xs-small" id="valid-<?php echo $vHost['name'];?>">&nbsp;&nbsp;&nbsp;</td>
<td id="href-<?php echo $vHost['name'];?>"><?php echo $filler;?></td>
</tr>
@ -80,12 +80,10 @@
error = this.responseText;
if (error.length && error.match(/^error/)) {
console.log(error);
el_valid.className += ' bg-danger';
el_valid.innerHTML = 'ERR';
el_href.innerHTML = error;
} else if (error.length && error.match(/^warning/)) {
console.log(error);
el_valid.className += ' bg-warning';
el_valid.innerHTML = 'WARN';
el_href.innerHTML = error.replace('warning', '');
@ -125,7 +123,7 @@
//console.log(vhost);
}
}
xhttp.open('GET', 'http://'+vhost+'.<?php echo loadClass('Httpd')->getTldSuffix();?>/devilbox-api/status.json', true);
xhttp.open('POST', 'http://'+vhost+'.<?php echo loadClass('Httpd')->getTldSuffix();?>/devilbox-api/status.json', true);
xhttp.send();
// Timeout to abort in 1 second

View File

@ -23,15 +23,16 @@ class Httpd extends BaseClass implements BaseInterface
*/
public function checkVirtualHost($vhost)
{
$htdocs = $this->_docRoot . DIRECTORY_SEPARATOR . $vhost . DIRECTORY_SEPARATOR . 'htdocs';
$htdocs = loadClass('Helper')->getEnv('HTTPD_DOCROOT_DIR');
$docroot = $this->_docRoot . DIRECTORY_SEPARATOR . $vhost . DIRECTORY_SEPARATOR . $htdocs;
$domain = $vhost . '.' . $this->getTldSuffix();
$url = 'http://'.$domain;
$error = array();
// 1. Check htdocs folder
if (!$this->_is_valid_dir($htdocs)) {
if (!$this->_is_valid_dir($docroot)) {
$error[] = 'error';
$error[] = 'Missing <strong>htdocs</strong> directory in: <strong>'.loadClass('Helper')->getEnv('HOST_PATH_HTTPD_DATADIR').'/'.$vhost.'/</strong>';
$error[] = 'Missing <strong>'.$htdocs.'</strong> directory in: <strong>'.loadClass('Helper')->getEnv('HOST_PATH_HTTPD_DATADIR').'/'.$vhost.'/</strong>';
}
// 2. Check internal DNS server

View File

@ -50,7 +50,7 @@ class Php extends BaseClass implements BaseInterface
$output = loadClass('Helper')->exec('drush --version', $output);
return loadClass('Helper')->egrep('/[0-9.]+/', $output);
}
public function getDrushConsoleVersion()
public function getDrupalConsoleVersion()
{
$output = loadClass('Helper')->exec('drupal --version | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"', $output);
return loadClass('Helper')->egrep('/[0-9.]+[-rc0-9.]*/', $output);

6
.gitignore vendored
View File

@ -22,6 +22,12 @@
/data/
/backups/
# Ignore custom HTTPD configs
/cfg/apache-2.2/*.conf
/cfg/apache-2.4/*.conf
/cfg/nginx-stable/*.conf
/cfg/nginx-mainline/*.conf
# Ignore custom MySQL configs
/cfg/mysql-5.5/*.cnf
/cfg/mysql-5.6/*.cnf

View File

@ -200,15 +200,23 @@ env:
- S1=PHP V1=php-fpm-7.1 S2=PGSQL V2=9.6
- S1=PHP V1=php-fpm-7.2 S2=PGSQL V2=9.6
- S1=PHP V1=hhvm-latest S2=PGSQL V2=9.6
# PHP vs PgSQL 10.0
- S1=PHP V1=php-fpm-5.4 S2=PGSQL V2=10.0
- S1=PHP V1=php-fpm-5.5 S2=PGSQL V2=10.0
- S1=PHP V1=php-fpm-5.6 S2=PGSQL V2=10.0
- S1=PHP V1=php-fpm-7.0 S2=PGSQL V2=10.0
- S1=PHP V1=php-fpm-7.1 S2=PGSQL V2=10.0
- S1=PHP V1=php-fpm-7.2 S2=PGSQL V2=10.0
- S1=PHP V1=hhvm-latest S2=PGSQL V2=10.0
###
### Build Matrix definition
###
matrix:
allow_failures:
- env: S1=PHP V1=hhvm-latest S2=HTTPD V2=apache-2.2
#matrix:
# allow_failures:
# - env: S1=PHP V1=hhvm-latest S2=HTTPD V2=apache-2.2
#
###
### Berfore Install

View File

@ -77,8 +77,8 @@ Every single attachable container comes with many different versions. In order t
</thead>
<tbody>
<tr>
<td><a target="_blank" title="Apache 2.2" href="https://github.com/cytopia/docker-apache-2.2">2.2</a></td>
<td><a target="_blank" title="Nginx stable" href="https://github.com/cytopia/docker-nginx-stable">stable</a></td>
<td><a target="_blank" title="Apache 2.2" href="https://github.com/devilbox/docker-apache-2.2">2.2</a></td>
<td><a target="_blank" title="Nginx stable" href="https://github.com/devilbox/docker-nginx-stable">stable</a></td>
<td><a target="_blank" title="PHP 5.4" href="https://github.com/cytopia/docker-php-fpm-5.4">5.4</a></td>
<td><a target="_blank" title="MySQL 5.5" href="https://github.com/cytopia/docker-mysql-5.5">5.5</a></td>
<td><a target="_blank" title="MariaDB 5.5" href="https://github.com/cytopia/docker-mariadb-5.5">5.5</a></td>
@ -89,8 +89,8 @@ Every single attachable container comes with many different versions. In order t
<td><a target="_blank" title="MongoDB 2.8" href="https://github.com/docker-library/mongo">2.8</a></td>
</tr>
<tr>
<td><a target="_blank" title="Apache 2.4" href="https://github.com/cytopia/docker-apache-2.4">2.4</a></td>
<td><a target="_blank" title="Nginx mainline" href="https://github.com/cytopia/docker-nginx-mainline">mainline</a></td>
<td><a target="_blank" title="Apache 2.4" href="https://github.com/devilbox/docker-apache-2.4">2.4</a></td>
<td><a target="_blank" title="Nginx mainline" href="https://github.com/devilbox/docker-nginx-mainline">mainline</a></td>
<td><a target="_blank" title="PHP 5.5" href="https://github.com/cytopia/docker-php-fpm-5.5">5.5</a></td>
<td><a target="_blank" title="MySQL 5.6" href="https://github.com/cytopia/docker-mysql-5.6">5.6</a></td>
<td><a target="_blank" title="MariaDB 10.0" href="https://github.com/cytopia/docker-mariadb-10.0">10.0</a></td>
@ -120,7 +120,7 @@ Every single attachable container comes with many different versions. In order t
<td><a target="_blank" title="MariaDB 10.2" href="https://github.com/cytopia/docker-mariadb-10.2">10.2</a></td>
<td></td>
<td><a target="_blank" title="PgSQL 9.4" href="https://github.com/docker-library/postgres">9.4</a></td>
<td></td>
<td><a target="_blank" title="Redis 4.0" href="https://github.com/docker-library/redis">4.0</a></td>
<td><a target="_blank" title="Memcached 1.4.23" href="https://github.com/docker-library/memcached">1.4.24</a></td>
<td><a target="_blank" title="MongoDB 3.4" href="https://github.com/docker-library/mongo">3.4</a></td>
</tr>
@ -145,7 +145,7 @@ Every single attachable container comes with many different versions. In order t
<td></td>
<td><a target="_blank" title="PgSQL 9.6" href="https://github.com/docker-library/postgres">9.6</a></td>
<td></td>
<td><a target="_blank" title="Memcached latest" href="https://github.com/docker-library/memcached">1.4.36</a></td>
<td><a target="_blank" title="Memcached 1.5.2" href="https://github.com/docker-library/memcached">1.5.2</a></td>
<td></td>
</tr>
<tr>
@ -155,7 +155,7 @@ Every single attachable container comes with many different versions. In order t
<td></td>
<td></td>
<td></td>
<td></td>
<td><a target="_blank" title="PgSQL 10.0" href="https://github.com/docker-library/postgres">10.0</a></td>
<td></td>
<td><a target="_blank" title="Memcached latest" href="https://github.com/docker-library/memcached">latest</a></td>
<td></td>
@ -188,12 +188,12 @@ The devilbox has everything setup for you. The only thing you will have to insta
#### Features
* **Mass virtual host**
* **Custom domains** (`*.loc`, `*.local`, `*.dev`, `*.sub.loc`, ...)
* **Custom domains** (`*.loc`, `*.local`, `*.dev`, `*.example.com`, ...)
* **Auto-DNS** (Internal Bind server running)
* **Email catch-all** (Internal postfix with catch-all)
* **Log files** (available on host computer)
* **Config overwrites** (`my.cnf`, `nginx.conf`, `httpd.conf` or `php.ini`)
* **Custom PHP modules**
* **Custom PHP modules** (can be loaded on the fly)
* **Self-validation** (projects and configured options are validated and marked in the intranet)
* **Xdebug**
@ -229,7 +229,7 @@ The devilbox is a development stack, so it is made sure that a lot of PHP module
> *apc, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dom, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, intl, json, ldap, libxml, magickwand, mbstring, mcrypt, memcache, memcached, mhash, mongodb, msgpack, mysql, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, readline, recode, redis, Reflection, session, shmop, SimpleXML, soap, sockets, SPL, sqlite3, standard, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib*
** Custom PHP Modules**
**Custom PHP Modules**
You can also copy any custom modules into `mod/(php-fpm|hhvm)-<VERSION>` and add a custom `*.ini` file to load them. See [Custom PHP Modules](docs/Configure.md#425-custom-php-modules) in the Configuration documentation for how to do that in two simple steps.
@ -239,6 +239,7 @@ As far as tested there are no limitations and you can use any Framework or CMS j
[![CakePHP](docs/img/logos/cake.png)](https://cakephp.org)
[![Drupal](docs/img/logos/drupal.png)](https://www.drupal.org)
[![Joomla](docs/img/logos/joomla.png)](https://www.joomla.org)
[![Laravel](docs/img/logos/laravel.png)](https://laravel.com)
[![Phalcon](docs/img/logos/phalcon.png)](https://phalconphp.com)
[![Symfony](docs/img/logos/symfony.png)](https://symfony.com)
@ -351,12 +352,13 @@ The devilbox documentation consists of the following main sections.
2. [Project setup](docs/Examples.md#2-project-setup)
1. [Setup CakePHP](docs/Examples.md#21-setup-cakephp)
2. [Setup Drupal](docs/Examples.md#22-setup-drupal)
3. [Setup Laravel](docs/Examples.md#23-setup-laravel)
4. [Setup Phalcon](docs/Examples.md#24-setup-phalcon)
5. [Setup Symfony](docs/Examples.md#25-setup-symfony)
6. [Setup Wordpress](docs/Examples.md#26-setup-wordpress)
7. [Setup Yii](docs/Examples.md#27-setup-yii)
8. [Setup Zend](docs/Examples.md#28-setup-zend)
3. [Setup Joomla](docs/Examples.md#23-setup-joomla)
4. [Setup Laravel](docs/Examples.md#24-setup-laravel)
5. [Setup Phalcon](docs/Examples.md#25-setup-phalcon)
6. [Setup Symfony](docs/Examples.md#26-setup-symfony)
7. [Setup Wordpress](docs/Examples.md#27-setup-wordpress)
8. [Setup Yii](docs/Examples.md#28-setup-yii)
9. [Setup Zend](docs/Examples.md#29-setup-zend)
3. [Code analysis](docs/Examples.md#3-code-analysis)
1. [awesome-ci](docs/Examples.md#31-awesome-ci)
2. [phpcs](docs/Examples.md#32-phpcs)
@ -384,10 +386,10 @@ In order to make sure every combination works with each other, the devilbox inte
| DNS | Webserver | PHP |
|-----|-----------|-----|
| [![Build Status](https://travis-ci.org/cytopia/docker-bind.svg?branch=master)](https://travis-ci.org/cytopia/docker-bind) [Bind](https://github.com/cytopia/docker-bind) | [![Build Status](https://travis-ci.org/cytopia/docker-apache-2.2.svg?branch=master)](https://travis-ci.org/cytopia/docker-apache-2.2) [Apache 2.2](https://github.com/cytopia/docker-apache-2.2) | [![Build Status](https://travis-ci.org/cytopia/docker-php-fpm-5.4.svg?branch=master)](https://travis-ci.org/cytopia/docker-php-fpm-5.4) [PHP 5.4](https://github.com/cytopia/docker-php-fpm-5.4) |
| | [![Build Status](https://travis-ci.org/cytopia/docker-apache-2.4.svg?branch=master)](https://travis-ci.org/cytopia/docker-apache-2.4) [Apache 2.4](https://github.com/cytopia/docker-apache-2.4) | [![Build Status](https://travis-ci.org/cytopia/docker-php-fpm-5.5.svg?branch=master)](https://travis-ci.org/cytopia/docker-php-fpm-5.5) [PHP 5.5](https://github.com/cytopia/docker-php-fpm-5.5) |
| | [![Build Status](https://travis-ci.org/cytopia/docker-nginx-stable.svg?branch=master)](https://travis-ci.org/cytopia/docker-nginx-stable) [Nginx stable](https://github.com/cytopia/docker-nginx-stable) | [![Build Status](https://travis-ci.org/cytopia/docker-php-fpm-5.6.svg?branch=master)](https://travis-ci.org/cytopia/docker-php-fpm-5.6) [PHP 5.6](https://github.com/cytopia/docker-php-fpm-5.6) |
| | [![Build Status](https://travis-ci.org/cytopia/docker-nginx-mainline.svg?branch=master)](https://travis-ci.org/cytopia/docker-nginx-mainline) [Nginx mainline](https://github.com/cytopia/docker-nginx-mainline) | [![Build Status](https://travis-ci.org/cytopia/docker-php-fpm-7.0.svg?branch=master)](https://travis-ci.org/cytopia/docker-php-fpm-7.0) [PHP 7.0](https://github.com/cytopia/docker-php-fpm-7.0) |
| [![Build Status](https://travis-ci.org/cytopia/docker-bind.svg?branch=master)](https://travis-ci.org/cytopia/docker-bind) [Bind](https://github.com/cytopia/docker-bind) | [![Build Status](https://travis-ci.org/devilbox/docker-apache-2.2.svg?branch=master)](https://travis-ci.org/devilbox/docker-apache-2.2) [Apache 2.2](https://github.com/devilbox/docker-apache-2.2) | [![Build Status](https://travis-ci.org/cytopia/docker-php-fpm-5.4.svg?branch=master)](https://travis-ci.org/cytopia/docker-php-fpm-5.4) [PHP 5.4](https://github.com/cytopia/docker-php-fpm-5.4) |
| | [![Build Status](https://travis-ci.org/devilbox/docker-apache-2.4.svg?branch=master)](https://travis-ci.org/devilbox/docker-apache-2.4) [Apache 2.4](https://github.com/devilbox/docker-apache-2.4) | [![Build Status](https://travis-ci.org/cytopia/docker-php-fpm-5.5.svg?branch=master)](https://travis-ci.org/cytopia/docker-php-fpm-5.5) [PHP 5.5](https://github.com/cytopia/docker-php-fpm-5.5) |
| | [![Build Status](https://travis-ci.org/devilbox/docker-nginx-stable.svg?branch=master)](https://travis-ci.org/devilbox/docker-nginx-stable) [Nginx stable](https://github.com/devilbox/docker-nginx-stable) | [![Build Status](https://travis-ci.org/cytopia/docker-php-fpm-5.6.svg?branch=master)](https://travis-ci.org/cytopia/docker-php-fpm-5.6) [PHP 5.6](https://github.com/cytopia/docker-php-fpm-5.6) |
| | [![Build Status](https://travis-ci.org/devilbox/docker-nginx-mainline.svg?branch=master)](https://travis-ci.org/devilbox/docker-nginx-mainline) [Nginx mainline](https://github.com/devilbox/docker-nginx-mainline) | [![Build Status](https://travis-ci.org/cytopia/docker-php-fpm-7.0.svg?branch=master)](https://travis-ci.org/cytopia/docker-php-fpm-7.0) [PHP 7.0](https://github.com/cytopia/docker-php-fpm-7.0) |
| | | [![Build Status](https://travis-ci.org/cytopia/docker-php-fpm-7.1.svg?branch=master)](https://travis-ci.org/cytopia/docker-php-fpm-7.1) [PHP 7.1](https://github.com/cytopia/docker-php-fpm-7.1) |
| | | [![Build Status](https://travis-ci.org/cytopia/docker-php-fpm-7.2.svg?branch=master)](https://travis-ci.org/cytopia/docker-php-fpm-7.2) [PHP 7.2](https://github.com/cytopia/docker-php-fpm-7.2)
| | | [![Build Status](https://travis-ci.org/cytopia/docker-hhvm-latest.svg?branch=master)](https://travis-ci.org/cytopia/docker-hhvm-latest) [HHVM latest](https://github.com/cytopia/docker-hhvm-latest)
@ -402,7 +404,7 @@ In order to make sure every combination works with each other, the devilbox inte
| [![Build Status](https://travis-ci.org/cytopia/docker-mysql-8.0.svg?branch=master)](https://travis-ci.org/cytopia/docker-mysql-8.0) [MySQL 8.0](https://github.com/cytopia/docker-mysql-8.0) | [![Build Status](https://travis-ci.org/docker-library/postgres.svg?branch=master)](https://travis-ci.org/docker-library/postgres/branches) [PgSQL 9.4](https://hub.docker.com/_/postgres/) | |
| [![Build Status](https://travis-ci.org/cytopia/docker-mariadb-5.5.svg?branch=master)](https://travis-ci.org/cytopia/docker-mariadb-5.5) [MariaDB 5.5](https://github.com/cytopia/docker-mariadb-5.5) | [![Build Status](https://travis-ci.org/docker-library/postgres.svg?branch=master)](https://travis-ci.org/docker-library/postgres/branches) [PgSQL 9.5](https://hub.docker.com/_/postgres/) | |
| [![Build Status](https://travis-ci.org/cytopia/docker-mariadb-10.0.svg?branch=master)](https://travis-ci.org/cytopia/docker-mariadb-10.0) [MariaDB 10.0](https://github.com/cytopia/docker-mariadb-10.0) | [![Build Status](https://travis-ci.org/docker-library/postgres.svg?branch=master)](https://travis-ci.org/docker-library/postgres/branches) [PgSQL 9.6](https://hub.docker.com/_/postgres/) | |
| [![Build Status](https://travis-ci.org/cytopia/docker-mariadb-10.1.svg?branch=master)](https://travis-ci.org/cytopia/docker-mariadb-10.1) [MariaDB 10.1](https://github.com/cytopia/docker-mariadb-10.1) | | |
| [![Build Status](https://travis-ci.org/cytopia/docker-mariadb-10.1.svg?branch=master)](https://travis-ci.org/cytopia/docker-mariadb-10.1) [MariaDB 10.1](https://github.com/cytopia/docker-mariadb-10.1) | [![Build Status](https://travis-ci.org/docker-library/postgres.svg?branch=master)](https://travis-ci.org/docker-library/postgres/branches) [PgSQL 10.0](https://hub.docker.com/_/postgres/) | |
| [![Build Status](https://travis-ci.org/cytopia/docker-mariadb-10.2.svg?branch=master)](https://travis-ci.org/cytopia/docker-mariadb-10.2) [MariaDB 10.2](https://github.com/cytopia/docker-mariadb-10.2) | | |
| [![Build Status](https://travis-ci.org/cytopia/docker-mariadb-10.3.svg?branch=master)](https://travis-ci.org/cytopia/docker-mariadb-10.3) [MariaDB 10.3](https://github.com/cytopia/docker-mariadb-10.3) | | |
| [![Build Status](https://travis-ci.org/cytopia/docker-percona-5.5.svg?branch=master)](https://travis-ci.org/cytopia/docker-percona-5.5) [PerconaDB 5.5](https://github.com/cytopia/docker-percona-5.5) | | |
@ -416,7 +418,7 @@ In order to make sure every combination works with each other, the devilbox inte
| Cassandra 2.1 | CouchDB 1.6 | [![Travis CI](https://travis-ci.org/docker-library/memcached.svg?branch=master)](https://travis-ci.org/docker-library/memcached) [latest](https://github.com/docker-library/memcached) | [![build Status](https://travis-ci.org/docker-library/mongo.svg?branch=master)](https://travis-ci.org/docker-library/mongo) [2.8](https://github.com/docker-library/mongo) | [![Travis CI](https://travis-ci.org/docker-library/redis.svg?branch=master)](https://travis-ci.org/docker-library/redis) [2.8](https://github.com/docker-library/redis) |
| Cassandra 2.2 | CouchDB 2.0 | | [![build Status](https://travis-ci.org/docker-library/mongo.svg?branch=master)](https://travis-ci.org/docker-library/mongo) [3.0](https://github.com/docker-library/mongo) | [![Travis CI](https://travis-ci.org/docker-library/redis.svg?branch=master)](https://travis-ci.org/docker-library/redis) [3.0](https://github.com/docker-library/redis) |
| Cassandra 3.0 | | | [![build Status](https://travis-ci.org/docker-library/mongo.svg?branch=master)](https://travis-ci.org/docker-library/mongo) [3.2](https://github.com/docker-library/mongo) | [![Travis CI](https://travis-ci.org/docker-library/redis.svg?branch=master)](https://travis-ci.org/docker-library/redis) [3.2](https://github.com/docker-library/redis) |
| | | | [![build Status](https://travis-ci.org/docker-library/mongo.svg?branch=master)](https://travis-ci.org/docker-library/mongo) [3.4](https://github.com/docker-library/mongo) | |
| | | | [![build Status](https://travis-ci.org/docker-library/mongo.svg?branch=master)](https://travis-ci.org/docker-library/mongo) [3.4](https://github.com/docker-library/mongo) | [![Travis CI](https://travis-ci.org/docker-library/redis.svg?branch=master)](https://travis-ci.org/docker-library/redis) [4.0](https://github.com/docker-library/redis) |
| | | | [![build Status](https://travis-ci.org/docker-library/mongo.svg?branch=master)](https://travis-ci.org/docker-library/mongo) [3.5](https://github.com/docker-library/mongo) | |
<!--

View File

@ -1,3 +1,3 @@
# Devilbox user-defined settings
Use this folders to add your custom configuration.
Use this folders to add general custom configuration.

0
cfg/apache-2.2/.keepme Normal file
View File

View File

@ -0,0 +1,25 @@
#
# Apache 2.2 configuration overwrites
#
# Make sure this file ends by *.conf, otherwise
# the configuration is not sourced by nginx.
#
# The below settings are just examples.
# Copy them, remove them or reset them.
#
AddDefaultCharset UTF-8
# No DNS
HostnameLookups Off
Timeout 60
KeepAlive On
KeepAliveTimeout 10
MaxKeepAliveRequests 100
EnableMMAP Off
EnableSendfile Off
XSendFile On
XSendFilePath /shared/httpd

0
cfg/apache-2.4/.keepme Normal file
View File

View File

@ -0,0 +1,25 @@
#
# Apache 2.4 configuration overwrites
#
# Make sure this file ends by *.conf, otherwise
# the configuration is not sourced by nginx.
#
# The below settings are just examples.
# Copy them, remove them or reset them.
#
AddDefaultCharset UTF-8
# No DNS
HostnameLookups Off
Timeout 60
KeepAlive On
KeepAliveTimeout 10
MaxKeepAliveRequests 100
EnableMMAP Off
EnableSendfile Off
XSendFile On
XSendFilePath /shared/httpd

View File

View File

@ -0,0 +1,18 @@
#
# Nginx (mainline) configuration overwrites
#
# Make sure this file ends by *.conf, otherwise
# the configuration is not sourced by nginx.
#
# The below settings are just examples.
# Copy them, remove them or reset them.
#
charset utf-8;
send_timeout 60;
keepalive_timeout 10;
sendfile off;
tcp_nopush on;
tcp_nodelay on;

0
cfg/nginx-stable/.keepme Normal file
View File

View File

@ -0,0 +1,18 @@
#
# Nginx (stable) configuration overwrites
#
# Make sure this file ends by *.conf, otherwise
# the configuration is not sourced by nginx.
#
# The below settings are just examples.
# Copy them, remove them or reset them.
#
charset utf-8;
send_timeout 60;
keepalive_timeout 10;
sendfile off;
tcp_nopush on;
tcp_nodelay on;

View File

@ -27,12 +27,11 @@ version: '2.1'
################################################################################
services:
# ----------------------------------------
# ------------------------------------------------------------
# Bind (DNS Server)
# ----------------------------------------
# ------------------------------------------------------------
bind:
image: cytopia/bind:latest
#image: cytopia/bind:0.10
restart: always
ports:
# [local-machine:]local-port:docker-port
@ -60,21 +59,23 @@ services:
ipv4_address: 172.16.238.100
# ----------------------------------------
# PHP-FPM
# ----------------------------------------
# ------------------------------------------------------------
# PHP / HHVM
# ------------------------------------------------------------
php:
image: cytopia/${PHP_SERVER:-php-fpm-7.0}:latest
#image: cytopia/${PHP_SERVER:-php-fpm-7.0}:0.11
restart: always
# Manually build via `docker-compose build`
#build:
#context: https://github.com/cytopia/docker-${PHP_SERVER}.git#1
# context: https://github.com/cytopia/docker-${PHP_SERVER}.git
##
## All .env variables
##
## Source all variables defined in .env
## This also makes any custom variable available in each PHP/HHVM container
##
env_file:
- ./.env
environment:
##
## Debug?
##
@ -91,18 +92,6 @@ services:
##
- TIMEZONE
##
## TLD SUffix
##
- TLD_SUFFIX=${TLD_SUFFIX:-loc}
- DNS_CHECK_TIMEOUT=${DNS_CHECK_TIMEOUT:-1}
##
## Password protect the devilbox Intranet
##
- DEVILBOX_UI_PROTECT=${DEVILBOX_UI_PROTECT:-0}
- DEVILBOX_UI_PASSWORD=${DEVILBOX_UI_PASSWORD}
##
## PHP Xdebug
##
@ -127,36 +116,6 @@ services:
- MYSQL_BACKUP_PASS=${MYSQL_ROOT_PASSWORD}
- MYSQL_BACKUP_HOST=mysql
##
## Additional variables to announce to intranet/php-container
##
# Ports
- LOCAL_LISTEN_ADDR
- HOST_PORT_BIND
- HOST_PORT_HTTPD
- HOST_PORT_MYSQL
- HOST_PORT_PGSQL
- HOST_PORT_REDIS
- HOST_PORT_MEMCD
- HOST_PORT_MONGO
# Data dir paths
- HOST_PATH_HTTPD_DATADIR
- HOST_PATH_MYSQL_DATADIR
- HOST_PATH_PGSQL_DATADIR
- HOST_PATH_MONGO_DATADIR
# Database credentials
- PGSQL_ROOT_USER
- PGSQL_ROOT_PASSWORD
- MYSQL_ROOT_PASSWORD
# Selected Server versions
- PHP_SERVER
- HTTPD_SERVER
- PGSQL_SERVER
- MYSQL_SERVER
- REDIS_SERVER
- MEMCD_SERVER
- MONGO_SERVER
networks:
app_net:
ipv4_address: 172.16.238.10
@ -171,9 +130,11 @@ services:
# HOST-DIRECTORY : DOCKER-DIRECTORY
# Mount custom intranet
# (configured in /etc/${HTTPD_SERVER}/01-vhost-default.conf)
- ${DEVILBOX_PATH}/.devilbox/www:/var/www/default:ro
# Mount custom mass virtual hosting
- ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd
# Mount logs
- ${DEVILBOX_PATH}/log/${PHP_SERVER}:/var/log/php
@ -194,38 +155,51 @@ services:
# Mount devilbox user-defined bash config
- ${DEVILBOX_PATH}/bash:/etc/bashrc-devilbox.d
# Mount custom mass virtual hosting
# (configured in /etc/${HTTPD_SERVER}/02-vhost-mass.conf)
- ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd
depends_on:
- bind
# ----------------------------------------
# HTTPD
# ----------------------------------------
httpd:
image: cytopia/${HTTPD_SERVER:-nginx-stable}:latest
#image: cytopia/${HTTPD_SERVER:-nginx-stable}:0.9
restart: always
# Manually build via `docker-compose build`
#build:
#context: https://github.com/cytopia/docker-${HTTPD_SERVER}.git#1
# context: https://github.com/cytopia/docker-${HTTPD_SERVER}.git
# ------------------------------------------------------------
# Web Server
# ------------------------------------------------------------
httpd:
image: devilbox/${HTTPD_SERVER:-nginx-stable}:0.12
restart: always
environment:
##
## Debug?
##
- DEBUG_COMPOSE_ENTRYPOINT
- DEBUG_ENTRYPOINT=${DEBUG_COMPOSE_ENTRYPOINT}
- DEBUG_RUNTIME=${DEBUG_COMPOSE_ENTRYPOINT}
##
## Adjust timezone
##
- TIMEZONE
##
## UserID and GroupID
##
- NEW_UID
- NEW_GID
##
## Disable default vhost?
##
- MAIN_VHOST_DISABLE=${DEVILBOX_UI_DISABLE}
- MAIN_VHOST_STATUS_ENABLE=1
- MAIN_VHOST_STATUS_ALIAS=/devilbox-httpd-status
##
## Enable Mass Vhosts
##
- MASS_VHOST_ENABLE=1
- MASS_VHOST_TLD=.${TLD_SUFFIX}
- MASS_VHOST_DOCROOT=${HTTPD_DOCROOT_DIR}
- MASS_VHOST_TPL=${HTTPD_TEMPLATE_DIR}
##
## PHP-FPM Remote Server
##
@ -233,12 +207,6 @@ services:
- PHP_FPM_SERVER_ADDR=php
- PHP_FPM_SERVER_PORT=9000
## Tell the webserver to look into this directory
## for additional configuration files.
##
## @see volumes:: - ./etc/${HTTPD_SERVER}:/etc/${HTTPD_SERVER}
- CUSTOM_HTTPD_CONF_DIR=/etc/${HTTPD_SERVER}
ports:
# ---- Format: ----
# [HOST-ADDR : ] HOST-PORT : DOCKER-PORT
@ -252,44 +220,28 @@ services:
# ---- Format: ----
# HOST-DIRECTORY : DOCKER-DIRECTORY
# Custom scripts/binaries required for httpd server vhost
# configuration to work.
# (configured in /etc/${HTTPD_SERVER}/02-vhost-mass.conf)
- ${DEVILBOX_PATH}/.devilbox/bin/${HTTPD_SERVER}:/opt/bin:ro
# Mount user-defined httpd configuration files
# @see environment::CUSTOM_HTTPD_CONF_DIR for how this
# is added in httpd server
- ${DEVILBOX_PATH}/.devilbox/etc/${HTTPD_SERVER}:/etc/${HTTPD_SERVER}:ro
# Mount custom intranet
# (configured in /etc/${HTTPD_SERVER}/01-vhost-default.conf)
- ${DEVILBOX_PATH}/.devilbox/www:/var/www/default:ro
# Mount user-defined httpd log
# @see ./etc/${HTTPD_SERVER}/*.conf for log defines
- ${DEVILBOX_PATH}/log/${HTTPD_SERVER}:/var/log/${HTTPD_SERVER}
# Mount custom mass virtual hosting
# (configured in /etc/${HTTPD_SERVER}/02-vhost-mass.conf)
- ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd:ro
- ${HOST_PATH_HTTPD_DATADIR}:/shared/httpd
# Mount custom web server config directory
- ${DEVILBOX_PATH}/cfg/${HTTPD_SERVER}:/etc/httpd-custom.d
# Mount logs
- ${DEVILBOX_PATH}/log/${HTTPD_SERVER}:/var/log/${HTTPD_SERVER}
depends_on:
- bind
- php
# ----------------------------------------
# DATABASE
# ----------------------------------------
# ------------------------------------------------------------
# MySQL Database
# ------------------------------------------------------------
mysql:
image: cytopia/${MYSQL_SERVER:-mariadb-10.1}:latest
#image: cytopia/${MYSQL_SERVER:-mariadb-10.1}:0.9
# Manually build via `docker-compose build`
#build:
#context: https://github.com/cytopia/docker-${MYSQL_SERVER}.git#1
# context: https://github.com/cytopia/docker-${MYSQL_SERVER}.git
environment:
@ -349,17 +301,12 @@ services:
- httpd
# ----------------------------------------
# POSTGRESQL
# ----------------------------------------
# ------------------------------------------------------------
# PostgreSQL
# ------------------------------------------------------------
pgsql:
image: postgres:${PGSQL_SERVER:-9.6}
# Manually build via `docker-compose build`
#build:
#context: https://github.com/cytopia/docker-${MYSQL_SERVER}.git#1
# context: https://github.com/cytopia/docker-${MYSQL_SERVER}.git
environment:
- POSTGRES_USER=${PGSQL_ROOT_USER}
@ -390,9 +337,9 @@ services:
- httpd
# ----------------------------------------
# ------------------------------------------------------------
# Redis
# ----------------------------------------
# ------------------------------------------------------------
redis:
image: redis:${REDIS_SERVER:-3.2}
@ -417,9 +364,9 @@ services:
- httpd
# ----------------------------------------
# ------------------------------------------------------------
# Memcached
# ----------------------------------------
# ------------------------------------------------------------
memcd:
image: memcached:${MEMCD_SERVER:-latest}
@ -444,9 +391,9 @@ services:
- httpd
# ----------------------------------------
# Mongo
# ----------------------------------------
# ------------------------------------------------------------
# MongoDB
# ------------------------------------------------------------
mongo:
image: mongo:${MONGO_SERVER:-latest}

View File

@ -33,6 +33,7 @@ Configure |
3. [Project settings](#3-project-settings)
1. [Project domain](#31-project-domain)
2. [Project path](#32-project-path)
3. [Project htdocs directory](#33-project-htdocs directory)
4. [Container settings](#4-container-settings)
1. [General](#41-general)
1. [Timezone](#411-timezone)
@ -45,9 +46,11 @@ Configure |
4. [HHVM](#424-hhvm)
5. [Custom PHP modules](#425-custom-php-modules)
6. [Customize bash and other tools](#426-customize-bash-and-other-tools)
7. [Custom environment variables](#427-custom-environment-variables)
3. [Apache / Nginx](#43-apache--nginx)
1. [Select Httpd version](#431-select-httpd-version)
2. [Host port](#432-host-port)
3. [Customize the vhost configuration](#433-customize-the-vhost-configuration)
4. [MySQL](#44-mysql)
1. [Select MySQL version](#441-select-mysql-version)
2. [Root password](#442-root-password)
@ -77,6 +80,7 @@ Configure |
5. [Intranet settings](#5-intranet-settings)
1. [DNS check timeout](#51-dns-check-timeout)
2. [Password protection](#52-password-protection)
3. [Disable Intranet](#53-disable-intranet)
6. [Host computer](#6-host-computer)
1. [/etc/hosts](#61-etchosts)
2. [Auto-DNS](#62-auto-dns)
@ -111,30 +115,38 @@ You can get more information here:
Inside the devilbox root directory you will find a folder called `cfg/`. This will contain subdirectories in the form of `<SERVICE>-<VERSION>`. Those folders will be mounted into the appropriate location into the respective docker container in order to overwrite service configuration.
Currently only MySQL/MariaDB and PHP/HHVM overrides are supported.
Currently only MySQL/MariaDB, PHP/HHVM and Apache/Nginx overrides are supported.
The folder structure looks like this:
```
cfg/
apache-2.2/
apache-2.4/
nginx-mainline/
nginx-stable/
hhvm-latest/
mariadb-10.0/
mariadb-10.1/
mariadb-10.2/
mariadb-10.3/
mariadb-5.5/
mysql-5.5/
mysql-5.6/
mysql-5.7/
mysql-8.0/
percona-5.5/
percona-5.6/
percona-5.7/
php-fpm-5.4/
php-fpm-5.5/
php-fpm-5.6/
php-fpm-7.0/
php-fpm-7.1/
php-fpm-7.2/
mariadb-5.5/
mariadb-10.0/
mariadb-10.1/
mariadb-10.2/
mariadb-10.3/
mysql-5.5/
mysql-5.6/
mysql-5.7/
mysql-8.0/
percona-5.5/
percona-5.6/
percona-5.7/
```
Each of the folders will contain an example file in the following format:
@ -146,6 +158,7 @@ Only files which have the correct file extensions will be read, all others such
* Valid PHP config extension: `.ini`
* Valid MySQL config extension: `.cnf`
* Valid Httpd config extension: `.conf`
#### 1.3 The devilbox `mod/` directory
@ -292,6 +305,23 @@ $ docker-compose rm -f
$ docker-compose up -d
```
#### 3.3 Project htdocs directory
| `.env` file variable name | Default | Note |
|---------------------------|---------|------|
| HTTPD_DOCROOT_DIR | `htdocs` | A sub directory inside your project directory from which the web server will serve your files.<br/>The full path to the docuement root would be: `${HOST_PATH_HTTPD_DATADIR}/<project-name>/${HTTPD_DOCROOT_DIR}` |
If you rather would use a directory called `www`, just change it to this. Be aware that this will affect all your projects.
**Note:** When changing this value, you must restart the devilbox.
```shell
# Stop the container
$ docker-compose stop
# Start your stack
$ docker-compose up -d
```
## 4. Container settings
@ -329,7 +359,6 @@ $ id
**Note:** If your Host computers user id and the containers user id do not match, files will have different access rights inside and outside which might result in permission errors like `access denied`. So make sure to set this value.
**Note:** Files created by the webserver such as uploads, tmp and cache files are still created by the webservers user id and you will probably have to `chmod` them. This issues will be addressed shortly and you will also be able to change the uid/gid of the webserver in the next devilbox release.
##### 4.1.2 Group id
@ -499,6 +528,20 @@ alias vim='vim -u /etc/bashrc-devilbox.d/my-vimrc'
The next time you open `vim` within the PHP/HHVM docker container, it will automatically source your `my-vimrc`.
##### 4.2.7 Custom environment variables
If you projects require custom environment variables to be available to PHP or HHVM, you can simply add any variable to the `.env` file. All of them are automatically available to the container.
If your application requires are variable to determine if it is run under development or production, for example: `APPLICATION_ENV`, you can just add this to the `.env` file:
```
$ cat .env
...
APPLICATION_ENV=1
```
#### 4.3 Apache / Nginx
##### 4.3.1 Select Httpd version
@ -522,6 +565,17 @@ By default the webserver will listen on port 80 (on your Host computer). You can
If you also want to change the listening address (default: 127.0.0.1) to something else, see above or search this document for `LOCAL_LISTEN_ADDRESS`.
##### 4.3.3 Customize the vhost configuration
| `.env` file variable name | Default | Note |
|---------------------------|---------|------|
| HTTPD_TEMPLATE_DIR | `.devilbox`| A sub directory inside your project directory where the web server will look for web server templates in order to load a custom configuration for this specific project. |
If no such directory exists or no templates are available, the chosen web server will use the standard configuration for this virtual host. You can however overwrite each virtual host with custom settings by adding **[vhost-gen](https://github.com/devilbox/vhost-gen)** templates.
Copy all available templates from [vhost-gen templates directory](https://github.com/devilbox/vhost-gen/tree/master/etc/templates) to a a sub directory in your projects dir (By default `.devilbox/`) and adjust those template files to your needs.
#### 4.4 MySQL
##### 4.4.1 Select MySQL version
@ -873,6 +927,14 @@ If you wish, you can password-protect the devilbox intranet (not the vhost proje
> However, the devilbox intranet might give away too much information, what other people should not see, such as databases or others.
> In that case, you should enable password protection.
#### 5.3 Disable Intranet
| `.env` file variable name | Default | Note |
|---------------------------|---------|------|
| DEVILBOX_UI_DISABLE | `0` | Enable or disable devilbox's Intranet completely. |
If you wish, you can disable the built-in intranet completely. Set this variable to `1` which will remove the vhost that servers the Intranet. All that will be left are your custom project based virtual hosts.
## 6. Host computer

View File

@ -24,12 +24,13 @@ Examples |
2. [Project setup](#2-project-setup)
1. [Setup CakePHP](#21-setup-cakephp)
2. [Setup Drupal](#22-setup-drupal)
3. [Setup Laravel](#23-setup-laravel)
4. [Setup Phalcon](#24-setup-phalcon)
5. [Setup Symfony](#25-setup-symfony)
6. [Setup Wordpress](#26-setup-wordpress)
7. [Setup Yii](#27-setup-yii)
8. [Setup Zend](#28-setup-zend)
3. [Setup Joomla](#23-setup-joomla)
4. [Setup Laravel](#24-setup-laravel)
5. [Setup Phalcon](#25-setup-phalcon)
6. [Setup Symfony](#26-setup-symfony)
7. [Setup Wordpress](#27-setup-wordpress)
8. [Setup Yii](#28-setup-yii)
9. [Setup Zend](#29-setup-zend)
3. [Code analysis](#3-code-analysis)
1. [awesome-ci](#31-awesome-ci)
2. [phpcs](#32-phpcs)
@ -96,19 +97,19 @@ host> ./shell.sh
# 2. Create a new VirtualHost directory
devilbox@php-7.0.20 in /shared/httpd $ mkdir my-cake
devilbox@php-7.0.20 in /shared/httpd $ cd my-cake
# 3. Install CakePHP via composer
devilbox@php-7.0.20 in /shared/httpd $ cd my-cake
devilbox@php-7.0.20 in /shared/httpd $ composer create-project --prefer-dist cakephp/app cakephp
devilbox@php-7.0.20 in /shared/httpd/my-cake $ composer create-project --prefer-dist cakephp/app cakephp
# 4. Symlink webroot directory
devilbox@php-7.0.20 in /shared/httpd $ ln -s cakephp/webroot/ htdocs
devilbox@php-7.0.20 in /shared/httpd/my-cake $ ln -s cakephp/webroot/ htdocs
# 5. Add MySQL datbase
devilbox@php-7.0.20 in /shared/httpd $ mysql -u root -h 127.0.0.1 -p -e 'CREATE DATABASE my_cake;'
devilbox@php-7.0.20 in /shared/httpd/my-cake $ mysql -u root -h 127.0.0.1 -p -e 'CREATE DATABASE my_cake;'
# 6. Configure datbase connection
devilbox@php-7.0.20 in /shared/httpd $ vi cakephp/config/app.php
devilbox@php-7.0.20 in /shared/httpd/my-cake $ vi cakephp/config/app.php
```
```php
<?php
@ -169,13 +170,13 @@ host> ./shell.sh
# 2. Create a new VirtualHost directory
devilbox@php-7.0.20 in /shared/httpd $ mkdir my-drupal
devilbox@php-7.0.20 in /shared/httpd $ cd my-drupal
# 3. Install Drupal via drush
devilbox@php-7.0.20 in /shared/httpd $ cd my-drupal
devilbox@php-7.0.20 in /shared/httpd $ drush dl drupal
devilbox@php-7.0.20 in /shared/httpd/my-drupal $ drush dl drupal
# 4. Symlink Drupal directory
devilbox@php-7.0.20 in /shared/httpd $ ln -s drupal-8.3.3 htdocs
devilbox@php-7.0.20 in /shared/httpd/my-drupal $ ln -s drupal-8.3.3 htdocs
```
**5. DNS record**
@ -191,8 +192,55 @@ Open your browser at http://my-drupal.loc and follow the Drupal installation ste
**Note:** For MySQL host choose `127.0.0.1`.
#### 2.3 Setup Joomla
#### 2.3 Setup Laravel
> **[Official Joomla Documentation](https://docs.joomla.org/J3.x:Installing_Joomla)**
The following configuration will be used:
| Project name | VirtualHost directory | Database | TLD_SUFFIX | Url |
|--------------|-----------------------|------------|------------|-----|
| my-joomla | /shared/httpd/my-joomla | - | loc | http://my-joomla.loc |
It will be ready in six simple steps:
1. Enter the PHP container
2. Create a new VirtualHost directory
3. Download and extract Joomla
4. Symlink public directory
5. Setup DNS record
6. Visit http://my-joomla.loc in your browser
```shell
# 1. Enter the PHP container
host> ./shell.sh
# 2. Create a new VirtualHost directory
devilbox@php-7.0.20 in /shared/httpd $ mkdir my-joomla
devilbox@php-7.0.20 in /shared/httpd $ cd my-joomla
# 3. Download and extract Joomla
devilbox@php-7.0.20 in /shared/httpd/my-joomla $ wget -O joomla.tar.gz https://downloads.joomla.org/cms/joomla3/3-8-0/joomla_3-8-0-stable-full_package-tar-gz?format=gz
devilbox@php-7.0.20 in /shared/httpd/my-joomla $ mkdir joomla/
devilbox@php-7.0.20 in /shared/httpd/my-joomla $ tar xvfz joomla.tar.gz -C joomla/
# 4. Symlink Joomla directory
devilbox@php-7.0.20 in /shared/httpd/my-joomla $ ln -s joomla htdocs
```
**5. DNS record**
If you do not have auto-DNS configured, you will need to add the following line to your Host computer's `/etc/hosts`:
```shell
127.0.0.1 my-joomla.loc
```
**6. Open your browser**
Open your browser at http://my-joomla.loc
#### 2.4 Setup Laravel
> **[Official Laravel Documentation](https://laravel.com/docs/5.4/installation)**
@ -217,13 +265,13 @@ host> ./shell.sh
# 2. Create a new VirtualHost directory
devilbox@php-7.0.20 in /shared/httpd $ mkdir my-laravel
devilbox@php-7.0.20 in /shared/httpd $ cd my-laravel
# 3. Install Laravel via laravel
devilbox@php-7.0.20 in /shared/httpd $ cd my-laravel
devilbox@php-7.0.20 in /shared/httpd $ laravel new laravel-project
devilbox@php-7.0.20 in /shared/httpd/my-laravel $ laravel new laravel-project
# 4. Symlink public directory
devilbox@php-7.0.20 in /shared/httpd $ ln -s laravel-project/public htdocs
devilbox@php-7.0.20 in /shared/httpd/my-laravel $ ln -s laravel-project/public htdocs
```
**5. DNS record**
@ -238,7 +286,7 @@ If you do not have auto-DNS configured, you will need to add the following line
Open your browser at http://my-laravel.loc
#### 2.4 Setup Phalcon
#### 2.5 Setup Phalcon
> **[Official Phalcon Documentation](https://docs.phalconphp.com/en/3.2/devtools-usage)**
@ -263,13 +311,13 @@ host> ./shell.sh
# 2. Create a new VirtualHost directory
devilbox@php-7.0.20 in /shared/httpd $ mkdir my-phalcon
devilbox@php-7.0.20 in /shared/httpd $ cd my-phalcon
# 3. Install Phalcon via phalcon
devilbox@php-7.0.20 in /shared/httpd $ cd my-phalcon
devilbox@php-7.0.20 in /shared/httpd $ phalcon project phalconphp
devilbox@php-7.0.20 in /shared/httpd/my-phalcon $ phalcon project phalconphp
# 4. Symlink public directory
devilbox@php-7.0.20 in /shared/httpd $ ln -s phalconphp/public htdocs
devilbox@php-7.0.20 in /shared/httpd/my-phalcon $ ln -s phalconphp/public htdocs
```
**5. DNS record**
@ -284,7 +332,7 @@ If you do not have auto-DNS configured, you will need to add the following line
Open your browser at http://my-phalcon.loc
#### 2.5 Setup Symfony
#### 2.6 Setup Symfony
> **[Official Symfony Documentation](https://symfony.com/doc/current/setup.html)**
@ -310,17 +358,17 @@ host> ./shell.sh
# 2. Create a new VirtualHost directory
devilbox@php-7.0.20 in /shared/httpd $ mkdir my-symfony
devilbox@php-7.0.20 in /shared/httpd $ cd my-symfony
# 3. Install Symfony via symfony
devilbox@php-7.0.20 in /shared/httpd $ cd my-symfony
devilbox@php-7.0.20 in /shared/httpd $ symfony new symfony
devilbox@php-7.0.20 in /shared/httpd/my-symfony $ symfony new symfony
# 4. Symlink web directory
devilbox@php-7.0.20 in /shared/httpd $ ln -s symfony/web htdocs
devilbox@php-7.0.20 in /shared/httpd/my-symfony $ ln -s symfony/web htdocs
# 5. Enable Symfony production (app.php)
devilbox@php-7.0.20 in /shared/httpd $ cd symfony/web
devilbox@php-7.0.20 in /shared/httpd $ ln -s app.php index.php
devilbox@php-7.0.20 in /shared/httpd/my-symfony $ cd symfony/web
devilbox@php-7.0.20 in /shared/httpd/my-symfony/symfony/web $ ln -s app.php index.php
```
**6. DNS record**
@ -335,7 +383,7 @@ If you do not have auto-DNS configured, you will need to add the following line
Open your browser at http://my-symfony.loc
#### 2.6 Setup Wordpress
#### 2.7 Setup Wordpress
> **[Official Wordpress Documentation](https://codex.wordpress.org/Installing_WordPress)**
@ -360,13 +408,13 @@ host> ./shell.sh
# 2. Create a new VirtualHost directory
devilbox@php-7.0.20 in /shared/httpd $ mkdir my-wp
devilbox@php-7.0.20 in /shared/httpd $ cd my-wp
# 3. Download Wordpress via git
devilbox@php-7.0.20 in /shared/httpd $ cd my-wp
devilbox@php-7.0.20 in /shared/httpd $ git clone https://github.com/WordPress/WordPress wordpress.git
devilbox@php-7.0.20 in /shared/httpd/my-wp $ git clone https://github.com/WordPress/WordPress wordpress.git
# 4. Symlink wordpress git directory
devilbox@php-7.0.20 in /shared/httpd $ ln -s wordpress.git htdocs
devilbox@php-7.0.20 in /shared/httpd/my-wp $ ln -s wordpress.git htdocs
```
**5. DNS record**
@ -381,7 +429,7 @@ If you do not have auto-DNS configured, you will need to add the following line
Open your browser at http://my-wp.loc
#### 2.7 Setup Yii
#### 2.8 Setup Yii
> **[Official Yii Documentation](http://www.yiiframework.com/doc-2.0/guide-start-installation.html)**
@ -406,13 +454,13 @@ host> ./shell.sh
# 2. Create a new VirtualHost directory
devilbox@php-7.0.20 in /shared/httpd $ mkdir my-yii
devilbox@php-7.0.20 in /shared/httpd $ cd my-yii
# 3. Install Yii2 via composer
devilbox@php-7.0.20 in /shared/httpd $ cd my-yii
devilbox@php-7.0.20 in /shared/httpd $ composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic yii2-dev
devilbox@php-7.0.20 in /shared/httpd/my-yii $ composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic yii2-dev
# 4. Symlink web directory
devilbox@php-7.0.20 in /shared/httpd $ ln -s yii2-dev/web htdocs
devilbox@php-7.0.20 in /shared/httpd/my-yii $ ln -s yii2-dev/web htdocs
```
**5. DNS record**
@ -427,7 +475,7 @@ If you do not have auto-DNS configured, you will need to add the following line
Open your browser at http://my-yii.loc
#### 2.8 Setup Zend
#### 2.9 Setup Zend
> **[Official Zend Documentation](https://docs.zendframework.com/tutorials/getting-started/skeleton-application/)**
@ -452,13 +500,13 @@ host> ./shell.sh
# 2. Create a new VirtualHost directory
devilbox@php-7.0.20 in /shared/httpd $ mkdir my-zend
devilbox@php-7.0.20 in /shared/httpd $ cd my-zend
# 3. Install Zendframework via composer
devilbox@php-7.0.20 in /shared/httpd $ cd my-zend
devilbox@php-7.0.20 in /shared/httpd $ composer create-project --prefer-dist zendframework/skeleton-application zend
devilbox@php-7.0.20 in /shared/httpd/my-zend $ composer create-project --prefer-dist zendframework/skeleton-application zend
# 4. Symlink public directory
devilbox@php-7.0.20 in /shared/httpd $ ln -s zend/public htdocs
devilbox@php-7.0.20 in /shared/httpd/my-zend $ ln -s zend/public htdocs
```
**5. DNS record**

View File

@ -40,6 +40,7 @@ FAQ
3. **[Usage](#3-usage)**
- [Does it work with CakePHP?](#does-it-work-with-cakephp)
- [Does it work with Drupal?](#does-it-work-with-drupal)
- [Does it work with Joomla?](#does-it-work-with-joomla)
- [Does it work with Laravel?](#does-it-work-with-laravel)
- [Does it work with PhalconPHP?](#does-it-work-with-phalconphp)
- [Does it work with Symfony?](#does-it-work-with-symfony)
@ -160,29 +161,33 @@ Yes, see **[How to setup CakePHP](Examples.md#21-setup-cakephp)**.
Yes, see **[How to setup Drupal](Examples.md#22-setup-drupal)**.
#### Does it work with Joomla?
Yes, see **[How to setup Joomla](Examples.md#23-setup-joomla)**.
#### Does it work with Laravel?
Yes, see **[How to setup Laravel](Examples.md#23-setup-laravel)**.
Yes, see **[How to setup Laravel](Examples.md#24-setup-laravel)**.
#### Does it work with PhalconPHP?
Yes, see **[How to setup Phalcon](Examples.md#24-setup-phalcon)**.
Yes, see **[How to setup Phalcon](Examples.md#25-setup-phalcon)**.
#### Does it work with Symfony?
Yes, see **[How to setup Symfony](Examples.md#25-setup-symfony)**.
Yes, see **[How to setup Symfony](Examples.md#26-setup-symfony)**.
#### Does it work with Wordpress?
Yes, see **[How to setup Wordpress](Examples.md#26-setup-wordpress)**.
Yes, see **[How to setup Wordpress](Examples.md#27-setup-wordpress)**.
#### Does it work with Yii?
Yes, see **[How to setup Yii](Examples.md#27-setup-yii)**.
Yes, see **[How to setup Yii](Examples.md#28-setup-yii)**.
#### Does it work with Zend Framework?
Yes, see **[How to setup Zend](Examples.md#28-setup-zend)**.
Yes, see **[How to setup Zend](Examples.md#29-setup-zend)**.
## 4. Troubleshooting

View File

@ -191,12 +191,13 @@ To quickly find setup instructions for your framework of choice head over to **[
> 2. [Project setup](Examples.md#2-project-setup)
> 1. [Setup CakePHP](Examples.md#21-setup-cakephp)
> 2. [Setup Drupal](Examples.md#22-setup-drupal)
> 3. [Setup Laravel](Examples.md#23-setup-laravel)
> 4. [Setup Phalcon](Examples.md#24-setup-phalcon)
> 5. [Setup Symfony](Examples.md#25-setup-symfony)
> 6. [Setup Wordpress](Examples.md#26-setup-wordpress)
> 7. [Setup Yii](Examples.md#27-setup-yii)
> 8. [Setup Zend](Examples.md#28-setup-zend)
> 3. [Setup Joomla](Examples.md#23-setup-joomla)
> 4. [Setup Laravel](Examples.md#24-setup-laravel)
> 5. [Setup Phalcon](Examples.md#25-setup-phalcon)
> 6. [Setup Symfony](Examples.md#26-setup-symfony)
> 7. [Setup Wordpress](Examples.md#27-setup-wordpress)
> 8. [Setup Yii](Examples.md#28-setup-yii)
> 9. [Setup Zend](Examples.md#29-setup-zend)
## 6. Enter the PHP Docker container

BIN
docs/img/logos/joomla.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -8,6 +8,8 @@
###
### No need to rebuild any dockers!
###
### For custom variables, scroll to the bottom
###
###
@ -16,7 +18,7 @@
###
### 1: Yes
### 0: No
DEBUG_COMPOSE_ENTRYPOINT=0
DEBUG_COMPOSE_ENTRYPOINT=1
###
@ -49,7 +51,7 @@ DEVILBOX_PATH=.
### b.) If an IP is specified, note the trailing colon ':'
### LOCAL_LISTEN_ADDR=127.0.0.1:
###
LOCAL_LISTEN_ADDR=127.0.0.1:
LOCAL_LISTEN_ADDR=
###
@ -70,20 +72,6 @@ LOCAL_LISTEN_ADDR=127.0.0.1:
TLD_SUFFIX=loc
###
### TLD_SUFFIX domains are checked if they are set in the
### host computer /etc/hosts or available via attached DNS server.
### Timeout is done on vhosts.php (intranet) via ajax calls.
### In order to keep performance, set this to a low value.
### DNS checks might not succeed in time on slow machines.
### If DNS is valid, but timeout is expired, set this to a higher value.
###
### DNS_CHECK_TIMEOUT value is how many seconds to time out
### Default is to timeout after 1 second (DNS_CHECK_TIMEOUT=1)
###
DNS_CHECK_TIMEOUT=1
###
### Set your user id and group id
###
@ -102,6 +90,28 @@ NEW_GID=1000
TIMEZONE=Europe/Berlin
################################################################################
###
### INTRANET SETTINGS
###
################################################################################
###
### TLD_SUFFIX domains are checked if they are set in the
### host computer /etc/hosts or available via attached DNS server.
### Timeout is done on vhosts.php (intranet) via ajax calls.
### In order to keep performance, set this to a low value.
### DNS checks might not succeed in time on slow machines.
### If DNS is valid, but timeout is expired, set this to a higher value.
###
### DNS_CHECK_TIMEOUT value is how many seconds to time out
### Default is to timeout after 1 second (DNS_CHECK_TIMEOUT=1)
###
DNS_CHECK_TIMEOUT=1
###
### Devilbox UI Password protection enable/disable (1/0)
###
@ -132,6 +142,16 @@ DEVILBOX_UI_PROTECT=0
DEVILBOX_UI_PASSWORD=password
###
### Disable the Devilbox Intranet?
###
### Example:
### DEVILBOX_UI_PROTECT=1
### DEVILBOX_UI_PROTECT=0
###
DEVILBOX_UI_DISABLE=0
################################################################################
###
@ -192,6 +212,7 @@ MYSQL_SERVER=mariadb-10.1
#PGSQL_SERVER=9.4
#PGSQL_SERVER=9.5
PGSQL_SERVER=9.6
#PGSQL_SERVER=10.0
###
@ -199,13 +220,14 @@ PGSQL_SERVER=9.6
###
#REDIS_SERVER=2.8
#REDIS_SERVER=3.0
REDIS_SERVER=3.2
#REDIS_SERVER=3.2
REDIS_SERVER=4.0
###
### 1.6 Choose Memcached Server Image
###
MEMCD_SERVER=1.4.21
#MEMCD_SERVER=1.4.21
#MEMCD_SERVER=1.4.22
#MEMCD_SERVER=1.4.23
#MEMCD_SERVER=1.4.24
@ -221,6 +243,12 @@ MEMCD_SERVER=1.4.21
#MEMCD_SERVER=1.4.34
#MEMCD_SERVER=1.4.35
#MEMCD_SERVER=1.4.36
#MEMCD_SERVER=1.4.37
#MEMCD_SERVER=1.4.38
#MEMCD_SERVER=1.4.39
#MEMCD_SERVER=1.5.0
#MEMCD_SERVER=1.5.1
MEMCD_SERVER=1.5.2
#MEMCD_SERVER=latest
@ -351,6 +379,26 @@ PHP_XDEBUG_REMOTE_HOST=192.168.0.215
###
HOST_PORT_HTTPD=80
###
### Document Root Subdirectory
###
### In your project directory, which subfolder should
### serve your files?
###
### When changing this value, restart the devilbox.
###
HTTPD_DOCROOT_DIR=htdocs
###
### Per vHost Config Subdirectory
###
### In your project directory, which subfolder should
### hold apache, nginx templates for a customized vhost?
###
### When changing this value, restart the devilbox.
###
HTTPD_TEMPLATE_DIR=.devilbox
################################################################################
@ -460,3 +508,25 @@ HOST_PORT_BIND=1053
### You can also add DNS servers from your LAN (if any are available)
###
BIND_DNS_RESOLVER=8.8.8.8,8.8.4.4
################################################################################
###
### 11. Custom variables
###
################################################################################
###
### Any variable defined in this file will be available
### as environment variables to your PHP/HHV Docker container.
###
### This might be useful to set application environment and retriev
### them via: <?php getenv('MY_APPLICATION_ENV'); ?>
###
###
### Example:
### <?php echo getenv('Foo');?> would produce: 'some value'
###
#Foo=some value

View File

@ -33,10 +33,10 @@ docker pull cytopia/hhvm-latest:${TAG}
### HTTPD
###
TAG="$( grep '^[[:space:]]*image:.*\${HTTPD_SERVER' "${CWD}/docker-compose.yml" | sed 's/^.*://g' )"
docker pull cytopia/nginx-stable:${TAG}
docker pull cytopia/nginx-mainline:${TAG}
docker pull cytopia/apache-2.2:${TAG}
docker pull cytopia/apache-2.4:${TAG}
docker pull devilbox/nginx-stable:${TAG}
docker pull devilbox/nginx-mainline:${TAG}
docker pull devilbox/apache-2.2:${TAG}
docker pull devilbox/apache-2.4:${TAG}
###
### MYSQL