2023-12-21 00:37:07 +03:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# Nginx Docker Localtest
|
|
|
|
|
2023-12-21 01:58:33 +03:00
|
|
|
CONT_NAME="IFLRANDEVU_NGINX_LOCALTEST" # nginx docker name
|
|
|
|
MOUNT_PATH="/source" # binded mount path in nginx docker
|
|
|
|
SCRIPT_NAME="nginx_docker_localtest.sh" # name of the *this* file
|
2023-12-22 22:26:23 +03:00
|
|
|
DEBUG="FALSE"
|
2023-12-21 01:58:33 +03:00
|
|
|
|
|
|
|
### REMOTE RELEASE ###
|
|
|
|
LATEST_RELEASE="1.4.3-ifl.2"
|
|
|
|
FILE_NAME="iflrandevu-$LATEST_RELEASE.zip"
|
|
|
|
DOWNLOAD_LINK=https://git.aliberksandikci.com.tr/ifl/iflrandevu/releases/download/$LATEST_RELEASE/$FILE_NAME
|
|
|
|
|
2023-12-21 16:11:30 +03:00
|
|
|
WEB_ROOT_FOLDER="/usr/share/nginx/html/"
|
|
|
|
|
2023-12-22 22:26:23 +03:00
|
|
|
############################
|
|
|
|
############################
|
|
|
|
|
|
|
|
_RED='\033[0;31m'
|
|
|
|
_NC='\033[0m \e[0m' # No Color, No Effect
|
|
|
|
|
2023-12-21 16:11:30 +03:00
|
|
|
HELP="""
|
|
|
|
Usage:
|
|
|
|
dock [command] [subcommand]
|
|
|
|
|
|
|
|
COMMANDS:
|
2023-12-22 22:26:23 +03:00
|
|
|
${_RED}ini:${_NC} initialize dock command
|
2023-12-21 16:11:30 +03:00
|
|
|
install: install iflrandevu
|
|
|
|
local: get from local /source/
|
|
|
|
remote: get from git service
|
|
|
|
reconf : reconfigure configs
|
2023-12-22 22:26:23 +03:00
|
|
|
debug: change application debug status [ON / OFF]
|
2023-12-21 16:11:30 +03:00
|
|
|
restart: restart services (nginx, mariadb, php-fpm)
|
|
|
|
update: update source files with new build on /source/
|
2023-12-22 22:26:23 +03:00
|
|
|
status: see current webserver status
|
|
|
|
root: move to root web folder
|
2023-12-21 16:11:30 +03:00
|
|
|
help : see this help text
|
|
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
2023-12-21 01:58:33 +03:00
|
|
|
CONFIG_FILE_CONTENT="""
|
|
|
|
<?php
|
|
|
|
/* ----------------------------------------------------------------------------
|
|
|
|
* IFLRandevu - Izmir Fen Lisesi Randevu Portali
|
|
|
|
*
|
|
|
|
* @package iflrandevu
|
|
|
|
* @author asandikci <contact@aliberksandikci.com.tr>
|
|
|
|
* @copyright Copyleft 2023 - 2024
|
|
|
|
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
|
|
|
|
* @link https://iflpanel.com/about/iflrandevu
|
|
|
|
* @since v1.4.3
|
|
|
|
* ---------------------------------------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* IFLRandevu Configuration File
|
|
|
|
*/
|
|
|
|
class Config {
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------
|
|
|
|
// GENERAL SETTINGS
|
|
|
|
// ------------------------------------------------------------------------
|
|
|
|
|
|
|
|
const BASE_URL = 'http://localhost:8000';
|
|
|
|
const LANGUAGE = 'turkish';
|
2023-12-21 16:11:30 +03:00
|
|
|
const DEBUG_MODE = $DEBUG;
|
2023-12-21 01:58:33 +03:00
|
|
|
|
|
|
|
// ------------------------------------------------------------------------
|
|
|
|
// DATABASE SETTINGS
|
|
|
|
// ------------------------------------------------------------------------
|
|
|
|
|
|
|
|
const DB_HOST = 'localhost';
|
|
|
|
const DB_NAME = 'iflrandevu';
|
|
|
|
const DB_USERNAME = 'root';
|
|
|
|
const DB_PASSWORD = 'root';
|
|
|
|
|
|
|
|
// ------------------------------------------------------------------------
|
|
|
|
// GOOGLE CALENDAR SYNC
|
|
|
|
// ------------------------------------------------------------------------
|
|
|
|
|
|
|
|
const GOOGLE_SYNC_FEATURE = FALSE; // Enter TRUE or FALSE
|
|
|
|
const GOOGLE_PRODUCT_NAME = '';
|
|
|
|
const GOOGLE_CLIENT_ID = '';
|
|
|
|
const GOOGLE_CLIENT_SECRET = '';
|
|
|
|
const GOOGLE_API_KEY = '';
|
|
|
|
}
|
|
|
|
|
|
|
|
/* End of file config.php */
|
|
|
|
/* Location: ./config.php */
|
|
|
|
"""
|
|
|
|
|
2023-12-21 03:39:59 +03:00
|
|
|
OLD_CONFIG="""
|
|
|
|
server {
|
|
|
|
listen 80;
|
|
|
|
server_name localhost:8000;
|
2023-12-21 16:11:30 +03:00
|
|
|
root $WEB_ROOT_FOLDER;
|
2023-12-21 01:58:33 +03:00
|
|
|
|
2023-12-21 03:39:59 +03:00
|
|
|
access_log /var/log/nginx/example.journaldev.com-access.log;
|
|
|
|
error_log /var/log/nginx/example.journaldev.com-error.log error;
|
|
|
|
index index.php;
|
|
|
|
|
|
|
|
location / {
|
|
|
|
try_files \$uri \$uri/ /index.php\$is_args\$args;
|
|
|
|
}
|
|
|
|
|
|
|
|
location ~ \.php\$ {
|
|
|
|
fastcgi_split_path_info ^(.+\.php)(/.+)\$;
|
|
|
|
fastcgi_pass unix:/var/run/php/php8.2-fpm-iflrandevu.sock;
|
|
|
|
fastcgi_index index.php;
|
|
|
|
include fastcgi_params;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
"""
|
|
|
|
NGINX_CONFIG_FILE="""
|
2023-12-21 01:58:33 +03:00
|
|
|
server {
|
|
|
|
listen 80;
|
2023-12-21 03:39:59 +03:00
|
|
|
server_name localhost:8000;
|
2023-12-21 01:58:33 +03:00
|
|
|
|
|
|
|
location / {
|
2023-12-21 16:11:30 +03:00
|
|
|
alias $WEB_ROOT_FOLDER;
|
|
|
|
#root $WEB_ROOT_FOLDER;
|
2023-12-21 01:58:33 +03:00
|
|
|
index index.php;
|
|
|
|
|
|
|
|
# Common parameter to increase upload size limit in conjunction with dedicated php-fpm file
|
2023-12-21 03:39:59 +03:00
|
|
|
client_max_body_size 50M;
|
|
|
|
|
|
|
|
try_files \$uri \$uri/ index.php;
|
|
|
|
location ~ [^/]\.php(/|\$) {
|
|
|
|
fastcgi_split_path_info ^(.+?\.php)(/.*)\$;
|
|
|
|
fastcgi_pass unix:/var/run/php/php8.2-fpm-iflrandevu.sock;
|
|
|
|
|
|
|
|
fastcgi_index index.php;
|
|
|
|
include fastcgi_params;
|
|
|
|
fastcgi_param REMOTE_USER \$remote_user;
|
|
|
|
fastcgi_param PATH_INFO \$fastcgi_path_info;
|
|
|
|
fastcgi_param SCRIPT_FILENAME \$request_filename;
|
|
|
|
}
|
2023-12-21 01:58:33 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
error_page 500 502 503 504 /50x.html;
|
|
|
|
location = /50x.html {
|
2023-12-21 16:11:30 +03:00
|
|
|
root $WEB_ROOT_FOLDER;
|
2023-12-21 01:58:33 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
"""
|
|
|
|
|
2023-12-21 03:39:59 +03:00
|
|
|
PHP_FPM_CONFIG_FILE="""
|
|
|
|
[iflrandevu]
|
|
|
|
|
|
|
|
user = iflrandevu
|
|
|
|
group = iflrandevu
|
|
|
|
|
|
|
|
chdir = /usr/share/nginx/html
|
|
|
|
|
|
|
|
listen = /var/run/php/php8.2-fpm-iflrandevu.sock
|
|
|
|
listen.owner = nginx
|
|
|
|
listen.group = nginx
|
|
|
|
listen.mode = 0660
|
|
|
|
|
|
|
|
pm = ondemand
|
|
|
|
pm.max_children = 8
|
|
|
|
pm.max_requests = 500
|
|
|
|
request_terminate_timeout = 1d
|
|
|
|
|
|
|
|
|
|
|
|
pm.process_idle_timeout = 10s
|
|
|
|
|
|
|
|
; Additional php.ini defines, specific to this pool of workers.
|
|
|
|
|
|
|
|
php_admin_value[upload_max_filesize] = 50M
|
|
|
|
php_admin_value[post_max_size] = 50M
|
|
|
|
"""
|
|
|
|
|
2023-12-21 16:11:30 +03:00
|
|
|
_exit() {
|
|
|
|
echo
|
|
|
|
echo
|
|
|
|
echo -e "${_RED}exiting...${_NC}"
|
|
|
|
exit
|
|
|
|
}
|
|
|
|
|
2023-12-22 22:26:23 +03:00
|
|
|
_status() {
|
|
|
|
set +x
|
|
|
|
echo
|
|
|
|
echo
|
|
|
|
echo "----------------------------------"
|
|
|
|
echo -e "${_RED}SYSTEM STATUS HEAD${_NC}"
|
|
|
|
echo "----------------------------------"
|
|
|
|
service nginx status
|
|
|
|
service mariadb status
|
|
|
|
service php8.2-fpm status
|
|
|
|
echo "----------------------------------"
|
|
|
|
echo -e "${_RED}SYSTEM STATUS HEAD${_NC}"
|
|
|
|
echo "----------------------------------"
|
|
|
|
echo
|
|
|
|
echo
|
|
|
|
set -x
|
|
|
|
}
|
|
|
|
|
2023-12-21 16:11:30 +03:00
|
|
|
if [[ $# -eq 0 ]]; then
|
2023-12-21 00:37:07 +03:00
|
|
|
if [[ $(pwd) != *iflrandevu ]]; then
|
|
|
|
echo "PLEASE CHANGE DIRECTORY TO \`iflrandevu/\` BEFORE STARTING SCRIPT"
|
|
|
|
exit
|
|
|
|
fi
|
2023-12-21 16:11:30 +03:00
|
|
|
# TODO silmeden önce onay iste!
|
|
|
|
|
|
|
|
echo -e "${_RED}CONTAINER WILL BE REMOVED !!!${_NC} (10)"
|
|
|
|
sleep 10
|
2023-12-21 00:37:07 +03:00
|
|
|
docker stop $CONT_NAME
|
|
|
|
docker rm $CONT_NAME
|
|
|
|
echo "removed"
|
|
|
|
|
|
|
|
docker run -it -d --name "$CONT_NAME" --mount type=bind,source=".",target=/source/,readonly --publish 8000:80 nginx bash
|
2023-12-22 22:26:23 +03:00
|
|
|
echo -e "RUN SCRIPT: \`${_RED}bash $MOUNT_PATH/$SCRIPT_NAME docker ini${_NC}\`"
|
2023-12-21 00:37:07 +03:00
|
|
|
docker attach $CONT_NAME --detach-keys="ctrl-k"
|
2023-12-21 16:11:30 +03:00
|
|
|
_exit
|
2023-12-21 00:37:07 +03:00
|
|
|
|
2023-12-21 01:58:33 +03:00
|
|
|
elif [[ $1 == "attach" ]]; then
|
2023-12-22 22:26:23 +03:00
|
|
|
if [ -n "$(docker ps -f "name=$CONT_NAME" -f "status=running" -q)" ]; then
|
|
|
|
echo "the container is already running!"
|
|
|
|
else
|
|
|
|
docker start $CONT_NAME
|
|
|
|
fi
|
|
|
|
|
2023-12-21 01:58:33 +03:00
|
|
|
docker attach $CONT_NAME --detach-keys="ctrl-k"
|
|
|
|
|
2023-12-21 00:37:07 +03:00
|
|
|
elif [[ $1 == "docker" ]]; then
|
2023-12-21 03:39:59 +03:00
|
|
|
set -x
|
|
|
|
|
2023-12-22 22:26:23 +03:00
|
|
|
if [[ $2 == "ini" ]]; then
|
|
|
|
echo "alias dock=\"bash /source/$SCRIPT_NAME docker\"" >>/root/.bashrc
|
|
|
|
echo "alias root=\"cd $WEB_ROOT_FOLDER\"" >>/root/.bashrc
|
|
|
|
sleep 1
|
|
|
|
exec bash
|
|
|
|
|
|
|
|
elif [[ $2 == "debug" ]]; then
|
|
|
|
case "$3" in
|
|
|
|
["oO"]["nN"] | ["tT"]["rR"]["uU"]["eE"] | 1) sed -i "s/\(DEBUG_MODE * = *\).*/\1TRUE;/" "$WEB_ROOT_FOLDER/config.php" ;;
|
|
|
|
["oO"]["fF"]["fF"] | ["fF"]["aA"]["lL"]["sS"]["eE"] | 0) sed -i "s/\(DEBUG_MODE * = *\).*/\1FALSE;/" "$WEB_ROOT_FOLDER/config.php" ;;
|
|
|
|
*) echo -e "$_RED please input ON or OFF $_NC" ;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
elif [[ $2 == "restart" ]]; then
|
2023-12-21 03:39:59 +03:00
|
|
|
service mariadb restart
|
2023-12-22 22:26:23 +03:00
|
|
|
sleep 3
|
2023-12-21 03:39:59 +03:00
|
|
|
service php8.2-fpm restart
|
2023-12-22 22:26:23 +03:00
|
|
|
sleep 3
|
2023-12-21 03:39:59 +03:00
|
|
|
service nginx restart
|
|
|
|
|
2023-12-22 22:26:23 +03:00
|
|
|
_status
|
2023-12-21 03:39:59 +03:00
|
|
|
|
2023-12-21 16:11:30 +03:00
|
|
|
elif [[ $2 == "reconf" ]]; then
|
2023-12-21 01:58:33 +03:00
|
|
|
|
2023-12-21 16:11:30 +03:00
|
|
|
echo -e "$CONFIG_FILE_CONTENT" >"$WEB_ROOT_FOLDER/config.php"
|
2023-12-21 03:39:59 +03:00
|
|
|
echo -e "$NGINX_CONFIG_FILE" >"/etc/nginx/conf.d/default.conf"
|
|
|
|
echo -e "$PHP_FPM_CONFIG_FILE" >"/etc/php/8.2/fpm/pool.d/iflrandevu.conf"
|
|
|
|
echo RECONFIGURED
|
|
|
|
echo
|
2023-12-21 16:11:30 +03:00
|
|
|
_exit
|
|
|
|
elif [[ $2 == "update" ]]; then
|
|
|
|
echo "updating sources!"
|
2023-12-22 22:26:23 +03:00
|
|
|
rsync -a --progress /source/build/ $WEB_ROOT_FOLDER --exclude config.php --exclude storage
|
|
|
|
elif [[ $2 == "status" ]]; then
|
|
|
|
_status
|
2023-12-21 16:11:30 +03:00
|
|
|
|
|
|
|
elif [[ $2 == "install" ]]; then
|
|
|
|
if [[ $# -eq 2 || ! ($3 == "local" || $3 == "remote") ]]; then
|
|
|
|
echo -e "use $_RED dock install local $NC or $_RED dock install remote"
|
|
|
|
_exit
|
|
|
|
fi
|
|
|
|
sleep 1
|
|
|
|
apt update
|
|
|
|
apt install nano exa tree wget unzip less rsync -y
|
|
|
|
rm -rf $WEB_ROOT_FOLDER
|
|
|
|
mkdir -p $WEB_ROOT_FOLDER
|
|
|
|
cd $WEB_ROOT_FOLDER
|
|
|
|
if [[ $3 == "local" ]]; then
|
|
|
|
cp -r /source/build/* $WEB_ROOT_FOLDER/
|
|
|
|
elif [[ $3 == "remote" ]]; then
|
|
|
|
wget "$DOWNLOAD_LINK"
|
|
|
|
sleep 3
|
|
|
|
unzip $FILE_NAME
|
|
|
|
mv $FILE_NAME ../
|
|
|
|
|
|
|
|
else
|
|
|
|
echo -e "${_RED}use docker local or docker remote${_NC}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
### CONFIGURATIONS ###
|
|
|
|
apt install php php-fpm -y
|
|
|
|
apt install mariadb-server php-mysql -y
|
|
|
|
service mariadb start
|
|
|
|
mysql -u root -e "create database iflrandevu"
|
|
|
|
mysql -u root -e "set password for root@localhost = password('root');"
|
|
|
|
echo -e "$CONFIG_FILE_CONTENT" >"$WEB_ROOT_FOLDER/config.php"
|
|
|
|
echo -e "$NGINX_CONFIG_FILE" >"/etc/nginx/conf.d/default.conf"
|
|
|
|
echo -e "$PHP_FPM_CONFIG_FILE" >"/etc/php/8.2/fpm/pool.d/iflrandevu.conf"
|
|
|
|
groupadd iflrandevu
|
|
|
|
useradd -g iflrandevu iflrandevu
|
|
|
|
cd $WEB_ROOT_FOLDER
|
|
|
|
chown iflrandevu:nginx -R .
|
|
|
|
chmod 770 storage
|
|
|
|
|
|
|
|
service php8.2-fpm start
|
|
|
|
service nginx start
|
|
|
|
service nginx status
|
|
|
|
service nginx restart
|
|
|
|
echo -e "${_RED}DONE! - OPEN localhost:8000 TO TEST${_NC}"
|
|
|
|
elif [[ $2 == "help" ]]; then
|
|
|
|
echo -e "$HELP!"
|
2023-12-21 01:58:33 +03:00
|
|
|
else
|
2023-12-21 16:11:30 +03:00
|
|
|
echo -e "$_RED ! COMMAND NOT FOUND ! $_NC"
|
|
|
|
echo
|
|
|
|
echo -e "$HELP"
|
2023-12-21 01:58:33 +03:00
|
|
|
fi
|
|
|
|
|
2023-12-21 16:11:30 +03:00
|
|
|
else
|
|
|
|
echo -e "$_RED ! COMMAND NOT FOUND ! $_NC"
|
|
|
|
|
2023-12-21 00:37:07 +03:00
|
|
|
fi
|
2023-12-21 01:58:33 +03:00
|
|
|
|
|
|
|
# TODO Docker compose to run with /docker/build/docker.sh container together
|