diff --git a/README.md b/README.md index 0f0381c5..83f790b9 100644 --- a/README.md +++ b/README.md @@ -39,12 +39,12 @@ You can see the sceenshoots below: You should have root privileges user to install or upgrade Websoft9, if you use no-root user you can `sudo su` for it ``` -# install by default +# Install by default curl https://websoft9.github.io/websoft9/install/install.sh | bash -# install Websoft9 development version and install path at /data/websoft9/source -wget https://websoft9.github.io/websoft9/install/install.sh && bash install.sh --port 9000 --channel dev --path "/data/websoft9/source" +# Install Websoft9 special version by development artifact and install path at /data/websoft9/source ... +wget https://websoft9.github.io/websoft9/install/install.sh && bash install.sh --port 9000 --channel dev --path "/data/websoft9/source" --version "0.8.25" ``` After installation, access it by: **http://Internet IP:9000** and using **Linux user** for login diff --git a/cockpit/README.md b/cockpit/README.md index bbe56622..99cd2d7d 100644 --- a/cockpit/README.md +++ b/cockpit/README.md @@ -19,6 +19,6 @@ Developer should improve these codes: - Install and Upgrade Cockpit: */install/install_cockpit.sh* - Override the default menus: */cockpit/menu_override* - > shell.override.json is used for Top menu of Cockpit + > shell.override.json is used for Top menu of Cockpit。Override function until Cockpit 297 - Cockipt configuration file: */cockpit/cockpit.conf* diff --git a/install/install.sh b/install/install.sh index 49317911..8fbca5eb 100644 --- a/install/install.sh +++ b/install/install.sh @@ -8,31 +8,31 @@ export PATH # Command-line options # ============================================================================== # -# --force -# Use the --force option to ignore all interactive choices. default is n, for example: +# --version +# Use the --version option to install a special version for installation. default is latest, for example: # -# $ sudo sh install.sh --force n +# $ sudo bash install.sh --version "0.8.25" # # --port <9000> # Use the --port option to set Websoft9 cosole port. default is 9000, for example: # -# $ sudo sh install.sh --port 9001 +# $ sudo bash install.sh --port 9001 # # --channel # Use the --channel option to install a release(production) or dev distribution. default is release, for example: # -# $ sudo sh install.sh --channel release +# $ sudo bash install.sh --channel release # # --path # Use the --path option to for installation path for example: # -# $ sudo sh install.sh --path "/data/websoft9/source" +# $ sudo bash install.sh --path "/data/websoft9/source" # # ============================================================================== # 设置参数的默认值 -force="n" +version="latest" port="9000" channel="release" path="/data/websoft9/source" @@ -40,8 +40,8 @@ path="/data/websoft9/source" # 获取参数值 while [[ $# -gt 0 ]]; do case $1 in - --force) - force="$2" + --version) + version="$2" shift 2 ;; --port) @@ -64,7 +64,7 @@ done # 输出参数值 echo "Your installation parameters are as follows: " -echo "--force: $force" +echo "--version: $version" echo "--port: $port" echo "--channel: $channel" echo "--path: $path" @@ -75,11 +75,11 @@ echo "--path: $path" export http_port=80 export https_port=443 export cockpit_port=$port -export force_install=$force export install_path=$path export channel +export version export systemd_path="/opt/websoft9/systemd" -export source_zip="websoft9-latest.zip" +export source_zip="websoft9-$version.zip" export source_unzip="websoft9" export source_github_pages="https://websoft9.github.io/websoft9" export tools_yum="git curl wget yum-utils jq bc unzip" @@ -123,7 +123,7 @@ download_source() { echo_prefix_source=$'\n[Dowload Source] - ' echo "$echo_prefix_source Download Websoft9 source code from $artifact_url/$source_zip" - rm -rf websoft9-latest.zip* + find . -type f -name "websoft9*.zip*" -exec rm -f {} \; if [ -d "$install_path" ]; then echo "Directory $install_path already exists and installation will cover it." else diff --git a/install/install_cockpit.sh b/install/install_cockpit.sh index c2305d9d..383ee8d3 100644 --- a/install/install_cockpit.sh +++ b/install/install_cockpit.sh @@ -7,6 +7,7 @@ export PATH ## This script is used for install or upgrade Cockpit on Linux ## Cockpit build at redhat family: https://copr.fedorainfracloud.org/coprs/g/cockpit/cockpit-preview/monitor/ +## Cockpit reposoitory list: https://pkgs.org/download/cockpit ## PackageKit: https://www.freedesktop.org/software/PackageKit/ ## Not use pkcon install/update cockpit, the reason is: https://cockpit-project.org/faq.html#error-message-about-being-offline ## pkcon can read repositories at you system directly, it don't provide exra repository @@ -102,13 +103,7 @@ check_ports() { } Print_Version(){ - - if command -v apt >/dev/null; then - apt show cockpit | head -n 15 - else - yum info cockpit || dnf info cockpit - fi - + sudo /usr/libexec/cockpit-ws --version 2>/dev/null || sudo /usr/lib/cockpit-ws --version 2>/dev/null } Install_PackageKit(){ @@ -121,14 +116,14 @@ Install_PackageKit(){ if [ "$(cat /etc/redhat-release)" = "Redhat7" ]; then sudo subscription-manager repos --enable rhel-7-server-extras-rpms fi - sudo yum install PackageKit + sudo yum install PackageKit -y elif command -v dnf &> /dev/null; then - sudo dnf install PackageKit + sudo dnf install PackageKit -y elif command -v apt &> /dev/null; then sudo apt update - sudo apt install packagekit + sudo apt install packagekit -y else echo "PackageKit not found, Cockpit cannot be installed" @@ -154,7 +149,7 @@ Restart_Cockpit(){ echo "$echo_prefix_cockpit Restart Cockpit" sudo systemctl daemon-reload sudo systemctl restart cockpit - sudo systemctl restart cockpit.socket + sudo systemctl restart cockpit.socket 2> /dev/null } Set_Firewall(){ @@ -290,12 +285,22 @@ Test_Cockpit(){ echo "$echo_prefix_cockpit Test Cockpit console accessibility" test_cmd="curl localhost:$cockpit_port" - if $test_cmd >/dev/null 2>&1; then - echo "Cockpit running OK..." - else - echo "Cockpit is not running..." - exit 1 - fi + start_time=$(date +%s) + timeout=30 + while true; do + if $test_cmd >/dev/null 2>&1; then + echo "Cockpit running OK..." + break + else + current_time=$(date +%s) + elapsed_time=$(($current_time - $start_time)) + if [ $elapsed_time -ge $timeout ]; then + echo "Cockpit is not running... Timeout after waiting $timeout seconds." + exit 1 + fi + sleep 1 + fi + done Print_Version } diff --git a/install/install_docker.sh b/install/install_docker.sh index 60610758..f59f6516 100644 --- a/install/install_docker.sh +++ b/install/install_docker.sh @@ -5,29 +5,25 @@ export PATH # Install and Upgade Docker for mosts of Linux # This script is intended from https://get.docker.com and add below: # -# - remove Podman +# - install or update Docker # - support Redhat, CentOS-Stream, OracleLinux, AmazonLinux # # 1. download the script # -# $ curl -fsSL https://websoft9.github.io/websoft9/install/install-docker.sh -o install-docker.sh +# $ curl -fsSL https://websoft9.github.io/websoft9/install/install_docker.sh -o install_docker.sh # # 2. verify the script's content # -# $ cat install-docker.sh +# $ cat install_docker.sh # # 3. run the script with --dry-run to verify the steps it executes # -# $ sh install-docker.sh --dry-run +# $ sh install_docker.sh --dry-run # # 4. run the script either as root, or using sudo to perform the installation. # -# $ sudo sh install-docker.sh +# $ sudo sh install_docker.sh -############################################################ -# Below vars export from install.sh -# $force_install -############################################################ docker_packages="docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin" @@ -45,18 +41,21 @@ is_apt_locked(){ docker_exist() { # 检查 `docker` 命令是否存在 if ! command -v docker &> /dev/null; then - echo "false" + echo "docker command not exist" return 1 fi - # 检查 Docker 服务是否存在 - systemctl status docker &> /dev/null + # 检查 Docker 服务是否正在运行 + systemctl is-active docker.service &> /dev/null if [ $? -ne 0 ]; then - echo "false" - return 1 + echo "Docker service is not running, trying to start it..." + systemctl start docker.service + if [ $? -ne 0 ]; then + echo "Failed to start Docker service." + return 1 + fi fi - echo "true" return 0 } @@ -90,7 +89,7 @@ Install_Docker(){ Upgrade_Docker(){ -if eval "$docker_exist"; then +if docker_exist; then echo "$echo_prefix_docker Upgrading Docker for your system..." dnf --version >/dev/null 2>&1 dnf_status=$? @@ -113,30 +112,10 @@ else fi } -Remove_Podman(){ - echo "$echo_prefix_docker Try to remove Podman" - podman pod stop --all - # Remove Podman and its dependencies - if [ -x "$(command -v dnf)" ]; then - sudo dnf remove podman -y - elif [ -x "$(command -v apt)" ]; then - sudo apt remove podman -y - elif [ -x "$(command -v zypper)" ]; then - sudo zypper remove podman -y - elif [ -x "$(command -v pacman)" ]; then - sudo pacman -Rs podman --noconfirm - else - echo "Unable to find a suitable package manager to remove Podman." - exit 1 - fi - echo "Podman has been stopped and removed." - -} - Set_Docker(){ # should have Docker server and Docker cli -if eval $docker_exist; then +if docker_exist; then echo "$echo_prefix_docker Starting to Set docker..." sudo systemctl enable docker sudo systemctl restart docker @@ -144,23 +123,10 @@ if eval $docker_exist; then sudo docker network create websoft9 fi else - echo "Docker no installed, exit..." + echo "Docker settings failed, exit..." exit fi } -## This Script starting here .................................... - -if command -v podman &> /dev/null; then - if [ "$force_install" = "y" ]; then - Remove_Podman - else - read -p "Install Websoft9 will remove Podman and Install Docker for continue(y/n): " answer - if [ "$answer" = "y" ]; then - Remove_Podman - fi - fi -fi - Upgrade_Docker Set_Docker \ No newline at end of file diff --git a/install/install_podman.sh b/install/install_podman.sh new file mode 100644 index 00000000..925db230 --- /dev/null +++ b/install/install_podman.sh @@ -0,0 +1,26 @@ +#!/bin/bash +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +export PATH + +# to do + + +Remove_Podman(){ + echo "$echo_prefix_docker Try to remove Podman" + podman pod stop --all + # Remove Podman and its dependencies + if [ -x "$(command -v dnf)" ]; then + sudo dnf remove podman -y + elif [ -x "$(command -v apt)" ]; then + sudo apt remove podman -y + elif [ -x "$(command -v zypper)" ]; then + sudo zypper remove podman -y + elif [ -x "$(command -v pacman)" ]; then + sudo pacman -Rs podman --noconfirm + else + echo "Unable to find a suitable package manager to remove Podman." + exit 1 + fi + echo "Podman has been stopped and removed." + +} \ No newline at end of file diff --git a/version.json b/version.json index ba8c6801..93daeb0e 100644 --- a/version.json +++ b/version.json @@ -23,6 +23,11 @@ "8", "7" ], + "Oracle Linux": [ + "9", + "8", + "7" + ], "Rocky": [ "9", "8" @@ -32,10 +37,12 @@ "8" ], "Debian": [ + "12", "11", "10" ], "Ubuntu": [ + "23.04", "22.04", "20.04", "18.04"