mirror of
https://github.com/joglomedia/LEMPer.git
synced 2026-04-11 23:48:19 +00:00
adding decorator
This commit is contained in:
23
lemper.sh
23
lemper.sh
@@ -31,23 +31,28 @@
|
||||
|
||||
set -e # Work even if somebody does "sh thisscript.sh".
|
||||
|
||||
# Include decorator
|
||||
if [ "$(type -t run)" != "function" ]; then
|
||||
. scripts/decorator.sh
|
||||
fi
|
||||
|
||||
# Make sure only root can run this installer script
|
||||
if [ $(id -u) -ne 0 ]; then
|
||||
echo "This script must be run as root..."
|
||||
exit 0
|
||||
error "This script must be run as root..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Make sure this script only run on Ubuntu install
|
||||
if [ ! -f "/etc/lsb-release" ]; then
|
||||
echo "This installer only work on Ubuntu server..."
|
||||
exit 0
|
||||
warning "This installer only work on Ubuntu server..."
|
||||
exit 1
|
||||
else
|
||||
# Variables
|
||||
arch=$(uname -p)
|
||||
IPAddr=$(hostname -i)
|
||||
|
||||
# export lsb-release vars
|
||||
. /etc/lsb-release
|
||||
. /etc/lsb-release
|
||||
|
||||
MAJOR_RELEASE_NUMBER=$(echo $DISTRIB_RELEASE | awk -F. '{print $1}')
|
||||
fi
|
||||
@@ -60,18 +65,18 @@ cat <<- _EOF_
|
||||
#========================================================================#
|
||||
# A small tool to install Nginx + MariaDB (MySQL) + PHP on Linux #
|
||||
# #
|
||||
# For more information please visit http://www.ngxtools.cf #
|
||||
# For more information please visit https://ngxtools.eslabs.id #
|
||||
#========================================================================#
|
||||
_EOF_
|
||||
sleep 1
|
||||
}
|
||||
header_msg
|
||||
|
||||
echo "Starting LEMP installation, ensure that you're on a fresh box install!"
|
||||
echo "Starting LEMP installation... Please ensure that you're on a fresh box install!"
|
||||
read -t 10 -p "Press [Enter] to continue..." </dev/tty
|
||||
|
||||
### Clean up ###
|
||||
. scripts/remove_apache.sh
|
||||
. scripts/clean_server.sh
|
||||
|
||||
### ADD Repos ###
|
||||
. scripts/add_repo.sh
|
||||
@@ -97,7 +102,7 @@ read -t 10 -p "Press [Enter] to continue..." </dev/tty
|
||||
|
||||
### FINAL STEP ###
|
||||
# Cleaning up all build dependencies hanging around on production server?
|
||||
apt-get autoremove -y
|
||||
run apt-get autoremove -y
|
||||
|
||||
clear
|
||||
echo "#==========================================================================#"
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Include decorator
|
||||
if [ "$(type -t run)" != "function" ]; then
|
||||
BASEDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )
|
||||
. ${BASEDIR}/decorator.sh
|
||||
fi
|
||||
|
||||
echo "Adding repositories..."
|
||||
|
||||
if [[ "$DISTRIB_RELEASE" == "14.04" || "$MAJOR_RELEASE_NUMBER" == "17" ]]; then
|
||||
@@ -8,38 +14,38 @@ if [[ "$DISTRIB_RELEASE" == "14.04" || "$MAJOR_RELEASE_NUMBER" == "17" ]]; then
|
||||
|
||||
# Nginx custom with ngx cache purge
|
||||
# https://rtcamp.com/wordpress-nginx/tutorials/single-site/fastcgi-cache-with-purging/
|
||||
add-apt-repository ppa:rtcamp/nginx
|
||||
run add-apt-repository ppa:rtcamp/nginx
|
||||
|
||||
# MariaDB 10.2 repo
|
||||
MARIADB_VER="10.2"
|
||||
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
|
||||
run apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xcbcb082a1bb943db
|
||||
#add-apt-repository 'deb http://ftp.osuosl.org/pub/mariadb/repo/10.2/ubuntu trusty main'
|
||||
elif [[ "$DISTRIB_RELEASE" == "16.04" || "$MAJOR_RELEASE_NUMBER" == "18" ]]; then
|
||||
# Ubuntu release 16.04, LinuxMint 18
|
||||
DISTRIB_REPO="xenial"
|
||||
|
||||
# Nginx custom repo with ngx cache purge
|
||||
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3050AC3CD2AE6F03
|
||||
sh -c "echo 'deb http://download.opensuse.org/repositories/home:/rtCamp:/EasyEngine/xUbuntu_16.04/ /' >> /etc/apt/sources.list.d/nginx-xenial.list"
|
||||
run apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3050AC3CD2AE6F03
|
||||
run sh -c "echo 'deb http://download.opensuse.org/repositories/home:/rtCamp:/EasyEngine/xUbuntu_16.04/ /' >> /etc/apt/sources.list.d/nginx-xenial.list"
|
||||
|
||||
# MariaDB 10.3 repo
|
||||
MARIADB_VER="10.3"
|
||||
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
|
||||
run apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xF1656F24C74CD1D8
|
||||
#add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.osuosl.org/pub/mariadb/repo/10.3/ubuntu xenial main'
|
||||
elif [[ "$DISTRIB_RELEASE" == "18.04" || "$MAJOR_RELEASE_NUMBER" == "19" ]]; then
|
||||
# Ubuntu release 18.04, LinuxMint 19
|
||||
DISTRIB_REPO="bionic"
|
||||
|
||||
# Nginx repo
|
||||
apt-key fingerprint ABF5BD827BD9BF62
|
||||
add-apt-repository ppa:nginx/stable
|
||||
run apt-key fingerprint ABF5BD827BD9BF62
|
||||
run add-apt-repository ppa:nginx/stable
|
||||
|
||||
# MariaDB 10.3 repo
|
||||
MARIADB_VER="10.3"
|
||||
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
|
||||
run apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xF1656F24C74CD1D8
|
||||
#add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.osuosl.org/pub/mariadb/repo/10.3/ubuntu bionic main'
|
||||
else
|
||||
echo "Sorry, this installation script only work for Ubuntu 14.04, 16.04 & 18.04 and Linux Mint 17, 18 & 19."
|
||||
warning "Sorry, this installation script only work for Ubuntu 14.04, 16.04 & 18.04 and Linux Mint 17, 18 & 19."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
@@ -56,15 +62,16 @@ fi
|
||||
|
||||
# Add PHP (latest stable) from Ondrej's repo
|
||||
# Source: https://launchpad.net/~ondrej/+archive/ubuntu/php
|
||||
add-apt-repository ppa:ondrej/php -y
|
||||
run add-apt-repository ppa:ondrej/php -y
|
||||
# Fix for NO_PUBKEY key servers error
|
||||
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C
|
||||
run apt-key adv --keyserver khkp://keyserver.ubuntu.com:80 --recv-keys 4F4EA0AAE5267A6C
|
||||
|
||||
echo "Update repository and install pre-requisites..."
|
||||
echo "Updating repository and install pre-requisites..."
|
||||
|
||||
# Update repos
|
||||
apt-get update -y
|
||||
run apt-get update -y
|
||||
|
||||
# Install pre-requirements
|
||||
apt-get install -y software-properties-common python-software-properties build-essential git unzip cron curl gnupg2 ca-certificates lsb-release rsync openssl snmp spawn-fcgi fcgiwrap geoip-database
|
||||
run apt-get install -y software-properties-common python-software-properties build-essential git unzip cron curl gnupg2 ca-certificates lsb-release rsync openssl snmp spawn-fcgi fcgiwrap geoip-database
|
||||
|
||||
status "Adding repositories completed..."
|
||||
|
||||
19
scripts/clean_server.sh
Executable file
19
scripts/clean_server.sh
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Remove Apache2 & mysql services if exist
|
||||
|
||||
if [[ -n $(which apache2) ]]; then
|
||||
echo "Uninstall existing Apache web server..."
|
||||
killall -9 apache2
|
||||
service apache2 stop
|
||||
apt-get --purge remove -y apache2 apache2-doc apache2-utils apache2.2-common apache2.2-bin apache2-mpm-prefork apache2-doc apache2-mpm-worker
|
||||
fi
|
||||
|
||||
if [[ -n $(which mysql) ]]; then
|
||||
echo "Uninstall existing MySQL database server..."
|
||||
killall -9 mysql
|
||||
service mysqld stop
|
||||
apt-get --purge remove -y mysql-client mysql-server mysql-common
|
||||
fi
|
||||
|
||||
apt-get autoremove -y
|
||||
30
scripts/cleanup_server.sh
Executable file
30
scripts/cleanup_server.sh
Executable file
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Include decorator
|
||||
if [ "$(type -t run)" != "function" ]; then
|
||||
BASEDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )
|
||||
. ${BASEDIR}/decorator.sh
|
||||
fi
|
||||
|
||||
# Remove Apache2 services if exist
|
||||
if [[ -n $(which apache2) ]]; then
|
||||
warning "It seems Apache web server installed on this machine. We should remove it!"
|
||||
read -t 10 -p "Press [Enter] to continue..." </dev/tty
|
||||
echo "Uninstall existing Apache web server..."
|
||||
run service apache2 stop
|
||||
#killall -9 apache2
|
||||
run apt-get --purge remove -y apache2 apache2-doc apache2-utils apache2.2-common apache2.2-bin apache2-mpm-prefork apache2-doc apache2-mpm-worker
|
||||
fi
|
||||
|
||||
# Remove Mysql services if exist
|
||||
if [[ -n $(which mysql) ]]; then
|
||||
warning "It seems Mysql database server installed on this machine. We should remove it!"
|
||||
echo "Backup your database before continue!"
|
||||
read -t 10 -p "Press [Enter] to continue..." </dev/tty
|
||||
echo "Uninstall existing MySQL database server..."
|
||||
run service mysqld stop
|
||||
#killall -9 mysql
|
||||
run apt-get --purge remove -y mysql-client mysql-server mysql-common
|
||||
fi
|
||||
|
||||
status "Server cleaned up..."
|
||||
75
scripts/decorator.sh
Normal file
75
scripts/decorator.sh
Normal file
@@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Dry run
|
||||
DRYRUN=false
|
||||
|
||||
# Decorator
|
||||
RED=31
|
||||
GREEN=32
|
||||
YELLOW=33
|
||||
|
||||
function begin_color() {
|
||||
color="$1"
|
||||
echo -e -n "\e[${color}m"
|
||||
}
|
||||
|
||||
function end_color() {
|
||||
echo -e -n "\e[0m"
|
||||
}
|
||||
|
||||
function echo_color() {
|
||||
color="$1"
|
||||
shift
|
||||
begin_color "$color"
|
||||
echo "$@"
|
||||
end_color
|
||||
}
|
||||
|
||||
function error() {
|
||||
local error_message="$@"
|
||||
echo_color "$RED" -n "Error: " >&2
|
||||
echo "$@" >&2
|
||||
}
|
||||
|
||||
# Prints an error message and exits with an error code.
|
||||
function fail() {
|
||||
error "$@"
|
||||
|
||||
# Normally I'd use $0 in "usage" here, but since most people will be running
|
||||
# this via curl, that wouldn't actually give something useful.
|
||||
echo >&2
|
||||
echo "For usage information, run this script with --help" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
function status() {
|
||||
echo_color "$GREEN" "$@"
|
||||
}
|
||||
|
||||
function warning() {
|
||||
echo_color "$YELLOW" "$@"
|
||||
}
|
||||
|
||||
# If we set -e or -u then users of this script will see it silently exit on
|
||||
# failure. Instead we need to check the exit status of each command manually.
|
||||
# The run function handles exit-status checking for system-changing commands.
|
||||
# Additionally, this allows us to easily have a dryrun mode where we don't
|
||||
# actually make any changes.
|
||||
INITIAL_ENV=$(printenv | sort)
|
||||
function run() {
|
||||
if "$DRYRUN"; then
|
||||
echo_color "$YELLOW" -n "would run"
|
||||
echo " $@"
|
||||
env_differences=$(comm -13 <(echo "$INITIAL_ENV") <(printenv | sort))
|
||||
|
||||
if [ -n "$env_differences" ]; then
|
||||
echo " with the following additional environment variables:"
|
||||
echo "$env_differences" | sed 's/^/ /'
|
||||
fi
|
||||
else
|
||||
if ! "$@"; then
|
||||
error "Failure running '$@', exiting."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
@@ -5,25 +5,31 @@
|
||||
# Last Build : 09/09/2017
|
||||
# Author : MasEDI.Net (hi@masedi.net)
|
||||
|
||||
# Include decorator
|
||||
if [ "$(type -t run)" != "function" ]; then
|
||||
BASEDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )
|
||||
. ${BASEDIR}/decorator.sh
|
||||
fi
|
||||
|
||||
# Make sure only root can run this installer script
|
||||
if [ $(id -u) -ne 0 ]; then
|
||||
echo "This script must be run as root..."
|
||||
exit 0
|
||||
error "This script must be run as root..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
clear
|
||||
echo "+=========================================================================+"
|
||||
echo "+ Certbot Let's Encrypt Installer for Ubuntu VPS, Written by MasEDI.Net +"
|
||||
echo "+ Certbot Let's Encrypt Installer for Ubuntu VPS, Written by ESLabs.ID +"
|
||||
echo "+=========================================================================+"
|
||||
echo "+ A small tool to install Certbot & Let's Enscrypt SSL certificate +"
|
||||
echo "+ +"
|
||||
echo "+ For more information please visit http://masedi.net/tools/ +"
|
||||
echo "+ For more information please visit https://ngxtools.eslabs.id +"
|
||||
echo "+=========================================================================+"
|
||||
sleep 1
|
||||
|
||||
add-apt-repository ppa:certbot/certbot
|
||||
apt-get update
|
||||
apt-get install certbot
|
||||
run add-apt-repository ppa:certbot/certbot
|
||||
run apt-get update
|
||||
run apt-get install certbot
|
||||
|
||||
# Add this certbot renew command to cron
|
||||
#15 3 * * * /usr/bin/certbot renew --quiet --renew-hook "/bin/systemctl reload nginx"
|
||||
|
||||
@@ -1,53 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Include decorator
|
||||
if [ "$(type -t run)" != "function" ]; then
|
||||
BASEDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )
|
||||
. ${BASEDIR}/decorator.sh
|
||||
fi
|
||||
|
||||
echo "Installing Nginx webserver..."
|
||||
|
||||
# Install Nginx custom
|
||||
apt-get install -y --allow-unauthenticated nginx-stable
|
||||
if [[ -n $(which nginx) && -d /etc/nginx/sites-available ]]; then
|
||||
warning "Nginx web server already exists. Installation skipped..."
|
||||
else
|
||||
# Install Nginx custom
|
||||
run apt-get install -y --allow-unauthenticated nginx-stable
|
||||
|
||||
# Copy custom Nginx Config
|
||||
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.old
|
||||
cp -f nginx/nginx.conf /etc/nginx/
|
||||
cp -f nginx/fastcgi_cache /etc/nginx/
|
||||
cp -f nginx/fastcgi_https_map /etc/nginx/
|
||||
cp -f nginx/fastcgi_params /etc/nginx/
|
||||
cp -f nginx/http_cloudflare_ips /etc/nginx/
|
||||
cp -f nginx/http_proxy_ips /etc/nginx/
|
||||
cp -f nginx/proxy_cache /etc/nginx/
|
||||
cp -f nginx/proxy_params /etc/nginx/
|
||||
cp -f nginx/upstream.conf /etc/nginx/
|
||||
cp -fr nginx/conf.vhost/ /etc/nginx/
|
||||
cp -fr nginx/ssl/ /etc/nginx/
|
||||
mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.old
|
||||
cp -f nginx/sites-available/default /etc/nginx/sites-available/
|
||||
cp -f nginx/sites-available/phpmyadmin.conf /etc/nginx/sites-available/
|
||||
cp -f nginx/sites-available/sample-wordpress.dev.conf /etc/nginx/sites-available/
|
||||
cp -f nginx/sites-available/sample-wordpress-ms.dev.conf /etc/nginx/sites-available/
|
||||
cp -f nginx/sites-available/ssl.sample-site.dev.conf /etc/nginx/sites-available/
|
||||
unlink /etc/nginx/sites-enabled/default
|
||||
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/01-default
|
||||
# Copy custom Nginx Config
|
||||
run mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.old
|
||||
run cp -f nginx/nginx.conf /etc/nginx/
|
||||
run cp -f nginx/fastcgi_cache /etc/nginx/
|
||||
run cp -f nginx/fastcgi_https_map /etc/nginx/
|
||||
run cp -f nginx/fastcgi_params /etc/nginx/
|
||||
run cp -f nginx/http_cloudflare_ips /etc/nginx/
|
||||
run cp -f nginx/http_proxy_ips /etc/nginx/
|
||||
run cp -f nginx/proxy_cache /etc/nginx/
|
||||
run cp -f nginx/proxy_params /etc/nginx/
|
||||
run cp -f nginx/upstream.conf /etc/nginx/
|
||||
run cp -fr nginx/conf.vhost/ /etc/nginx/
|
||||
run cp -fr nginx/ssl/ /etc/nginx/
|
||||
run mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.old
|
||||
run cp -f nginx/sites-available/default /etc/nginx/sites-available/
|
||||
run cp -f nginx/sites-available/phpmyadmin.conf /etc/nginx/sites-available/
|
||||
run cp -f nginx/sites-available/sample-wordpress.dev.conf /etc/nginx/sites-available/
|
||||
run cp -f nginx/sites-available/sample-wordpress-ms.dev.conf /etc/nginx/sites-available/
|
||||
run cp -f nginx/sites-available/ssl.sample-site.dev.conf /etc/nginx/sites-available/
|
||||
run unlink /etc/nginx/sites-enabled/default
|
||||
run ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/01-default
|
||||
|
||||
# Nginx cache directory
|
||||
if [ ! -d "/var/cache/nginx/" ]; then
|
||||
mkdir /var/cache/nginx
|
||||
chown -hR www-data: /var/cache/nginx
|
||||
# Nginx cache directory
|
||||
if [ ! -d "/var/cache/nginx/" ]; then
|
||||
run mkdir /var/cache/nginx
|
||||
run chown -hR www-data: /var/cache/nginx
|
||||
fi
|
||||
|
||||
if [ ! -d "/var/cache/nginx/fastcgi_cache" ]; then
|
||||
run mkdir /var/cache/nginx/fastcgi_cache
|
||||
run chown -hR www-data: /var/cache/nginx/fastcgi_cache
|
||||
fi
|
||||
|
||||
if [ ! -d "/var/cache/nginx/proxy_cache" ]; then
|
||||
run mkdir /var/cache/nginx/proxy_cache
|
||||
run chown -hR www-data: /var/cache/nginx/proxy_cache
|
||||
fi
|
||||
|
||||
# Check IP Address
|
||||
IPAddr=$(curl -s http://ipecho.net/plain)
|
||||
# Make default server accessible from IP address
|
||||
run sed -i s@localhost.localdomain@$IPAddr@g /etc/nginx/sites-available/default
|
||||
|
||||
# Restart Nginx server
|
||||
if [[ $(ps -ef | grep -v grep | grep nginx | wc -l) > 0 ]]; then
|
||||
run service nginx restart
|
||||
fi
|
||||
fi
|
||||
if [ ! -d "/var/cache/nginx/fastcgi_cache" ]; then
|
||||
mkdir /var/cache/nginx/fastcgi_cache
|
||||
chown -hR www-data: /var/cache/nginx/fastcgi_cache
|
||||
fi
|
||||
if [ ! -d "/var/cache/nginx/proxy_cache" ]; then
|
||||
mkdir /var/cache/nginx/proxy_cache
|
||||
chown -hR www-data: /var/cache/nginx/proxy_cache
|
||||
fi
|
||||
|
||||
# Check IP Address
|
||||
IPAddr=$(curl -s http://ipecho.net/plain)
|
||||
# Make default server accessible from IP address
|
||||
sed -i "s@localhost.localdomain@$IPAddr@g" /etc/nginx/sites-available/default
|
||||
|
||||
# Restart Nginx server
|
||||
if [[ $(ps -ef | grep -v grep | grep nginx | wc -l) > 0 ]]; then
|
||||
service nginx restart
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user