df --block-size=1K | awk '{total+=$2; used+=$3; avail+=$4} END {printf "總大小: %.2fG, 已使用: %.2fG, 可用: %.2fG\n", total/1024/1024, used/1024/1024, avail/1024/1024}'
就會得到
df --block-size=1K | awk '{total+=$2; used+=$3; avail+=$4} END {printf "總大小: %.2fG, 已使用: %.2fG, 可用: %.2fG\n", total/1024/1024, used/1024/1024, avail/1024/1024}'
輸入下方指令
sudo systemctl edit systemctl-networkd-wait-online.service
# 再ExecStart=/usr/lib/systemd/systemd-networkd-wait-online 加入--timeout=15
sudo systemctl daemon-reload
參考資料:
https://www.reddit.com/r/Ubuntu/comments/16xi5h0/how_do_i_fix_systemdnetworkdwaitonlineservice/
# 單元測試及E2E測試
test:
name: 單元測試及E2E測試
runs-on: [ self-hosted, Ubuntu, 24.04 ]
steps:
# 單元測試
- name: Unit Test
run: pnpm nx test project
# E2E 測試
- name: E2E Test
run: |
# 安裝依賴套件
sudo apt install -y libgtk2.0-0t64 libgtk-3-0t64 libgbm-dev libnotify-dev libnss3 libxss1 libasound2t64 libxtst6 xauth xvfb
# 安裝 Cypress
pnpm cypress install
# 驗證 Cypress
pnpm cypress verify
# 執行 E2E 測試
pnpm nx e2e project --headless
# 建立一個使用者 github
sudo useradd --system --create-home --shell /bin/bash github
# 創建一個文件夾
mkdir actions-runner && cd actions-runner
# 下載最新的runner包
curl -o actions-runner-linux-x64-2.322.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.322.0/actions-runner-linux-x64-2.322.0.tar.gz
# 可選:驗證哈希值
echo "b13b784808359f31bc79b08a191f5f83757852957dd8fe3dbfcc38202ccf5768 actions-runner-linux-x64-2.322.0.tar.gz" | shasum -a 256 -c
# 解壓安裝程序
tar xzf ./actions-runner-linux-x64-2.322.0.tar.gz && rm -fr actions-runner-linux-x64-2.322.0.tar.gz
# 配置 GitHub Actions runner
# 接著填入需要配置的設定即可
./config.sh --url https://github.com/YourOrganization --token yourToken
# 開機透過github用戶啟動GitHub Actions runner service
sudo -u github ./svc.sh install
# 立即啟動GitHub Actions runner
sudo -u github ./svc.sh start
# 下載 Zabbix 7.2 的安裝套件(適用於 Ubuntu 24.04)
wget https://repo.zabbix.com/zabbix/7.2/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.2+ubuntu24.04_all.deb
# 安裝 Zabbix 的套件來源並刪除安裝檔案
sudo dpkg -i zabbix-release_latest_7.2+ubuntu24.04_all.deb && rm -fr zabbix-release_latest_7.2+ubuntu24.04_all.deb
# 更新 apt 軟體庫並安裝 Zabbix 伺服器、前端、Nginx 設定、SQL 腳本、Zabbix Agent 2 及相關 MySQL 套件
sudo apt update && sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2 zabbix-agent2-plugin-mssql mysql-server mysql-client net-tools locales
# 執行 MySQL 安全性設定精靈,設定 root 密碼及其他安全選項
sudo mysql_secure_installation
# 啟用並立即啟動 MySQL 伺服器
sudo systemctl enable --now mysql
# 進入 MySQL
mysql -u root -p
# 設定 root 帳號的密碼認證方式為 mysql_native_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootPassword';
# 建立 Zabbix 資料庫,使用 UTF-8 編碼
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
# 建立 Zabbix 使用者並設定密碼
CREATE USER 'zabbix'@'localhost' IDENTIFIED WITH mysql_native_password BY 'zabbixPassword';
# 賦予 Zabbix 使用者所有資料庫權限
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
# 允許資料庫函式的 binlog
set global log_bin_trust_function_creators = 1;
# 刷新 MySQL 權限表,確保新權限生效
FLUSH PRIVILEGES;
# 退出 MySQL
QUIT;
# 將 Zabbix 伺服器 SQL 初始化腳本匯入資料庫
sudo zcat /usr/share/zabbix/sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -u zabbix -p zabbix
# 產生並設定系統語言環境為英文 UTF-8
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8
# 設定 PHP 預設語言環境為 en_US
sudo sed -i '/^\[intl\]/a intl.default_locale = en_US' /etc/php/8.3/fpm/php.ini
# 啟用 Nginx 監聽 8080 埠(預設為註解,移除 #)
sudo sed -i 's/^#\s*listen\s*8080;/listen 8080;/' /etc/nginx/conf.d/zabbix.conf
# 設定 Zabbix 伺服器收集 VMware 監控資料的 Collector 數量為 5(預設為 0)
sudo sed -i '/^# StartVMwareCollectors=0/a StartVMwareCollectors=5' /etc/zabbix/zabbix_server.conf
# 增加 VMware 緩存大小至 128MB(預設為 8MB)
sudo sed -i 's/^# VMwareCacheSize=8M/VMwareCacheSize=128M/' /etc/zabbix/zabbix_server.conf
# 設定 Zabbix 伺服器的資料庫名稱
sudo sed -i 's/^DBName=zabbix$/DBName=zabbix/' /etc/zabbix/zabbix_server.conf
# 設定 Zabbix 伺服器的資料庫使用者名稱
sudo sed -i 's/^DBUser=zabbix$/DBUser=zabbix/' /etc/zabbix/zabbix_server.conf
# 設定 Zabbix 伺服器的資料庫密碼
sudo sed -i '/^# DBPassword=$/a DBPassword=zabbix' /etc/zabbix/zabbix_server.conf
# 啟用並立即啟動 Zabbix 伺服器、Zabbix Agent、Nginx 和 PHP 服務
sudo systemctl enable --now zabbix-server zabbix-agent2 nginx php8.3-fpm
# 瀏覽器輸入以下網址即可進入設定畫面
http://ip:8080
# 編輯GitLab配置檔
sudo vim /etc/gitlab/gitlab.rb
# 找到下列的將其註解調
# sidekiq['min_concurrency']
# sidekiq['max_concurrency']
# 改加入
# sidekiq['concurrency'] = 併發數量
# 重新載入配置
sudo gitlab-ctl reconfigure
# 更新GitLab EE版本
sudo apt-get install --only-upgrade gitlab-ee=17.3.1-ee.0 -y
rm -rd ~/.kube
mkdir -p ~/.kube
cp -i /etc/kubernetes/admin.conf ~/.kube/config
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR Port-6443]: Port 6443 is in use
[ERROR Port-10251]: Port 10251 is in use
[ERROR Port-10252]: Port 10252 is in use
[ERROR FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists
[ERROR FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml]: /etc/kubernetes/manifests/kube-controller-manager.yaml already exists
[ERROR FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml]: /etc/kubernetes/manifests/kube-scheduler.yaml already exists
[ERROR FileAvailable--etc-kubernetes-manifests-etcd.yaml]: /etc/kubernetes/manifests/etcd.yaml already exists
[ERROR Port-10250]: Port 10250 is in use
[ERROR Port-2379]: Port 2379 is in use
[ERROR Port-2380]: Port 2380 is in use
[ERROR DirAvailable--var-lib-etcd]: /var/lib/etcd is not empty
scp /etc/kubernetes/admin.conf accountName@IPOrDNS:/etc/kubernetes/admin.conf
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
sudo mkdir -p /root/.kube
sudo cp -i /etc/kubernetes/admin.conf /root/.kube/config
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /root/.bash_profile
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
#切換至目錄
cd /opt
# 停止服務
sudo systemctl stop nexus
# 移除舊版本
sudo rm -fr nexus
# 先將資料備份
sudo mv sonatype-work sonatype-work-temp
# 下載新版本
sudo wget https://download.sonatype.com/nexus/3/nexus-3.70.1-02-java8-unix.tar.gz
# 解壓縮
sudo tar -xvf nexus-3.70.1-02-java8-unix.tar.gz
# 重新改名
sudo mv nexus-3.70.1-02 nexus
#將備份遷移至新的
sudo rm -fr sonatype-work/*
sudo mv sonatype-work-temp/* sonatype-work/
# 給予Nexus權限
sudo chown -R nexus:nexus nexus
sudo chown -R nexus:nexus sonatype-work
# 添加運行使用者
sudo sed -i 's/^;run_as_user=""/run_as_user="nexus"/' /opt/nexus/bin/nexus.rc
# 啟動服務
sudo systemctl start nexus
sudo apt install -y update-manager-core
sudo sed -i 's/jammy/noble/g' /etc/apt/sources.list
sudo apt update
sudo apt full-upgrade -y
# 安裝iSCSI
sudo apt update -y
sudo apt install -y open-iscsi
# 修改配置透過CHAP連接
sudo vim /etc/iscsi/iscsid.conf
# 自動登錄
node.startup = automatic
# 認證改為CHAP
node.session.auth.authmethod = CHAP
# 設置CHAP帳號
node.session.auth.username = YourCHAPUsername
# 設置CHAP密碼
node.session.auth.password = YourCHAPPassword
# 開啟open-iscsi服務
sudo systemctl enable --now open-iscsi
# 發現iSCSI目標
sudo iscsiadm -m discovery -t sendtargets -p targetIP
# 保持開機自動連接
sudo iscsiadm -m node -T IQN-Address -p targetIP --op=update -n node.startup -v automatic
# 檢查連線詳細狀態
sudo iscsiadm -m session -P 3
# 查找剛剛加入的iSCSI硬碟編號
lsblk
# 格式化硬碟
# 輸入n選擇P,最後輸入w即可
sudo fdisk /dev/sdb
# 格式化為ext4
sudo mkfs.ext4 /dev/sdb1
# 建立要掛載資料夾
sudo mkdir /mnt/iscsi
# 將該分區掛載到資料夾
sudo mount /dev/sdb1 /mnt/iscsi
# 修改至開機時掛載
sudo vim /etc/fstab
/dev/sdb1 /mnt/iscsi ext4 defaults,_netdev 0 0
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql
sudo systemctl restart postgresql
sudo apt install -y openvswitch-switch
nginx['custom_gitlab_server_config'] = "location ^~ /api/v4/jobs/request {\n deny all;\n return 503;\n}\n"
sudo gitlab-ctl reconfigure
sudo apt-get install --only-upgrade gitlab-ee -y
#取得最新套件版本及更新相關套件
sudo apt update -y && apt upgrade -y
#安裝相依套件
sudo apt-get install apt-transport-https ca-certificates software-properties-common curl gnupg lsb-release -y
#安裝Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
#加入Docker金鑰
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新套件來源
sudo apt update
#安裝Docker
sudo apt install docker-ce docker-ce-cli containerd.io -y
#開機啟動Docker
sudo systemctl enable --now docker
#取得workbench及KIE Server
docker pull jboss/drools-workbench-showcase
docker pull jboss/kie-server-showcase
#運行workbench及KIE Server
docker run -p 8080:8080 -p 8001:8001 -d --name drools-workbench jboss/drools-workbench-showcase:latest
docker run -p 8180:8080 -d --name kie-server --link drools-workbench:kie_wb jboss/kie-server-showcase:latest
#預設帳號密碼
USER PASSWORD ROLE
*********************************************
admin admin admin,analyst,kiemgmt
krisv krisv admin,analyst
john john analyst,Accounting,PM
sales-rep sales-rep analyst,sales
katy katy analyst,HR
jack jack analyst,IT
Kubernetes是一個開源的容器管理平台,它被廣泛用於應用程式的部署、自動化運維和擴展。它由Google於2014年釋出,並且現在是由Cloud Native Computing Foundation(CNCF)支持和維護的一個項目。Kubernetes通常簡稱為K8s。
Kubernetes的重要性:
容器化應用程式: Kubernetes最初是為了解決容器化應用程式的部署和管理而設計的。它支持多種容器技術,最常見的是Docker。容器提供了獨立的運行環境,可以確保應用程式在不同環境中一致運行。
自動化和自我修復: Kubernetes提供了豐富的自動化功能,可以自動部署、擴展、升級和維護應用程式。它能夠檢測並恢復應用程式或節點的故障,從而實現高可用性。
擴展性: Kubernetes的架構非常靈活,可以在物理機器、虛擬機器和各種雲平台上運行。它可以輕鬆地擴展以應對不斷增長的工作負載。
服務發現和負載均衡: Kubernetes提供了服務發現和負載均衡的功能,使應用程式能夠輕鬆地找到和通信彼此。這對於微服務架構非常重要。
配置管理: Kubernetes可以幫助管理應用程式的配置,並支持不同環境之間的配置差異。這有助於確保應用程式在不同環境中的一致性。
Kubernetes的基本概念:
Pods(容器集): Pod是Kubernetes的最小部署單位,可以包含一個或多個容器。這些容器共享相同的網絡和存儲資源。
ReplicaSets和Deployments(複本集和部署): ReplicaSets和Deployments用於定義和管理應用程式的副本數量,以實現高可用性和擴展。
Services(服務): 服務定義了一個固定的入口點,使應用程式能夠通過名稱來訪問其他應用程式。
ConfigMaps和Secrets(配置映射和機密): ConfigMaps用於管理配置數據,而Secrets用於安全地管理敏感信息,如密碼和API金鑰。
Volumes(存儲卷): 存儲卷用於提供持久性存儲,以便容器之間共享數據。
Namespace(命名空間): 命名空間用於將集群劃分為多個虛擬區域,以隔離和組織不同應用程式或團隊的資源。
Configurations(配置): 配置文件用於定義和管理Kubernetes資源的配置,如Pods、Services和Ingress。
Ingress(入口): Ingress控制器用於管理集群外部流量的路由,允許多個應用程式共享同一個IP地址。
StatefulSets(有狀態集): 用於管理有狀態應用程式,如數據庫,以確保持久性和有序的操作。