mirror of
https://github.com/cytopia/devilbox.git
synced 2024-12-24 06:56:40 +00:00
Add check-config.sh script for local troubleshooting
This commit is contained in:
parent
87fa92d931
commit
9367c9540a
36
.github/ISSUE_TEMPLATE/bug_report.md
vendored
36
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -25,9 +25,10 @@ assignees: ''
|
|||||||
### Checklist
|
### Checklist
|
||||||
<!-- ENSURE YOU HAVE DONE THE FOLLOWING -->
|
<!-- ENSURE YOU HAVE DONE THE FOLLOWING -->
|
||||||
* [ ] `.env` file is attached
|
* [ ] `.env` file is attached
|
||||||
* [ ] `docker-compose.override.yml` is attached (if it exists)
|
* [ ] `./check-config.sh` output is added below
|
||||||
* [ ] Custom configs from `cfg/` dir are attached (if customized)
|
* [ ] `docker-compose logs` output is added below
|
||||||
* [ ] `docker-compose logs` and `log/` output is added
|
* [ ] `docker-compose.override.yml` is attached (if exists)
|
||||||
|
* [ ] Custom configs from `cfg/` dir are attached (if exist)
|
||||||
* [ ] I've looked through the docs: https://devilbox.readthedocs.io/en/latest/
|
* [ ] I've looked through the docs: https://devilbox.readthedocs.io/en/latest/
|
||||||
* [ ] I've looked through existing issues: https://github.com/cytopia/devilbox/issues
|
* [ ] I've looked through existing issues: https://github.com/cytopia/devilbox/issues
|
||||||
* [ ] I've read troubleshooting: https://devilbox.readthedocs.io/en/latest/support/troubleshooting.html
|
* [ ] I've read troubleshooting: https://devilbox.readthedocs.io/en/latest/support/troubleshooting.html
|
||||||
@ -35,10 +36,10 @@ assignees: ''
|
|||||||
|
|
||||||
### OS / ENVIRONMENT
|
### OS / ENVIRONMENT
|
||||||
<!-- COMPLETE ALL 6 BULLET POINTS BELOW: -->
|
<!-- COMPLETE ALL 6 BULLET POINTS BELOW: -->
|
||||||
1. Host operating system and version:
|
1. Host operating system and version:
|
||||||
2. (Windows) Native Docker or Docker Toolbox:
|
2. (Windows only) Native Docker or Docker Toolbox:
|
||||||
3. Docker version:
|
3. Docker version:
|
||||||
4. Docker Compose version:
|
4. Docker Compose version:
|
||||||
5. (Linux) Is SELinux enabled?:
|
5. (Linux) Is SELinux enabled?:
|
||||||
6. What git commit hash are you on?:
|
6. What git commit hash are you on?:
|
||||||
|
|
||||||
@ -68,18 +69,17 @@ assignees: ''
|
|||||||
$ docker-compose up...
|
$ docker-compose up...
|
||||||
```
|
```
|
||||||
|
|
||||||
#### File and user permissions (Linux & MacOS)
|
#### Outputs
|
||||||
<!-- User and group information -->
|
<!-- 1/2 Add the output from ./check-config.sh -->
|
||||||
```
|
```bash
|
||||||
$ id
|
$ ./check-config.sh
|
||||||
|
|
||||||
|
<<< REPLACE THIS LINE WITH OUTPUT FROM ABOVE COMMAND >>>
|
||||||
```
|
```
|
||||||
|
|
||||||
<!-- File permissions of the Devilbox directory -->
|
<!-- 2/2 Add the output from docker-compose logs -->
|
||||||
```
|
```bash
|
||||||
$ ls -la
|
$ docker-compose logs
|
||||||
```
|
|
||||||
|
|
||||||
<!-- File permissions of your projects -->
|
<<< REPLACE THIS LINE WITH OUTPUT FROM ABOVE COMMAND >>>
|
||||||
```
|
|
||||||
$ ls -la data/www
|
|
||||||
```
|
```
|
||||||
|
6
.github/workflows/lint.yml
vendored
6
.github/workflows/lint.yml
vendored
@ -48,3 +48,9 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cd .tests/
|
cd .tests/
|
||||||
make lint-tests
|
make lint-tests
|
||||||
|
|
||||||
|
- name: Check configuration
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cp env-example .env
|
||||||
|
./check-config.sh
|
||||||
|
6
.gitignore
vendored
6
.gitignore
vendored
@ -49,6 +49,7 @@
|
|||||||
/cfg/mariadb-10.2/*.cnf
|
/cfg/mariadb-10.2/*.cnf
|
||||||
/cfg/mariadb-10.3/*.cnf
|
/cfg/mariadb-10.3/*.cnf
|
||||||
/cfg/mariadb-10.4/*.cnf
|
/cfg/mariadb-10.4/*.cnf
|
||||||
|
/cfg/mariadb-10.5/*.cnf
|
||||||
/cfg/percona-5.5/*.cnf
|
/cfg/percona-5.5/*.cnf
|
||||||
/cfg/percona-5.6/*.cnf
|
/cfg/percona-5.6/*.cnf
|
||||||
/cfg/percona-5.7/*.cnf
|
/cfg/percona-5.7/*.cnf
|
||||||
@ -79,6 +80,7 @@
|
|||||||
/cfg/php-fpm-7.3/*.conf
|
/cfg/php-fpm-7.3/*.conf
|
||||||
/cfg/php-fpm-7.4/*.conf
|
/cfg/php-fpm-7.4/*.conf
|
||||||
/cfg/php-fpm-8.0/*.conf
|
/cfg/php-fpm-8.0/*.conf
|
||||||
|
/cfg/php-fpm-8.1/*.conf
|
||||||
|
|
||||||
# Ignore custom PHP-FPM startup scripts
|
# Ignore custom PHP-FPM startup scripts
|
||||||
/autostart/*.sh
|
/autostart/*.sh
|
||||||
@ -93,6 +95,7 @@
|
|||||||
/cfg/php-startup-7.3/*.sh
|
/cfg/php-startup-7.3/*.sh
|
||||||
/cfg/php-startup-7.4/*.sh
|
/cfg/php-startup-7.4/*.sh
|
||||||
/cfg/php-startup-8.0/*.sh
|
/cfg/php-startup-8.0/*.sh
|
||||||
|
/cfg/php-startup-8.1/*.sh
|
||||||
|
|
||||||
# Ignorecustom Varnish configs
|
# Ignorecustom Varnish configs
|
||||||
/cfg/varnish-4/*.vcl
|
/cfg/varnish-4/*.vcl
|
||||||
@ -111,6 +114,7 @@
|
|||||||
/mod/php-fpm-7.3/*.so
|
/mod/php-fpm-7.3/*.so
|
||||||
/mod/php-fpm-7.4/*.so
|
/mod/php-fpm-7.4/*.so
|
||||||
/mod/php-fpm-8.0/*.so
|
/mod/php-fpm-8.0/*.so
|
||||||
|
/mod/php-fpm-8.1/*.so
|
||||||
|
|
||||||
# Ignore custom bash and other confi files
|
# Ignore custom bash and other confi files
|
||||||
/bash/*
|
/bash/*
|
||||||
@ -204,4 +208,4 @@ $RECYCLE.BIN/
|
|||||||
*.bbproject
|
*.bbproject
|
||||||
|
|
||||||
###### VS Code ######
|
###### VS Code ######
|
||||||
/.vscode
|
/.vscode
|
||||||
|
@ -7,6 +7,13 @@ major versions.
|
|||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
|
||||||
|
## Release v1.8.1 (2020-11-12)
|
||||||
|
|
||||||
|
#### Added
|
||||||
|
|
||||||
|
- Added `check-config.sh` script to check against correct Devilbox configuration
|
||||||
|
|
||||||
|
|
||||||
## Release v1.8.0 (2020-11-08)
|
## Release v1.8.0 (2020-11-08)
|
||||||
|
|
||||||
#### Fixed
|
#### Fixed
|
||||||
|
0
cfg/php-startup-5.2/.keepme
Normal file
0
cfg/php-startup-5.2/.keepme
Normal file
0
cfg/php-startup-5.3/.keepme
Normal file
0
cfg/php-startup-5.3/.keepme
Normal file
0
cfg/php-startup-5.4/.keepme
Normal file
0
cfg/php-startup-5.4/.keepme
Normal file
0
cfg/php-startup-5.5/.keepme
Normal file
0
cfg/php-startup-5.5/.keepme
Normal file
0
cfg/php-startup-5.6/.keepme
Normal file
0
cfg/php-startup-5.6/.keepme
Normal file
0
cfg/php-startup-7.0/.keepme
Normal file
0
cfg/php-startup-7.0/.keepme
Normal file
0
cfg/php-startup-7.1/.keepme
Normal file
0
cfg/php-startup-7.1/.keepme
Normal file
0
cfg/php-startup-7.2/.keepme
Normal file
0
cfg/php-startup-7.2/.keepme
Normal file
0
cfg/php-startup-7.3/.keepme
Normal file
0
cfg/php-startup-7.3/.keepme
Normal file
0
cfg/php-startup-7.4/.keepme
Normal file
0
cfg/php-startup-7.4/.keepme
Normal file
0
cfg/php-startup-8.0/.keepme
Normal file
0
cfg/php-startup-8.0/.keepme
Normal file
0
cfg/php-startup-8.1/.keepme
Normal file
0
cfg/php-startup-8.1/.keepme
Normal file
0
cfg/varnish-4/.keepme
Normal file
0
cfg/varnish-4/.keepme
Normal file
0
cfg/varnish-5/.keepme
Normal file
0
cfg/varnish-5/.keepme
Normal file
0
cfg/varnish-6/.keepme
Normal file
0
cfg/varnish-6/.keepme
Normal file
501
check-config.sh
Executable file
501
check-config.sh
Executable file
@ -0,0 +1,501 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
# GLOBALS
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
RET_CODE=0
|
||||||
|
MY_UID="$( id -u )"
|
||||||
|
MY_GID="$( id -g )"
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
# Functions
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
###
|
||||||
|
### Logger functions
|
||||||
|
###
|
||||||
|
log_err() {
|
||||||
|
>&2 printf "\\e[1;31m[ERR] %s\\e[0m\\n" "${1}"
|
||||||
|
}
|
||||||
|
|
||||||
|
log_info() {
|
||||||
|
printf "[INFO] %s\\n" "${1}"
|
||||||
|
}
|
||||||
|
|
||||||
|
log_ok() {
|
||||||
|
printf "\\e[;32m[SUCC] %s\\e[0m\\n" "${1}"
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
### Output functions
|
||||||
|
###
|
||||||
|
print_head_1() {
|
||||||
|
printf "\\n# "
|
||||||
|
printf "%0.s=" {1..78}
|
||||||
|
printf "\\n"
|
||||||
|
|
||||||
|
printf "# %s\\n" "${1}"
|
||||||
|
|
||||||
|
printf "# "
|
||||||
|
printf "%0.s=" {1..78}
|
||||||
|
printf "\\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
### File functions
|
||||||
|
###
|
||||||
|
file_get_uid() {
|
||||||
|
stat -c '%u' "${1}"
|
||||||
|
}
|
||||||
|
|
||||||
|
file_get_gid() {
|
||||||
|
stat -c '%g' "${1}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Returns 4-digit format
|
||||||
|
file_get_perm() {
|
||||||
|
local perm
|
||||||
|
local len
|
||||||
|
|
||||||
|
if [ "$(uname)" = "Linux" ]; then
|
||||||
|
# If no special permissions are set (no sticky bit...), linux will
|
||||||
|
# only output the 3 digit number
|
||||||
|
perm="$( stat --format '%a' "${1}" )"
|
||||||
|
else
|
||||||
|
perm="$( stat -f '%OLp' "${1}" )"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For special cases check the length and add a leading 0
|
||||||
|
len="$(echo "${perm}" | awk '{ print length() }')"
|
||||||
|
if [ "${len}" = "3" ]; then
|
||||||
|
perm="0${perm}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "${perm}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
# Check git
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
print_head_1 "Checking git"
|
||||||
|
|
||||||
|
GIT_STATUS="$( git status -s )"
|
||||||
|
if [ -z "${GIT_STATUS}" ]; then
|
||||||
|
log_info "git is clean"
|
||||||
|
else
|
||||||
|
log_err "git is unclean"
|
||||||
|
echo "${GIT_STATUS}"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
# Check env file
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
print_head_1 "Checking .env file"
|
||||||
|
|
||||||
|
if [ -f .env ]; then
|
||||||
|
log_ok ".env file exists"
|
||||||
|
else
|
||||||
|
log_err ".env file does not exist"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
fi
|
||||||
|
if [ -r .env ]; then
|
||||||
|
log_ok ".env file is readable"
|
||||||
|
else
|
||||||
|
log_err ".env file is not readable"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure all variables exist in .env file
|
||||||
|
ENV_VAR_MISSING=0
|
||||||
|
while read -r env_var; do
|
||||||
|
if ! grep -E "^${env_var}=" .env >/dev/null; then
|
||||||
|
log_err "Variable '${env_var}' missing in .env file"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
ENV_VAR_MISSING=1
|
||||||
|
fi
|
||||||
|
done < <(grep -E '^[A-Z].+=' env-example | awk -F'=' '{print $1}')
|
||||||
|
if [ "${ENV_VAR_MISSING}" = "0" ]; then
|
||||||
|
log_ok "All variables are present in .env file"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure variables are not duplicated in .env
|
||||||
|
ENV_VAR_DUPLICATED=0
|
||||||
|
while read -r env_var; do
|
||||||
|
OCCURANCES="$( grep -Ec "^${env_var}=" .env )"
|
||||||
|
if [ "${OCCURANCES}" != "1" ]; then
|
||||||
|
log_err "Variable '${env_var}' should only be defined once. Occurances: ${OCCURANCES}"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
ENV_VAR_DUPLICATED=1
|
||||||
|
fi
|
||||||
|
done < <(grep -E '^[A-Z].+=' env-example | awk -F'=' '{print $1}')
|
||||||
|
if [ "${ENV_VAR_DUPLICATED}" = "0" ]; then
|
||||||
|
log_ok "No variables is duplicated in .env file"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
# Check env file values
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
print_head_1 "Checking .env file values"
|
||||||
|
|
||||||
|
WRONG_ENV_FILES_VALUES=0
|
||||||
|
DEBUG_COMPOSE_ENTRYPOINT="$( grep -E '^DEBUG_COMPOSE_ENTRYPOINT=' .env | awk -F'=' '{print $2}' )"
|
||||||
|
if [ "${DEBUG_COMPOSE_ENTRYPOINT}" != "0" ] && [ "${DEBUG_COMPOSE_ENTRYPOINT}" != "1" ] && [ "${DEBUG_COMPOSE_ENTRYPOINT}" != "2" ]; then
|
||||||
|
log_err "Variable 'DEBUG_COMPOSE_ENTRYPOINT' should be 0, 1 or 2. Has: ${DEBUG_COMPOSE_ENTRYPOINT}"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
WRONG_ENV_FILES_VALUES=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
DOCKER_LOGS="$( grep -E '^DOCKER_LOGS=' .env | awk -F'=' '{print $2}' )"
|
||||||
|
if [ "${DOCKER_LOGS}" != "0" ] && [ "${DOCKER_LOGS}" != "1" ]; then
|
||||||
|
log_err "Variable 'DOCKER_LOGS' should be 0 or 1. Has: ${DOCKER_LOGS}"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
WRONG_ENV_FILES_VALUES=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
DEVILBOX_PATH="$( grep -E '^DEVILBOX_PATH=' .env | awk -F'=' '{print $2}' )"
|
||||||
|
if [ ! -d "${DEVILBOX_PATH}" ]; then
|
||||||
|
log_err "Variable 'DEVILBOX_PATH' directory does not exist: ${DEVILBOX_PATH}"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
WRONG_ENV_FILES_VALUES=1
|
||||||
|
fi
|
||||||
|
DEVILBOX_PATH_PERM="$( file_get_perm "${DEVILBOX_PATH}" )"
|
||||||
|
if [ "${DEVILBOX_PATH_PERM}" != "0755" ] && [ "${DEVILBOX_PATH_PERM}" != "0775" ] && [ "${DEVILBOX_PATH_PERM}" != "0777" ]; then
|
||||||
|
log_err "Variable 'DEVILBOX_PATH' directory must be 0755, 0775 or 0777. Has: ${DEVILBOX_PATH_PERM}"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
WRONG_ENV_FILES_VALUES=1
|
||||||
|
fi
|
||||||
|
DEVILBOX_PATH_PERM="$( file_get_uid "${DEVILBOX_PATH}" )"
|
||||||
|
if [ "${DEVILBOX_PATH_PERM}" != "${MY_UID}" ]; then
|
||||||
|
log_err "Variable 'DEVILBOX_PATH' directory uid must be ${MY_UID}. Has: ${DEVILBOX_PATH_PERM}"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
WRONG_ENV_FILES_VALUES=1
|
||||||
|
fi
|
||||||
|
DEVILBOX_PATH_PERM="$( file_get_gid "${DEVILBOX_PATH}" )"
|
||||||
|
if [ "${DEVILBOX_PATH_PERM}" != "${MY_GID}" ]; then
|
||||||
|
log_err "Variable 'DEVILBOX_PATH' directory gid must be ${MY_GID}. Has: ${DEVILBOX_PATH_PERM}"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
WRONG_ENV_FILES_VALUES=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${WRONG_ENV_FILES_VALUES}" = "0" ]; then
|
||||||
|
log_ok "All .env file variables have correct values"
|
||||||
|
fi
|
||||||
|
|
||||||
|
HOST_PATH_HTTPD_DATADIR="$( grep -E '^HOST_PATH_HTTPD_DATADIR=' .env | awk -F'=' '{print $2}' )"
|
||||||
|
if [ ! -d "${HOST_PATH_HTTPD_DATADIR}" ]; then
|
||||||
|
log_err "Variable 'HOST_PATH_HTTPD_DATADIR' directory does not exist: ${HOST_PATH_HTTPD_DATADIR}"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
WRONG_ENV_FILES_VALUES=1
|
||||||
|
fi
|
||||||
|
HOST_PATH_HTTPD_DATADIR_PERM="$( file_get_perm "${HOST_PATH_HTTPD_DATADIR}" )"
|
||||||
|
if [ "${HOST_PATH_HTTPD_DATADIR_PERM}" != "0755" ] && [ "${HOST_PATH_HTTPD_DATADIR_PERM}" != "0775" ] && [ "${HOST_PATH_HTTPD_DATADIR_PERM}" != "0777" ]; then
|
||||||
|
log_err "Variable 'HOST_PATH_HTTPD_DATADIR' directory must be 0755, 0775 or 0777. Has: ${HOST_PATH_HTTPD_DATADIR_PERM}"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
WRONG_ENV_FILES_VALUES=1
|
||||||
|
fi
|
||||||
|
HOST_PATH_HTTPD_DATADIR_PERM="$( file_get_uid "${HOST_PATH_HTTPD_DATADIR}" )"
|
||||||
|
if [ "${HOST_PATH_HTTPD_DATADIR_PERM}" != "${MY_UID}" ]; then
|
||||||
|
log_err "Variable 'HOST_PATH_HTTPD_DATADIR' directory uid must be ${MY_UID}. Has: ${HOST_PATH_HTTPD_DATADIR_PERM}"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
WRONG_ENV_FILES_VALUES=1
|
||||||
|
fi
|
||||||
|
HOST_PATH_HTTPD_DATADIR_PERM="$( file_get_gid "${HOST_PATH_HTTPD_DATADIR}" )"
|
||||||
|
if [ "${HOST_PATH_HTTPD_DATADIR_PERM}" != "${MY_GID}" ]; then
|
||||||
|
log_err "Variable 'HOST_PATH_HTTPD_DATADIR' directory gid must be ${MY_GID}. Has: ${HOST_PATH_HTTPD_DATADIR_PERM}"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
WRONG_ENV_FILES_VALUES=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${WRONG_ENV_FILES_VALUES}" = "0" ]; then
|
||||||
|
log_ok "All .env file variables have correct values"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
# Ensure cfg/, mod/ and log/ directories exist
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
print_head_1 "Checking required directories"
|
||||||
|
|
||||||
|
# /cfg/php-fpm-VERSION
|
||||||
|
DIR_MISSING=0
|
||||||
|
while read -r php_version; do
|
||||||
|
if [ ! -d "cfg/php-fpm-${php_version}" ]; then
|
||||||
|
log_err "Directory 'cfg/php-fpm-${php_version}' is missing"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DIR_MISSING=1
|
||||||
|
fi
|
||||||
|
done < <(grep -E '^#?PHP_SERVER=' env-example | awk -F'=' '{print $2}')
|
||||||
|
if [ "${DIR_MISSING}" = "0" ]; then
|
||||||
|
log_ok "All PHP cfg/ sub directories are present"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# /log/php-fpm-VERSION
|
||||||
|
DIR_MISSING=0
|
||||||
|
while read -r php_version; do
|
||||||
|
if [ ! -d "log/php-fpm-${php_version}" ]; then
|
||||||
|
log_err "Directory 'log/php-fpm-${php_version}' is missing"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DIR_MISSING=1
|
||||||
|
fi
|
||||||
|
done < <(grep -E '^#?PHP_SERVER=' env-example | awk -F'=' '{print $2}')
|
||||||
|
if [ "${DIR_MISSING}" = "0" ]; then
|
||||||
|
log_ok "All PHP log/ sub directories are present"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# /mod/php-fpm-VERSION
|
||||||
|
DIR_MISSING=0
|
||||||
|
while read -r php_version; do
|
||||||
|
if [ ! -d "mod/php-fpm-${php_version}" ]; then
|
||||||
|
log_err "Directory 'mod/php-fpm-${php_version}' is missing"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DIR_MISSING=1
|
||||||
|
fi
|
||||||
|
done < <(grep -E '^#?PHP_SERVER=' env-example | awk -F'=' '{print $2}')
|
||||||
|
if [ "${DIR_MISSING}" = "0" ]; then
|
||||||
|
log_ok "All PHP mod/ sub directories are present"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# /cfg/apache|nginx-VERSION
|
||||||
|
DIR_MISSING=0
|
||||||
|
while read -r httpd_version; do
|
||||||
|
if [ ! -d "cfg/${httpd_version}" ]; then
|
||||||
|
log_err "Directory 'cfg/${httpd_version}' is missing"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DIR_MISSING=1
|
||||||
|
fi
|
||||||
|
done < <(grep -E '^#?HTTPD_SERVER=' env-example | awk -F'=' '{print $2}')
|
||||||
|
if [ "${DIR_MISSING}" = "0" ]; then
|
||||||
|
log_ok "All HTTPD cfg/ sub directories are present"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# /log/apache|nginx-VERSION
|
||||||
|
DIR_MISSING=0
|
||||||
|
while read -r httpd_version; do
|
||||||
|
if [ ! -d "log/${httpd_version}" ]; then
|
||||||
|
log_err "Directory 'log/${httpd_version}' is missing"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DIR_MISSING=1
|
||||||
|
fi
|
||||||
|
done < <(grep -E '^#?HTTPD_SERVER=' env-example | awk -F'=' '{print $2}')
|
||||||
|
if [ "${DIR_MISSING}" = "0" ]; then
|
||||||
|
log_ok "All HTTPD log/ sub directories are present"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
# Directory permissions
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
print_head_1 "Checking directory permissions"
|
||||||
|
|
||||||
|
DEVILBOX_DIRS=(
|
||||||
|
"autostart"
|
||||||
|
"backups"
|
||||||
|
"bash"
|
||||||
|
"ca"
|
||||||
|
"cfg"
|
||||||
|
"compose"
|
||||||
|
"log"
|
||||||
|
"mod"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check allowed directory permissions: 0755 0775 0777
|
||||||
|
DEVILBOX_DIR_PERM_WRONG=0
|
||||||
|
for search_dir in "${DEVILBOX_DIRS[@]}"; do
|
||||||
|
while read -r my_dir; do
|
||||||
|
PERM="$( file_get_perm "${my_dir}" )"
|
||||||
|
if [ "${PERM}" != "0755" ] && [ "${PERM}" != "0775" ] && [ "${PERM}" != "0777" ]; then
|
||||||
|
log_err "Directory '${my_dir}' should have 0755, 0775 or 0777 permissions. Has: ${PERM} permissions"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DEVILBOX_DIR_PERM_WRONG=1
|
||||||
|
fi
|
||||||
|
done < <(find "${search_dir}" -type d)
|
||||||
|
done
|
||||||
|
if [ "${DEVILBOX_DIR_PERM_WRONG}" = "0" ]; then
|
||||||
|
log_ok "All devilbox directories have correct permissions"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check allowed uid
|
||||||
|
DEVILBOX_DIR_PERM_WRONG=0
|
||||||
|
for search_dir in "${DEVILBOX_DIRS[@]}"; do
|
||||||
|
while read -r my_dir; do
|
||||||
|
PERM="$( file_get_uid "${my_dir}" )"
|
||||||
|
if [ "${PERM}" != "${MY_UID}" ]; then
|
||||||
|
log_err "Directory '${my_dir}' should have uid '${MY_UID}' Has: '${PERM}'"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DEVILBOX_DIR_PERM_WRONG=1
|
||||||
|
fi
|
||||||
|
done < <(find "${search_dir}" -type d)
|
||||||
|
done
|
||||||
|
if [ "${DEVILBOX_DIR_PERM_WRONG}" = "0" ]; then
|
||||||
|
log_ok "All devilbox directories have correct uid"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check allowed gid
|
||||||
|
DEVILBOX_DIR_PERM_WRONG=0
|
||||||
|
for search_dir in "${DEVILBOX_DIRS[@]}"; do
|
||||||
|
while read -r my_dir; do
|
||||||
|
PERM="$( file_get_gid "${my_dir}" )"
|
||||||
|
if [ "${PERM}" != "${MY_GID}" ]; then
|
||||||
|
log_err "Directory '${my_dir}' should have gid '${MY_GID}' Has: '${PERM}'"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DEVILBOX_DIR_PERM_WRONG=1
|
||||||
|
fi
|
||||||
|
done < <(find "${search_dir}" -type d)
|
||||||
|
done
|
||||||
|
if [ "${DEVILBOX_DIR_PERM_WRONG}" = "0" ]; then
|
||||||
|
log_ok "All devilbox directories have correct gid"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
# File permissions
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
print_head_1 "Checking file permissions"
|
||||||
|
|
||||||
|
DEVILBOX_DIRS=(
|
||||||
|
"autostart"
|
||||||
|
"backups"
|
||||||
|
"ca"
|
||||||
|
"cfg"
|
||||||
|
"compose"
|
||||||
|
"mod"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check allowed directory permissions: 0644 0664 0666
|
||||||
|
DEVILBOX_DIR_PERM_WRONG=0
|
||||||
|
for search_file in "${DEVILBOX_DIRS[@]}"; do
|
||||||
|
while read -r my_file; do
|
||||||
|
PERM="$( file_get_perm "${my_file}" )"
|
||||||
|
# Private CA file
|
||||||
|
if [ "${my_file}" = "ca/devilbox-ca.key" ]; then
|
||||||
|
if [ "${PERM}" != "0600" ]; then
|
||||||
|
log_err "File '${my_file}' should have 0600 permissions. Has: ${PERM} permissions"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DEVILBOX_DIR_PERM_WRONG=1
|
||||||
|
fi
|
||||||
|
# Executable files
|
||||||
|
elif echo "${my_file}" | grep -E '.+\.sh(-example)?$' >/dev/null; then
|
||||||
|
if [ "${PERM}" != "0755" ] && [ "${PERM}" != "0775" ] && [ "${PERM}" != "0777" ]; then
|
||||||
|
log_err "File '${my_file}' should have 0755, 0775 or 0777 permissions. Has: ${PERM} permissions"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DEVILBOX_DIR_PERM_WRONG=1
|
||||||
|
fi
|
||||||
|
# All other files
|
||||||
|
else
|
||||||
|
if [ "${PERM}" != "0644" ] && [ "${PERM}" != "0664" ] && [ "${PERM}" != "0666" ]; then
|
||||||
|
log_err "File '${my_file}' should have 0644, 0664 or 0666 permissions. Has: ${PERM} permissions"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DEVILBOX_DIR_PERM_WRONG=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done < <(find "${search_file}" -type f)
|
||||||
|
done
|
||||||
|
if [ "${DEVILBOX_DIR_PERM_WRONG}" = "0" ]; then
|
||||||
|
log_ok "All devilbox files have correct permissions"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check allowed uid
|
||||||
|
DEVILBOX_DIR_PERM_WRONG=0
|
||||||
|
for search_file in "${DEVILBOX_DIRS[@]}"; do
|
||||||
|
while read -r my_file; do
|
||||||
|
PERM="$( file_get_uid "${my_file}" )"
|
||||||
|
if [ "${PERM}" != "${MY_UID}" ]; then
|
||||||
|
log_err "File '${my_file}' should have uid '${MY_UID}' Has: '${PERM}'"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DEVILBOX_DIR_PERM_WRONG=1
|
||||||
|
fi
|
||||||
|
done < <(find "${search_file}" -type f)
|
||||||
|
done
|
||||||
|
if [ "${DEVILBOX_DIR_PERM_WRONG}" = "0" ]; then
|
||||||
|
log_ok "All devilbox files have correct uid"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check allowed gid
|
||||||
|
DEVILBOX_DIR_PERM_WRONG=0
|
||||||
|
for search_file in "${DEVILBOX_DIRS[@]}"; do
|
||||||
|
while read -r my_file; do
|
||||||
|
PERM="$( file_get_gid "${my_file}" )"
|
||||||
|
if [ "${PERM}" != "${MY_GID}" ]; then
|
||||||
|
log_err "File '${my_file}' should have gid '${MY_GID}' Has: '${PERM}'"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DEVILBOX_DIR_PERM_WRONG=1
|
||||||
|
fi
|
||||||
|
done < <(find "${search_file}" -type f)
|
||||||
|
done
|
||||||
|
if [ "${DEVILBOX_DIR_PERM_WRONG}" = "0" ]; then
|
||||||
|
log_ok "All devilbox files have correct gid"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
# Check projects
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
print_head_1 "Checking projects"
|
||||||
|
|
||||||
|
HOST_PATH_HTTPD_DATADIR="$( grep -E '^HOST_PATH_HTTPD_DATADIR=' .env | awk -F'=' '{print $2}' )"
|
||||||
|
|
||||||
|
DATA_DIR_PERM_WRONG=0
|
||||||
|
while read -r project; do
|
||||||
|
PERM="$( file_get_perm "${project}" )"
|
||||||
|
if [ "${PERM}" != "0755" ] && [ "${PERM}" != "0775" ] && [ "${PERM}" != "0777" ]; then
|
||||||
|
log_err "Directory '${project}' should have 0755, 0775 or 0777 permissions. Has: ${PERM} permissions"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DATA_DIR_PERM_WRONG=1
|
||||||
|
fi
|
||||||
|
done < <(tree "${HOST_PATH_HTTPD_DATADIR}" -L 1 -d -f -i -n --noreport)
|
||||||
|
if [ "${DATA_DIR_PERM_WRONG}" = "0" ]; then
|
||||||
|
log_ok "All project dirs have correct permissions"
|
||||||
|
fi
|
||||||
|
|
||||||
|
DATA_DIR_PERM_WRONG=0
|
||||||
|
while read -r project; do
|
||||||
|
PERM="$( file_get_uid "${project}" )"
|
||||||
|
if [ "${PERM}" != "${MY_UID}" ]; then
|
||||||
|
log_err "Directory '${project}' should have uid '${MY_UID}' Has: '${PERM}'"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DATA_DIR_PERM_WRONG=1
|
||||||
|
fi
|
||||||
|
done < <(tree "${HOST_PATH_HTTPD_DATADIR}" -L 1 -d -f -i -n --noreport)
|
||||||
|
if [ "${DATA_DIR_PERM_WRONG}" = "0" ]; then
|
||||||
|
log_ok "All project dirs have correct uid"
|
||||||
|
fi
|
||||||
|
|
||||||
|
DATA_DIR_PERM_WRONG=0
|
||||||
|
while read -r project; do
|
||||||
|
PERM="$( file_get_gid "${project}" )"
|
||||||
|
if [ "${PERM}" != "${MY_GID}" ]; then
|
||||||
|
log_err "Directory '${project}' should have gid '${MY_GID}' Has: '${PERM}'"
|
||||||
|
RET_CODE=$(( RET_CODE + 1))
|
||||||
|
DATA_DIR_PERM_WRONG=1
|
||||||
|
fi
|
||||||
|
done < <(tree "${HOST_PATH_HTTPD_DATADIR}" -L 1 -d -f -i -n --noreport)
|
||||||
|
if [ "${DATA_DIR_PERM_WRONG}" = "0" ]; then
|
||||||
|
log_ok "All project dirs have correct gid"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
# Summary
|
||||||
|
#--------------------------------------------------------------------------------------------------
|
||||||
|
print_head_1 "SUMMARY"
|
||||||
|
|
||||||
|
if [ "${RET_CODE}" -gt "0" ]; then
|
||||||
|
log_err "Found ${RET_CODE} error(s)"
|
||||||
|
log_err "Devilbox might not work properly"
|
||||||
|
log_err "Fix the errors before submitting a bug report"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
log_ok "Found no errors"
|
||||||
|
exit 0
|
||||||
|
fi
|
@ -375,9 +375,6 @@ services:
|
|||||||
# ---- Format: ----
|
# ---- Format: ----
|
||||||
# HOST-DIRECTORY : DOCKER-DIRECTORY
|
# HOST-DIRECTORY : DOCKER-DIRECTORY
|
||||||
|
|
||||||
# Mount logs
|
|
||||||
- ${DEVILBOX_PATH}/log/pgsql-${PGSQL_SERVER}:/var/log/postgresql:rw${MOUNT_OPTIONS}
|
|
||||||
|
|
||||||
# Mount PostgreSQL Data directory
|
# Mount PostgreSQL Data directory
|
||||||
- devilbox-pgsql-${PGSQL_SERVER}:/var/lib/postgresql/data/pgdata:rw${MOUNT_OPTIONS}
|
- devilbox-pgsql-${PGSQL_SERVER}:/var/lib/postgresql/data/pgdata:rw${MOUNT_OPTIONS}
|
||||||
|
|
||||||
@ -428,13 +425,6 @@ services:
|
|||||||
app_net:
|
app_net:
|
||||||
ipv4_address: 172.16.238.15
|
ipv4_address: 172.16.238.15
|
||||||
|
|
||||||
volumes:
|
|
||||||
# ---- Format: ----
|
|
||||||
# HOST-DIRECTORY : DOCKER-DIRECTORY
|
|
||||||
|
|
||||||
# Mount logs
|
|
||||||
- ${DEVILBOX_PATH}/log/memcd-${MEMCD_SERVER}:/var/log/memcd:rw${MOUNT_OPTIONS}
|
|
||||||
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- bind
|
- bind
|
||||||
- php
|
- php
|
||||||
|
@ -60,6 +60,14 @@ Before going into the issues below, always do the following
|
|||||||
host> docker-compose up php httpd bind
|
host> docker-compose up php httpd bind
|
||||||
|
|
||||||
|
|
||||||
|
**4. Run config checker**
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
# Run the bash script in the Devilbox git directory
|
||||||
|
host> ./check-config.sh
|
||||||
|
|
||||||
|
|
||||||
General
|
General
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
0
mod/php-fpm-5.2/.keepme
Normal file
0
mod/php-fpm-5.2/.keepme
Normal file
0
mod/php-fpm-5.3/.keepme
Normal file
0
mod/php-fpm-5.3/.keepme
Normal file
0
mod/php-fpm-7.3/.keepme
Normal file
0
mod/php-fpm-7.3/.keepme
Normal file
0
mod/php-fpm-7.4/.keepme
Normal file
0
mod/php-fpm-7.4/.keepme
Normal file
0
mod/php-fpm-8.0/.keepme
Normal file
0
mod/php-fpm-8.0/.keepme
Normal file
0
mod/php-fpm-8.1/.keepme
Normal file
0
mod/php-fpm-8.1/.keepme
Normal file
Loading…
Reference in New Issue
Block a user