init
This commit is contained in:
@@ -0,0 +1,183 @@
|
||||
#!/bin/bash
|
||||
# core/argument.sh - version/help/argument parsing
|
||||
# Migrated verbatim from install.sh (lines 38-41,43-74,75-213,215-234).
|
||||
version() {
|
||||
echo "version: 2.6"
|
||||
echo "updated date: 2022-09-03"
|
||||
}
|
||||
Show_Help() {
|
||||
version
|
||||
echo "Usage: $0 command ...[parameters]....
|
||||
--help, -h Show this help message, More: https://oneinstack.com/auto
|
||||
--version, -v Show version info
|
||||
--nginx_option [1-2] Install Nginx server version
|
||||
--php_option [1-3] Install PHP version
|
||||
--mphp_ver [74/80/81] Install another PHP version (PATH: ${php_install_dir}\${mphp_ver})
|
||||
--mphp_addons Only install another PHP addons
|
||||
--phpcache_option [1-4] Install PHP opcode cache, default: 1 opcache
|
||||
--php_extensions [ext name] Install PHP extensions, include zendguardloader,ioncube,
|
||||
sourceguardian,imagick,gmagick,fileinfo,imap,ldap,calendar,phalcon,
|
||||
yaf,yar,redis,mongodb,swoole,xdebug
|
||||
--nodejs Install Nodejs
|
||||
--db_option [1-9] Install DB version
|
||||
--dbinstallmethod [1-2] DB install method, default: 1 binary install
|
||||
--dbrootpwd [password] DB super password
|
||||
--pureftpd Install Pure-Ftpd
|
||||
--redis Install Redis
|
||||
--phpmyadmin Install phpMyAdmin
|
||||
--python Install Python (PATH: ${python_install_dir})
|
||||
--ssh_port [No.] SSH port
|
||||
--iptables Enable iptables (enabled by default on all systems)
|
||||
--reboot Restart the server after installation
|
||||
"
|
||||
}
|
||||
# core/argument.sh (cont) - parse_arguments (getopt)
|
||||
# Migrated verbatim from install.sh (lines 75-213); calls handle_ssh_port.
|
||||
parse_arguments() {
|
||||
ARG_NUM=$#
|
||||
TEMP=`getopt -o hvV --long help,version,nginx_option:,php_option:,mphp_ver:,mphp_addons,phpcache_option:,php_extensions:,nodejs,db_option:,dbrootpwd:,dbinstallmethod:,pureftpd,redis,phpmyadmin,python,ssh_port:,iptables,reboot -- "$@" 2>/dev/null`
|
||||
[ $? != 0 ] && echo "${CWARNING}ERROR: unknown argument! ${CEND}" && Show_Help && exit 1
|
||||
eval set -- "${TEMP}"
|
||||
while :; do
|
||||
[ -z "$1" ] && break;
|
||||
case "$1" in
|
||||
-h|--help)
|
||||
Show_Help; exit 0
|
||||
;;
|
||||
-v|-V|--version)
|
||||
version; exit 0
|
||||
;;
|
||||
--nginx_option)
|
||||
nginx_option=$2; shift 2
|
||||
[[ ! ${nginx_option} =~ ^[1-2]$ ]] && { echo "${CWARNING}nginx_option input error! Please only input number 1~2${CEND}"; exit 1; }
|
||||
[ -e "${nginx_install_dir}/sbin/nginx" ] && { echo "${CWARNING}Nginx already installed! ${CEND}"; unset nginx_option; }
|
||||
;;
|
||||
--php_option)
|
||||
php_option=$2; shift 2
|
||||
[[ ! ${php_option} =~ ^[1-3]$ ]] && { echo "${CWARNING}php_option input error! Please only input number 1~3${CEND}"; exit 1; }
|
||||
[ -e "${php_install_dir}/bin/phpize" ] && { echo "${CWARNING}PHP already installed! ${CEND}"; unset php_option; }
|
||||
if [[ "${Family}" == "ubuntu" ]] && [ "${Ubuntu_ver:-0}" -ge 24 ] && [ "${php_option}" == '1' ]; then
|
||||
echo "${CWARNING}PHP 7.4 is not supported on Ubuntu ${Ubuntu_ver}+, please choose PHP 8.x (php_option 2 or 3)${CEND}"; exit 1;
|
||||
fi
|
||||
;;
|
||||
--mphp_ver)
|
||||
mphp_ver=$2; mphp_flag=y; shift 2
|
||||
[[ ! "${mphp_ver}" =~ ^(74|80|81)$ ]] && { echo "${CWARNING}mphp_ver input error! Please only input number 74/80/81${CEND}"; exit 1; }
|
||||
if [[ "${Family}" == "ubuntu" ]] && [ "${Ubuntu_ver:-0}" -ge 24 ] && [ "${mphp_ver}" == '74' ]; then
|
||||
echo "${CWARNING}mphp 7.4 is not supported on Ubuntu ${Ubuntu_ver}+, please choose 80 or 81${CEND}"; exit 1;
|
||||
fi
|
||||
;;
|
||||
--mphp_addons)
|
||||
mphp_addons_flag=y; shift 1
|
||||
;;
|
||||
--phpcache_option)
|
||||
phpcache_option=$2; shift 2
|
||||
;;
|
||||
--php_extensions)
|
||||
php_extensions=$2; shift 2
|
||||
[ -n "`echo ${php_extensions} | grep -w zendguardloader`" ] && pecl_zendguardloader=1
|
||||
[ -n "`echo ${php_extensions} | grep -w ioncube`" ] && pecl_ioncube=1
|
||||
[ -n "`echo ${php_extensions} | grep -w sourceguardian`" ] && pecl_sourceguardian=1
|
||||
[ -n "`echo ${php_extensions} | grep -w imagick`" ] && pecl_imagick=1
|
||||
[ -n "`echo ${php_extensions} | grep -w gmagick`" ] && pecl_gmagick=1
|
||||
[ -n "`echo ${php_extensions} | grep -w fileinfo`" ] && pecl_fileinfo=1
|
||||
[ -n "`echo ${php_extensions} | grep -w imap`" ] && pecl_imap=1
|
||||
[ -n "`echo ${php_extensions} | grep -w ldap`" ] && pecl_ldap=1
|
||||
[ -n "`echo ${php_extensions} | grep -w calendar`" ] && pecl_calendar=1
|
||||
[ -n "`echo ${php_extensions} | grep -w phalcon`" ] && pecl_phalcon=1
|
||||
[ -n "`echo ${php_extensions} | grep -w yaf`" ] && pecl_yaf=1
|
||||
[ -n "`echo ${php_extensions} | grep -w yar`" ] && pecl_yar=1
|
||||
[ -n "`echo ${php_extensions} | grep -w redis`" ] && pecl_redis=1
|
||||
[ -n "`echo ${php_extensions} | grep -w mongodb`" ] && pecl_mongodb=1
|
||||
[ -n "`echo ${php_extensions} | grep -w swoole`" ] && pecl_swoole=1
|
||||
[ -n "`echo ${php_extensions} | grep -w xdebug`" ] && pecl_xdebug=1
|
||||
;;
|
||||
--nodejs)
|
||||
nodejs_flag=y; shift 1
|
||||
[ -e "${nodejs_install_dir}/bin/node" ] && { echo "${CWARNING}Nodejs already installed! ${CEND}"; unset nodejs_flag; }
|
||||
;;
|
||||
--db_option)
|
||||
db_option=$2; shift 2
|
||||
if [[ "${db_option}" =~ ^[1-5]$ ]]; then
|
||||
[ -d "${db_install_dir}/support-files" ] && { echo "${CWARNING}MySQL/MariaDB already installed! ${CEND}"; unset db_option; }
|
||||
elif [[ "${db_option}" =~ ^[6-8]$ ]]; then
|
||||
[ -e "${pgsql_install_dir}/bin/psql" ] && { echo "${CWARNING}PostgreSQL already installed! ${CEND}"; unset db_option; }
|
||||
elif [ "${db_option}" == '9' ]; then
|
||||
[ -e "${mongo_install_dir}/bin/mongo" ] && { echo "${CWARNING}MongoDB already installed! ${CEND}"; unset db_option; }
|
||||
else
|
||||
echo "${CWARNING}db_option input error! Please only input number 1~9${CEND}"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
--dbrootpwd)
|
||||
dbrootpwd=$2; shift 2
|
||||
dbpostgrespwd="${dbrootpwd}"
|
||||
dbmongopwd="${dbrootpwd}"
|
||||
;;
|
||||
--dbinstallmethod)
|
||||
dbinstallmethod=$2; shift 2
|
||||
[[ ! ${dbinstallmethod} =~ ^[1-2]$ ]] && { echo "${CWARNING}dbinstallmethod input error! Please only input number 1~2${CEND}"; exit 1; }
|
||||
;;
|
||||
--pureftpd)
|
||||
pureftpd_flag=y; shift 1
|
||||
[ -e "${pureftpd_install_dir}/sbin/pure-ftpwho" ] && { echo "${CWARNING}Pure-FTPd already installed! ${CEND}"; unset pureftpd_flag; }
|
||||
;;
|
||||
--redis)
|
||||
redis_flag=y; shift 1
|
||||
[ -e "${redis_install_dir}/bin/redis-server" ] && { echo "${CWARNING}redis-server already installed! ${CEND}"; unset redis_flag; }
|
||||
;;
|
||||
--phpmyadmin)
|
||||
phpmyadmin_flag=y; shift 1
|
||||
[ -d "${wwwroot_dir}/default/phpMyAdmin" ] && { echo "${CWARNING}phpMyAdmin already installed! ${CEND}"; unset phpmyadmin_flag; }
|
||||
;;
|
||||
--python)
|
||||
python_flag=y; shift 1
|
||||
;;
|
||||
--ssh_port)
|
||||
ssh_port=$2; shift 2
|
||||
;;
|
||||
--iptables)
|
||||
iptables_flag=y; shift 1
|
||||
;;
|
||||
--reboot)
|
||||
reboot_flag=y; shift 1
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
echo "${CWARNING}ERROR: unknown argument! ${CEND}" && Show_Help && exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
# Default-enable iptables for every supported system. ServerStack only
|
||||
# supports Debian/Ubuntu (firewalld/ufw removed), so iptables is the sole
|
||||
# firewall; non-interactive installs that omit --iptables still get it. A
|
||||
# user can still answer 'n' in the interactive menu to opt out.
|
||||
iptables_flag=${iptables_flag:-y}
|
||||
# SSH port handling (migrated verbatim, lines 215-234)
|
||||
handle_ssh_port
|
||||
}
|
||||
|
||||
handle_ssh_port() {
|
||||
# Use default SSH port 22. If you use another SSH port on your server
|
||||
if [ -e "/etc/ssh/sshd_config" ]; then
|
||||
[ -z "`grep ^Port /etc/ssh/sshd_config`" ] && now_ssh_port=22 || now_ssh_port=`grep ^Port /etc/ssh/sshd_config | awk '{print $2}' | head -1`
|
||||
while :; do echo
|
||||
[ ${ARG_NUM} == 0 ] && read -e -p "Please input SSH port(Default: ${now_ssh_port}): " ssh_port
|
||||
ssh_port=${ssh_port:-${now_ssh_port}}
|
||||
if [ ${ssh_port} -eq 22 >/dev/null 2>&1 -o ${ssh_port} -gt 1024 >/dev/null 2>&1 -a ${ssh_port} -lt 65535 >/dev/null 2>&1 ]; then
|
||||
break
|
||||
else
|
||||
echo "${CWARNING}input error! Input range: 22,1025~65534${CEND}"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "`grep ^Port /etc/ssh/sshd_config`" -a "${ssh_port}" != '22' ]; then
|
||||
sed -i "s@^#Port.*@&\nPort ${ssh_port}@" /etc/ssh/sshd_config
|
||||
elif [ -n "`grep ^Port /etc/ssh/sshd_config`" ]; then
|
||||
sed -i "s@^Port.*@Port ${ssh_port}@" /etc/ssh/sshd_config
|
||||
fi
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user