From ac2df247fa7481173b3a72b1dd6767395d883eda Mon Sep 17 00:00:00 2001 From: asandikci Date: Sat, 6 Jan 2024 13:27:14 +0300 Subject: [PATCH] update --- .gitignore | 3 + buildzip.sh | 15 +++ dockerserver.sh | 266 +++++++++++++++++++++++++++--------------------- index.php | 10 +- 4 files changed, 173 insertions(+), 121 deletions(-) create mode 100644 .gitignore create mode 100755 buildzip.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7a39e96 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +build/* +*.tar.gz +*.zip \ No newline at end of file diff --git a/buildzip.sh b/buildzip.sh new file mode 100755 index 0000000..ef06e40 --- /dev/null +++ b/buildzip.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +rm -rf build/ +mkdir build +cp -r ./* build/ +cp -r ../YurdleBackend/* build/ +cd build/ || exit +rm data.toml +rm README.md +rm yurdle_server.tar.gz +rm buildzip.sh +rm dockerserver.sh +rm -rf build/ +sleep 1 +tar czf ../yurdle_server.tar.gz ./* \ No newline at end of file diff --git a/dockerserver.sh b/dockerserver.sh index 7d355f9..48e18fa 100755 --- a/dockerserver.sh +++ b/dockerserver.sh @@ -2,24 +2,31 @@ # PHP + Nginx + SQL, Docker Local Test Server Setup/Management File # Based on nginx docker because I don't know how to use docker compose .d +# NOTE remote installation methods removed, just use for local tests # TODO Make docker compose file for running components under different dockers -CONTAINER_PREFIX="YURTDLE" # nginx docker name prefix +CONTAINER_PREFIX="YURDLE" # nginx docker name prefix MOUNT_PATH="/source" # binded mount path in nginx docker SCRIPT_NAME="dockerserver.sh" # name of the *this* file -SCRIPT_DIR="Yurtdle" # containing directory of the *this* file -DEBUG="FALSE" # debug mode +SCRIPT_DIR="Yurdle" # containing directory of the *this* file BUILD_DIR="." # build results of local source code (insert a dot (.) if you do not need to build your application) DATABASE_TYPE="postgresql" # database type, either mysql or postgresql -MAIN_NAME="yurtdle" # main program name +MAIN_NAME="yurdle" # main program name PORT1="8000" # TODO what is the difference between 8000 and 80 PORT2="80" -### REMOTE RELEASE ### -LATEST_RELEASE="-" -FILE_NAME="$MAIN_NAME-$LATEST_RELEASE.zip" -DOWNLOAD_LINK=https://git.aliberksandikci.com.tr/ifl/$MAIN_NAME/releases/download/$LATEST_RELEASE/$FILE_NAME -WEB_ROOT_DIR="/usr/share/nginx/html/" +WEB_ROOT_DIR="/usr/share/nginx/html/" # public web root dir +WEB_SERVER_DIR="/usr/share/nginx/server/" # private server root dir +SECRET_SERVER="true" # add secret server to $WEB_ROOT_DIR/../$SECRET_SERVER_FOLDER +SECRET_SERVER_LOCAL_RELATIONAL_PATH="../YurdleBackend" # local path +SERVER_BUILD_DIR="." # server build dir + +__DB_NAME__="localdb" +__DB_USER__="dbuser" +__DB_PWD__="dbpass" + +PHP_VERSION="8.2" +ACTIVE_SERVICES=("nginx" "php$PHP_VERSION-fpm" "postgresql") # services ############################ ############################ @@ -35,18 +42,25 @@ Usage: COMMANDS: ${_RED}ini:${_NC} initialize dock command install: install $MAIN_NAME - local: get from local /source/ - remote: get from git service reconf : reconfigure configs - debug: change application debug status [ON / OFF] restart: restart services (nginx, $DATABASE_TYPE, php-fpm) update: update source files with new build on /source/ status: see current webserver status help: see this help text root: cd to web root folder + restall: update + reconf + restart + root + +""" -BUNDLE COMMANDS: - complete-restart: update + reconf + restart + root +CONFIG_FILE_CONTENT=""" +"$WEB_SERVER_DIR/config.php" + echo -e "$NGINX_CONFIG_FILE" >"/etc/nginx/conf.d/default.conf" + echo -e "$PHP_FPM_CONFIG_FILE" >"/etc/php/$PHP_VERSION/fpm/pool.d/$MAIN_NAME.conf" + _end "RECONFIGURATION" + +} + +_update() { + _head "SOURCE UPDATE" + if [[ $SECRET_SERVER == "true" ]]; then + rsync -a --progress /source/$BUILD_DIR $WEB_ROOT_DIR + rsync -a --progress /server/$SERVER_BUILD_DIR $WEB_SERVER_DIR + else + rsync -a --progress /source/$BUILD_DIR $WEB_ROOT_DIR + fi + _end "SOURCE UPDATE" +} + +_update_conf() { + if [[ $3 == "server" ]]; then + sed -i "s/\($1 * = *\).*/\1$2;/" "$WEB_SERVER_FOLDER/config.php" + else + sed -i "s/\($1 * = *\).*/\1$2;/" "$WEB_ROOT_FOLDER/config.php" + fi + +} + +_refresh_folders() { + rm -rf $WEB_ROOT_DIR + mkdir -p $WEB_ROOT_DIR + rm -rf $WEB_SERVER_DIR + mkdir -p $WEB_SERVER_DIR +} + +_setup_database() { + if [[ $DATABASE_TYPE == "mysql" ]]; then + apt install mariadb-server php-mysql -y + service mariadb start + mysql -u root -e "create database $MAIN_NAME" + mysql -u root -e "set password for root@localhost = password('root');" + elif [[ $DATABASE_TYPE == "postgresql" ]]; then + apt install postgresql php-pgsql -y + service postgresql start + su -c "createuser $__DB_USER__;createdb -h localhost -p $__DB_PWD__ -E UTF8 -O $__DB_USER__ $__DB_NAME__;" - postgres + fi +} + +_folder_permissions() { + groupadd $MAIN_NAME + useradd -g $MAIN_NAME $MAIN_NAME + cd $WEB_ROOT_DIR || exit + chown $MAIN_NAME:nginx -R . + cd $WEB_SERVER_DIR || exit + chown $MAIN_NAME:nginx -R . } if [[ $# -eq 0 ]]; then @@ -148,7 +232,12 @@ if [[ $# -eq 0 ]]; then docker rm $CONTAINER_PREFIX echo "removed" - docker run -it -d --name "$CONTAINER_PREFIX" --mount type=bind,source=".",target=/source/,readonly --publish $PORT1:$PORT2 nginx bash + if [[ $SECRET_SERVER == "true" ]]; then + docker run -it -d --name "$CONTAINER_PREFIX" --mount type=bind,source=".",target=/source/,readonly --mount type=bind,source="./$SECRET_SERVER_LOCAL_RELATIONAL_PATH",target=/server/,readonly --publish $PORT1:$PORT2 nginx bash + else + docker run -it -d --name "$CONTAINER_PREFIX" --mount type=bind,source=".",target=/source/,readonly --publish $PORT1:$PORT2 nginx bash + fi + echo -e "RUN SCRIPT: \`${_RED}bash $MOUNT_PATH/$SCRIPT_NAME docker ini${_NC}\`" docker attach $CONTAINER_PREFIX --detach-keys="ctrl-k" _exit @@ -163,7 +252,7 @@ elif [[ $1 == "attach" ]]; then docker attach $CONTAINER_PREFIX --detach-keys="ctrl-k" elif [[ $1 == "docker" ]]; then - set -x + set +x if [[ $2 == "ini" ]]; then echo "alias dock=\"bash /source/$SCRIPT_NAME docker\"" >>/root/.bashrc @@ -171,103 +260,48 @@ elif [[ $1 == "docker" ]]; then 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_DIR/config.php" ;; - ["oO"]["fF"]["fF"] | ["fF"]["aA"]["lL"]["sS"]["eE"] | 0) sed -i "s/\(DEBUG_MODE * = *\).*/\1FALSE;/" "$WEB_ROOT_DIR/config.php" ;; - *) echo -e "$_RED please input ON or OFF $_NC" ;; - esac - elif [[ $2 == "restart" ]]; then - service mariadb restart - sleep 3 - service php8.2-fpm restart - sleep 3 - service nginx restart - - _status + _restart elif [[ $2 == "reconf" ]]; then - - echo -e "$CONFIG_FILE_CONTENT" >"$WEB_ROOT_DIR/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/$MAIN_NAME.conf" - echo RECONFIGURED - echo - _exit - elif [[ $2 == "complete-restart" ]]; then - echo "updating sources!" - rsync -a --progress /source/build/ $WEB_ROOT_DIR --exclude config.php --exclude storage - + _reconf + elif [[ $2 == "restall" ]]; then + _update sleep 1 - - echo -e "$CONFIG_FILE_CONTENT" >"$WEB_ROOT_DIR/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/$MAIN_NAME.conf" - echo RECONFIGURED - echo - - service mariadb restart - sleep 3 - service php8.2-fpm restart - sleep 3 - service nginx restart - - _status - + _reconf + sleep 1 + _restart + root elif [[ $2 == "update" ]]; then - echo "updating sources!" - rsync -a --progress /source/build/ $WEB_ROOT_DIR --exclude config.php --exclude storage + _update elif [[ $2 == "status" ]]; then _status - 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 + set -x + _refresh_folders apt update apt install nano exa tree wget unzip less rsync -y - rm -rf $WEB_ROOT_DIR - mkdir -p $WEB_ROOT_DIR - cd $WEB_ROOT_DIR || exit - if [[ $3 == "local" ]]; then - cp -r /source/$BUILD_DIR/* $WEB_ROOT_DIR/ - 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}" + cd $WEB_ROOT_DIR || exit + + cp -r /source/$BUILD_DIR/* $WEB_ROOT_DIR/ + if [[ $SECRET_SERVER == "true" ]]; then + cp -r /server/$BUILD_DIR/* $WEB_SERVER_DIR/ fi - ### CONFIGURATIONS ### - apt install php php-fpm -y - if [[ $DATABASE_TYPE == "mysql" ]]; then - apt install mariadb-server php-mysql -y - service mariadb start - mysql -u root -e "create database $MAIN_NAME" - mysql -u root -e "set password for root@localhost = password('root');" - elif [[ $DATABASE_TYPE == "postgresql" ]]; then - apt install postgresql php-pgsql -y - fi + apt install php php-fpm php-cli -y - echo -e "$CONFIG_FILE_CONTENT" >"$WEB_ROOT_DIR/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/$MAIN_NAME.conf" - groupadd $MAIN_NAME - useradd -g $MAIN_NAME $MAIN_NAME - cd $WEB_ROOT_DIR || exit - chown $MAIN_NAME:nginx -R . - chmod 770 storage + _setup_database - service php8.2-fpm start - service nginx start - service nginx status - service nginx restart + _reconf + + _folder_permissions + + set +x + _restart + + sleep 1 echo -e "${_RED}DONE! - OPEN localhost:$PORT1 TO TEST${_NC}" elif [[ $2 == "help" ]]; then echo -e "$HELP!" diff --git a/index.php b/index.php index ddfb363..67a8812 100644 --- a/index.php +++ b/index.php @@ -4,19 +4,19 @@ - - + + - Yurtdle | İFL + Yurdle | İFL
-

Yurtdle

+

Yurdle

@@ -25,7 +25,7 @@ -
Veri Sorumlusu: Ömer Arda Muratoğlu.
Her türlü kaldırılmasını, eklenmesini ve/veya değiştirilmesi istediğiniz veriler için kendisi ile iletişime geçiniz !
+
Veri Sorumlusu: Ömer Arda Muratoğlu.
Her türlü kaldırılmasını, eklenmesini ve/veya değiştirilmesi istediğiniz veriler için kendisi ile iletişime geçiniz !