mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-10-31 08:29:33 +08:00 
			
		
		
		
	* fix: del the error world * fix: refactoring scripts * fix: del nounset * rm set error * rm set error * replace openim::log::info * replace openim::log::info * replace openim::log::info * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * fix: fix the error output format * log * fix: fix the error * log * log * fix: fi the code error * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * log * fix: use printf replace the echo --------- Co-authored-by: skiffer-git <44203734@qq.com>
		
			
				
	
	
		
			155 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			155 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| # Copyright © 2023 OpenIM. All rights reserved.
 | |
| #
 | |
| # Licensed under the Apache License, Version 2.0 (the "License");
 | |
| # you may not use this file except in compliance with the License.
 | |
| # You may obtain a copy of the License at
 | |
| #
 | |
| #     http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| # Unless required by applicable law or agreed to in writing, software
 | |
| # distributed under the License is distributed on an "AS IS" BASIS,
 | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| # See the License for the specific language governing permissions and
 | |
| # limitations under the License.
 | |
| #
 | |
| # OpenIM Server Installation Script
 | |
| #
 | |
| # Description:
 | |
| #     This script is designed to handle the installation, Is a deployment solution
 | |
| #     that uses the Linux systen extension. uninstallation, and
 | |
| #     status checking of OpenIM components on the server. OpenIM is a presumed
 | |
| #     communication or messaging platform based on the context.
 | |
| #
 | |
| # Usage:
 | |
| #     To utilize this script, you need to invoke it with specific commands
 | |
| #     and options as detailed below.
 | |
| #
 | |
| # Commands:
 | |
| #     -i, --install       : Use this command to initiate the installation of all
 | |
| #                           OpenIM components.
 | |
| #     -u, --uninstall     : Use this command to uninstall or remove all
 | |
| #                           OpenIM components from the server.
 | |
| #     -s, --status        : This command can be used to check and report the
 | |
| #                           current operational status of the installed OpenIM components.
 | |
| #     -h, --help          : For any assistance or to view the available commands,
 | |
| #                           use this command to display the help menu.
 | |
| #
 | |
| # Example Usage:
 | |
| #     To install all OpenIM components:
 | |
| #         ./scripts/install/install.sh -i
 | |
| #     or
 | |
| #         ./scripts/install/install.sh --install
 | |
| #
 | |
| # Note:
 | |
| #     Ensure you have the necessary privileges to execute installation or
 | |
| #     uninstallation operations. It's generally recommended to take a backup
 | |
| #     before making major changes.
 | |
| #
 | |
| ###############################################################################
 | |
| 
 | |
| OPENIM_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../.. && pwd -P)
 | |
| [[ -z ${COMMON_SOURCED} ]] && source "${OPENIM_ROOT}"/scripts/install/common.sh
 | |
| 
 | |
| ${OPENIM_ROOT}/scripts/install/openim-man.sh
 | |
| ${OPENIM_ROOT}/scripts/install/openim-tools.sh
 | |
| ${OPENIM_ROOT}/scripts/install/test.sh
 | |
| 
 | |
| # Detailed help function
 | |
| function openim::install::show_help() {
 | |
|   echo "OpenIM Installer"
 | |
|   echo "Usage: $0 <command> [options]"
 | |
|   echo ""
 | |
|   echo "Commands:"
 | |
|   echo "  -i, --install        Install all OpenIM components."
 | |
|   echo "  -u, --uninstall      Remove all OpenIM components."
 | |
|   echo "  -s, --status         Check the current status of OpenIM components."
 | |
|   echo "  -h, --help           Show this help menu."
 | |
|   echo ""
 | |
|   echo "Example: "
 | |
|   echo "  $0 -i     Will install all OpenIM components."
 | |
|   echo "  $0 --install  Same as above."
 | |
| }
 | |
| 
 | |
