apache/scripts/install_apache.php
2023-12-02 22:23:20 +01:00

115 lines
3.9 KiB
PHP

<?php
use PhangoApp\LeviathanUtils\Linux;
include('leviathanutils/vendor/autoload.php');
$linux_distro=Linux::get_linux_distro();
$conf_vhosts="IncludeOptional vhosts.d/*.conf";
Linux::json_log('Installing Apache server', $error=0, $status=0, $progress=0, $no_progress=1);
$debian_package='apache2 logrotate socat curl';
$redhat_package='httpd mod_ssl openssl tar socat policycoreutils-python-utils wget';
$linux_package=['debian' => $debian_package, 'ubuntu' => $debian_package, 'fedora' => $redhat_package, 'almalinux' => $redhat_package, 'rocky' => $redhat_package, 'arch' => 'apache'];
Linux::install_package($linux_package);
Linux::json_log('Create directories for Apache manager...', $error=0, $status=0, $progress=0, $no_progress=1);
$create_dirs=['debian' => ["sudo mkdir -p /etc/apache2/vhosts.d/ && sudo mkdir -p /etc/apache2/vhosts.d/php/ && sudo mkdir -p /etc/apache2/vhosts.d/extra/"]];
$create_dirs['ubuntu']=$create_dirs['debian'];
$create_dirs['fedora']=["sudo mkdir -p /etc/httpd/vhosts.d/{php,extra} "];
$create_dirs['almalinux']=$create_dirs['fedora'];
$create_dirs['rocky']=$create_dirs['fedora'];
Linux::exec($create_dirs);
if(!file_put_contents('vhosts.conf', $conf_vhosts)) {
Linux::json_log('Error: cannot create vhosts.conf', $error=1, $status=1, $progress=100, $no_progress=0);
exit(1);
}
$create_vhost_file=['debian' => ["sudo mv vhosts.conf /etc/apache2/sites-enabled/ && sudo chown root:root /etc/apache2/sites-enabled/vhosts.conf"]];
$create_vhost_file['ubuntu']=$create_vhost_file['debian'];
//echo 'deb blah ... blah' | sudo tee -a /etc/apt/sources.list
//$create_vhost_file['fedora']=["sudo mv vhosts.conf /etc/httpd/conf.d/zzz-vhosts.conf && sudo chown root:root /etc/httpd/conf.d/zzz-vhosts.conf && sudo chmod 644 /etc/httpd/conf.d/zzz-vhosts.conf"];
$create_vhost_file['fedora']=["echo ${conf_vhosts} | sudo tee -a /etc/httpd/conf/httpd.conf"];
$create_vhost_file['almalinux']=$create_vhost_file['fedora'];
$create_vhost_file['rocky']=$create_vhost_file['fedora'];
Linux::exec($create_vhost_file);
//Modifying apache configuration
Linux::json_log('Modifying Apache configuration...', $error=0, $status=0, $progress=0, $no_progress=1);
if($linux_distro=='ubuntu' || $linux_distro=='debian') {
$sed_apache=['debian' => ['ServerTokens OS', "ServerTokens Prod", '/etc/apache2/conf-enabled/security.conf']];
$sed_apache['ubuntu']=$sed_apache['debian'];
Linux::sed($sed_apache);
}
// In red hat derivatives is different.
if($linux_distro=='rocky' || $linux_distro=='almalinux' || $linux_distro=='fedora') {
#echo 'deb blah ... blah' | sudo tee -a /etc/apt/sources.list
$add_tokens['rocky']=["sudo echo \"ServerTokens Prod\" | sudo tee -a /etc/httpd/conf.d/tokens.conf"];
$add_tokens['almalinux']=$add_tokens['rocky'];
$add_tokens['fedora']=$add_tokens['rocky'];
Linux::exec($add_tokens);
}
//Activating modules for apache/debian.
if($linux_distro=='ubuntu' || $linux_distro=='debian') {
$activate_modules=['debian' => ["sudo a2enmod ssl rewrite proxy proxy_fcgi headers"]];
$activate_modules['ubuntu']=$create_vhost_file['debian'];
Linux::exec($activate_modules);
}
if($linux_distro=='rocky' || $linux_distro=='almalinux' || $linux_distro=='fedora') {
if(Linux::shell_command(['sudo systemctl status firewalld'], 0)==0) {
Linux::shell_command(["sudo firewall-cmd --add-service=http && sudo firewall-cmd --add-service=http --permanent && sudo firewall-cmd --add-service=https && sudo firewall-cmd --add-service=https --permanent"]);
}
}
//Restart apache
$linux_service=['debian' => 'apache2', 'ubuntu' => 'apache2', 'fedora' => 'httpd', 'almalinux' => 'httpd', 'rocky' => 'httpd', 'arch' => 'httpd'];
Linux::systemd_service('restart', $linux_service);
Linux::json_log('Apache server installed successfully!', $error=0, $status=0, $progress=100, $no_progress=0);