osal_rhel_based.sh 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. #!/bin/sh
  2. # RHEL / CentOS / Fedora
  3. #-------------------------------------------------------------------#
  4. # Variables #
  5. #-------------------------------------------------------------------#
  6. # Apache
  7. OSAL_SERVICE_APACHE=httpd
  8. OSAL_USER_APACHE_DATA=apache
  9. OSAL_PKG_APACHE=httpd
  10. OSAL_PKG_APACHE_EXTRA=mod_ssl
  11. OSAL_PATH_APACHE_CONF=/etc/httpd/conf
  12. OSAL_PATH_APACHE_CONF_D=/etc/httpd/conf.d
  13. OSAL_PATH_APACHE_MODS_ENABLED=/etc/httpd/conf.modules.d
  14. # Awstats
  15. OSAL_PKG_AWSTATS=awstats
  16. OSAL_PATH_AWSTATS_CONF=/etc/awstats
  17. # Bind
  18. OSAL_SERVICE_BIND=named
  19. OSAL_USER_BIND=named
  20. OSAL_PKG_BIND=bind
  21. OSAL_PATH_BIND_DATA=/var/named
  22. # ClamAV
  23. OSAL_SERVICE_CLAMAV=clamd
  24. OSAL_USER_CLAMAV=clamav
  25. OSAL_PKG_CLAMAV='clamd clamav-update'
  26. OSAL_PATH_CLAMAV_CONF=/etc/clamd.conf
  27. OSAL_PATH_CLAMAV_CONF_D=/etc/clamd.d
  28. # Cron
  29. OSAL_SERVICE_CRON=crond
  30. # Dovecot
  31. OSAL_SERVICE_DOVECOT=dovecot
  32. OSAL_PKG_DOVECOT=dovecot
  33. OSAL_PATH_DOVECOT_CONF=/etc/dovecot
  34. # Exim
  35. OSAL_SERVICE_EXIM=exim
  36. OSAL_USER_EXIM=exim
  37. OSAL_PKG_EXIM=exim
  38. OSAL_FILENAME_EXIM_CONF="${OSAL_PKG_EXIM}.conf"
  39. OSAL_DIR_EXIM_CONF=/etc/exim
  40. OSAL_PATH_EXIM_CONF="${OSAL_DIR_EXIM_CONF}/${OSAL_FILENAME_EXIM_CONF}"
  41. # MariaDB
  42. OSAL_PKG_MARIADB=MariaDB
  43. OSAL_SERVICE_MARIADB=mariadb
  44. OSAL_DIR_MARIADB_CONF=/etc
  45. OSAL_DIR_MARIADB_CONF_D=/etc/my.cnf.d
  46. OSAL_FILENAME_MARIADB_CONF=my.cnf
  47. OSAL_PATH_MARIADB_CONF="$OSAL_DIR_MARIADB_CONF/$OSAL_FILENAME_MARIADB_CONF"
  48. OSAL_PATH_MARIADB_DATA=/var/lib/mysql
  49. # Nginx
  50. OSAL_SERVICE_NGINX=nginx
  51. OSAL_USER_NGINX=nginx
  52. OSAL_PKG_NGINX=nginx
  53. OSAL_PATH_NGINX_CONF=/etc/nginx
  54. OSAL_PATH_NGINX_CONF_D=/etc/nginx/conf.d
  55. # PHP
  56. PHP_DIR_POOL_D_BASE=/etc/opt/remi
  57. PHP_PKG_MOD_PHP=mod_php
  58. # phpMyAdmin
  59. OSAL_PKG_PHPMYADMIN=phpMyAdmin
  60. # RoundCube
  61. OSAL_PKG_ROUNDCUBE=roundcubemail
  62. OSAL_PATH_ROUNDCUBE_INSTALL_MYSQL=/usr/share/roundcubemail/SQL/mysql
  63. # SpamAssassin
  64. OSAL_SERVICE_SPAMASSASSIN=spamassassin
  65. OSAL_PKG_SPAMASSASSIN=spamassassin
  66. OSAL_PATH_SPAMASSASSIN_CONF=/etc/mail/spamassassin
  67. # vsftpd
  68. OSAL_PATH_VSFTPD_CONF=/etc/vsftpd
  69. # Misc. users
  70. OSAL_USER_NOBODY=nobody
  71. OSAL_USER_NOGROUP=nobody
  72. # Misc. commands
  73. OSAL_CMD_PACKAGE_MANAGER=/usr/bin/dnf
  74. # Misc. paths
  75. OSAL_PATH_LOGROTATE_CONF_D=/etc/logrotate.d
  76. OSAL_PATH_RUN=/var/run
  77. #-------------------------------------------------------------------#
  78. # Functions #
  79. #-------------------------------------------------------------------#
  80. # osal_package_getversion 'package'
  81. osal_package_getversion() {
  82. rpm --queryformat="%{VERSION}" -q $1 | cut -d"~" -f1
  83. }
  84. # OS function wrappers
  85. # package_preinstall
  86. osal_package_preinstall() {
  87. true # Do nothing (on Debian: apt-get update)
  88. }
  89. # package_install 'package' 'package' ...
  90. osal_package_install() {
  91. [ "$HESTIA_DEBUG" ] && >&2 echo $OSAL_CMD_PACKAGE_MANAGER -q -y install "$@"
  92. $OSAL_CMD_PACKAGE_MANAGER -q -y install "$@"
  93. }
  94. # package_remoev 'package' 'package' ...
  95. osal_package_remove() {
  96. [ "$HESTIA_DEBUG" ] && >&2 $OSAL_CMD_PACKAGE_MANAGER -q -y remove "$@"
  97. $OSAL_CMD_PACKAGE_MANAGER -q -y remove "$@"
  98. }
  99. # Software-specific
  100. # apache_module_isenabled 'module_name' = (1|null)
  101. osal_apache_module_isenabled() {
  102. mod_enabled=$(/usr/sbin/httpd -M | grep $1)
  103. [ "$mod_enabled" ] && echo 1
  104. }
  105. # apache_module_enable 'module_name'
  106. osal_apache_module_enable() {
  107. /usr/bin/sed -i "/^#*LoadModule\s*${1}_module/ s/#*//" $OSAL_PATH_APACHE_MODS_ENABLED/*.conf
  108. grep "^LoadModule\s*${1}_module" $OSAL_PATH_APACHE_MODS_ENABLED/*.conf > /dev/null
  109. if [ $? -gt 0 ]; then
  110. echo "LoadModule ${1}_module modules/mod_${1}.so" >> $OSAL_PATH_APACHE_MODS_ENABLED/${1}.conf
  111. fi
  112. }
  113. # apache_module_disable 'module_name'
  114. osal_apache_module_disable() {
  115. /usr/bin/sed -i "/^LoadModule\s*${1}_module/ s/^/#/" $OSAL_PATH_APACHE_MODS_ENABLED/*.conf
  116. }
  117. # multiphp_php_package_prefix 7.3 = 'php73-php'
  118. osal_php_package_prefix() {
  119. echo php${1//.}-php
  120. }
  121. # multiphp_fpm_isinstalled 7.3 = (1|null)
  122. osal_php_fpm_isinstalled() {
  123. php_prefix=$(osal_php_package_prefix $1)
  124. rpm -q --quiet ${php_prefix}-fpm && echo 1
  125. }
  126. # multiphp_etc_folder '7.3' = /etc/opt/remi/php73
  127. osal_php_etc_folder() {
  128. echo /etc/opt/remi/php${1//.}
  129. }
  130. # Returns PHP-FPM directory for a given PHP version
  131. # multiphp_fpm_pool_d '7.3' = /etc/opt/remi/php73/php-fpm.d
  132. osal_php_fpm_pool_d() {
  133. local numbersonly=${1//.} # Remove . in 7.3
  134. numbersonly=${numbersonly#php} # Remove php in php73
  135. echo $PHP_DIR_POOL_D_BASE/php${numbersonly}/php-fpm.d
  136. }