| function openim::install::install_openim() {
 | |
|   openim::common::sudo "mkdir -p ${OPENIM_DATA_DIR} ${OPENIM_INSTALL_DIR} ${OPENIM_CONFIG_DIR} ${OPENIM_LOG_DIR}"
 | |
|   openim::log::info "check openim dependency"
 | |
|   openim::common::sudo "cp -r ${OPENIM_ROOT}/config/* ${OPENIM_CONFIG_DIR}/"
 | |
|   
 | |
|   ${OPENIM_ROOT}/scripts/genconfig.sh ${ENV_FILE} ${OPENIM_ROOT}/deployments/templates/config.yaml > ${OPENIM_CONFIG_DIR}/config.yaml
 | |
|   ${OPENIM_ROOT}/scripts/genconfig.sh ${ENV_FILE} ${OPENIM_ROOT}/deployments/templates/prometheus.yml > ${OPENIM_CONFIG_DIR}/prometheus.yml
 | |
|   
 | |
|   openim::util::check_ports ${OPENIM_DEPENDENCY_PORT_LISTARIES[@]}
 | |
|   
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-msggateway.sh openim::msggateway::install || return 1
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-msgtransfer.sh openim::msgtransfer::install || return 1
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-push.sh openim::push::install || return 1
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-crontask.sh openim::crontask::install || return 1
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-rpc.sh openim::rpc::install || return 1
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-api.sh openim::api::install || return 1
 | |
|   
 | |
|   openim::common::sudo "cp -r ${OPENIM_ROOT}/deployments/templates/openim.target /etc/systemd/system/openim.target"
 | |
|   openim::common::sudo "systemctl daemon-reload"
 | |
|   openim::common::sudo "systemctl restart openim.target"
 | |
|   openim::common::sudo "systemctl enable openim.target"
 | |
|   openim::log::success "openim install success"
 | |
| }
 | |
| 
 | |
| function openim::uninstall::uninstall_openim() {
 | |
|   openim::log::info "uninstall openim"
 | |
|   
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-msggateway.sh openim::msggateway::uninstall || return 1
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-msgtransfer.sh openim::msgtransfer::uninstall || return 1
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-push.sh openim::push::uninstall || return 1
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-crontask.sh openim::crontask::uninstall || return 1
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-rpc.sh openim::rpc::uninstall || return 1
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-api.sh openim::api::uninstall || return 1
 | |
|   
 | |
|   set +o errexit
 | |
|   openim::common::sudo "systemctl stop openim.target"
 | |
|   openim::common::sudo "systemctl disable openim.target"
 | |
|   openim::common::sudo "rm -f /etc/systemd/system/openim.target"
 | |
| 
 | |
|   openim::log::success "openim uninstall success"
 | |
| }
 | |
| 
 | |
| function openim::install::status() {
 | |
|   openim::log::info "check openim status"
 | |
|   
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-msggateway.sh openim::msggateway::status || return 1
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-msgtransfer.sh openim::msgtransfer::status || return 1
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-push.sh openim::push::status || return 1
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-crontask.sh openim::crontask::status || return 1
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-rpc.sh openim::rpc::status || return 1
 | |
|   ${OPENIM_ROOT}/scripts/install/openim-api.sh openim::api::status || return 1
 | |
|   
 | |
|   openim::log::success "openim status success"
 | |
| }
 | |
| 
 | |
| # If no arguments are provided, show help
 | |
| if [[ $# -eq 0 ]]; then
 | |
|   openim::install::show_help
 | |
|   exit 0
 | |
| fi
 | |
| 
 | |
| # Argument parsing to call functions based on user input
 | |
| while (( "$#" )); do
 | |
|   case "$1" in
 | |
|     -i|--install)
 | |
|       openim::install::install_openim
 | |
|       shift
 | |
|     ;;
 | |
|     -u|--uninstall)
 | |
|       openim::uninstall::uninstall_openim
 | |
|       shift
 | |
|     ;;
 | |
|     -s|--status)
 | |
|       openim::install::status
 | |
|       shift
 | |
|     ;;
 | |
|     -h|--help|*)
 | |
|       openim::install::show_help
 | |
|       exit 0
 | |
|     ;;
 | |
|   esac
 | |
| done |