DevOps簡單教程應用

文章目錄

    • 概念
    • 一、環境準備
    • 二、gitlab配置
    • 三、.gitlab-ci.yml文件配置

概念

Devops是一個概念,就是邊開發邊測試,能夠大大提升開發效率,本文使用pycharm+gitlab實現一個簡單的DevOps流程

一、環境準備

需要一個測試環境,模擬部署,測試環境需要安裝相關依賴包
測試環境是centos7
本項目是后端fastapi+前端vue2
1、項目采用supervisor進行管理,安裝supervisor

yum install supervisor
# 使用supervisorctl進行進程管理
# 1、修改默認配置
vim /etc/supervisord.conf
# 在最后一行加上,表示此目錄下進行配置相關進程的conf文件
[include]
files = /etc/supervisor/conf.d/*.conf
# 2、增加配置文件,管理相關進程
vim /etc/supervisor/conf.d/
[program:openAdmin]
command=/usr/bin/python3 /var/www/open_admin/backend/main.py run
priority=4
directory=/var/www/open_admin/backend
autostart=true
autorestart=true
stdout_logfile=/var/log/open_admin/app.log
stderr_logfile=/var/log/open_admin/error.log

supervisorctl啟動管理進程相關命令

# 啟動進程openAdmin,也就是配置文件里面寫的[program:openAdmin]
supervisorctl start openAdmin
# 重啟進程
supervisorctl restart openAdmin
# 停止進程
supervisorctl stop openAdmin
# 更新配置文件
supervisorctl update

2、安裝py虛擬環境

cd /var/www/ && pip3.10 install virtualenv
# 創建虛擬環境
virtualenv venv
# 激活虛擬環境
source venv/bin/activate
# 安裝包
pip3 install -r requirements.txt

3、安裝前端npm環境

# 安裝npm
yum install nodejs-16.20.2

二、gitlab配置

需要配置gitlab,將服務器上的ssh密鑰拷貝到gitlab項目配置中
1、服務器生成密鑰

ssh-keygen -t rsa -b 4096 -C "gitlab-deploy"
# 切換到/root/.ssh/
cd /root/.ssh/
# 拷貝id_rsa文件內容
cat id_rsa

2、gitlab配置
在settings>CI/DI>Variables下
在這里插入圖片描述
將拷貝的id_rsa內容復制到這里
在這里插入圖片描述
復制id_rsa.pub內容,粘貼到user settings下的ssh keys中,設置項目允許ssh拉取
在這里插入圖片描述

3、安裝gitlab-runner
安裝gitlab-runner,讓其運行.gitlab-ci.yml,gitlab-runner可以安裝到服務器(測試機上),也可以安裝到gitlab服務器上,這里建議安裝到服務器(測試機),這樣方便,直接選擇本地shell運行即可

# 開始安裝
curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
# 修改執行權限
chmod +x /usr/local/bin/gitlab-runner
# 添加用戶,shell腳本是用gitlab-runner執行的
useradd --comment 'Gitlab Runner' --create-home gitlab-runner --shell /bin/bash
# 啟動安裝
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
# 啟動runner服務
gitlab-runner start

4、注冊gitlab-runner
先進行注冊

# 注冊服務
gitlab-runner register

出現如下內容
在這里插入圖片描述
需要填url和token,去gitlab項目下,找到CI/DI>Runners
在這里插入圖片描述
找到Specific Runners在這里插入圖片描述
2對應的就是url,粘貼到剛才彈出的地方,回車,會繼續讓你輸入token,復制3,繼續回車,繼續填description、tags、optional,當出現Enter an executor的時候,選擇shell,因為這樣直接在本機運行,gitlab-runner是在服務器本機上注冊的,所以可以選擇shell本機運行
在這里插入圖片描述
出現以上內容代表注冊成功,gitlab界面也會有如下顯示
在這里插入圖片描述

三、.gitlab-ci.yml文件配置

配置文件如下

stages:- build- deploy
# 防止淺克隆導致問題
variables:GIT_DEPTH: 0# 打包前端
build_vue:stage: buildtags:- shell  # 指定使用 shell runnerbefore_script:# 確保 Node.js 已安裝在 runner 機器上# 因為是centos7,安裝某些包的時候缺少依賴環境,這里單獨導出設置下,以便于打包- export LD_LIBRARY_PATH=/usr/local/gcc-10.1.0/lib64:$LD_LIBRARY_PATH- node --version- npm --versionscript:- cd frontend- npm install- npm run buildartifacts:paths:- frontend/distexpire_in: 1 hour# 部署到服務器
deploy_server:stage: deployonly:- maindependencies:- build_vuetags:- shell  # 指定使用 shell runnerscript:- echo "Deploying to production server..."# 直接使用本地文件復制,因為 runner 就在目標服務器上,切換sudo運行- sudo cp -r frontend/dist/* /var/www/project/frontend/- sudo cp -r backend/* /var/www/project/backend/# 直接執行 supervisorctl 命令- sudo supervisorctl restart openAdmin

以上文件需要放到項目根目錄下,這個時候隨便修改文件,進行提交,就會在gitlab界面上看到正在執行的任務,如下所示,能夠看到已經執行成功了
在這里插入圖片描述
注意:如果yml文件里有拷貝等操作,需要把gitlab-runner添加到和root一樣的權限,在服務器(測試機器)上

sudo visudo
# 添加如下內容
gitlab-runner ALL=(ALL) NOPASSWD: ALL

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92440.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92440.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92440.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

華為流程管理體系構建與落地 之—— 業務流程規劃【附全文閱讀】

這部分內容聚焦華為業務流程管理,詳細闡述了流程規劃、設計、運營、評估與優化的具體方法和內容,為企業構建和完善流程管理體系提供了全面的指導。流程規劃分類方法:介紹 POS、OES、OMS 等分類法,如 POS 法按規劃、運營、支持劃分…

Android 項目:畫圖白板APP開發(零)——功能介紹(筆鋒,分頁,縮放,多指,硬件加速等)

一、前言 本系列將全面的介紹一些有關Android 畫圖方面的知識。筆觸功能包括:顏色、粗細、透明度、筆鋒、橡皮;繪圖功能包括:分頁、縮放、多指、撤銷恢復、筆畫加速。別看功能這么多,簡單的部分會花較少篇幅介紹,著重會…

香橙派 RK3588 部署千問大模型 Qwen2-VL-2B 推理視頻

演示視頻 香橙派RK3588部署千問大模型Qwen2-VL-2B推理視頻一、場景假設 視頻輸入為一條網絡流,利用大模型對視頻中的圖像幀進行推理。由于大模型推理耗時長,無法對每幀都進行推理,因此采用跳幀推理的方式:當推理完一幀后&#xf…

排序概念以及插入排序

一、排序基本概念1.就地排序:使用恒定的額外空間來產生輸出就地排序只是在原數組空間進行排序處理,也就是輸入的數組和得到的數組是同一個2.內部排序和外部排序:待排序數據可以一次性載入到內存中為內部排序,反之數據量過大就是外…

Webpack 核心配置與最佳實踐指南

Webpack 是現代前端工程化的核心工具,理解其配置原理和優化技巧對開發效率至關重要。 一、Webpack 基礎架構 1、核心概念關系圖 2、核心概念詳解 概念 作用 示例配置 Entry 應用入口起點 entry: ‘./src/index.js’ Output 編譯結果輸出位置 output.path: path.resolve(__d…

GISBox私有云+SaaS:安全協同的地理智能平臺

一、概述 GISBox(GIS 工具箱)是一套能夠對GIS 影像、地形、傾斜攝影進行場景編輯、切片轉化、分發服務的 GIS 工具箱。同時,GISBox還支持私有云并一鍵開啟SaaS服務。 二、什么是私有云? 私有云服務是一種為企業或組織量身定制的…

代理人工智能的隱藏威脅

代理型人工智能的自主性令人興奮,但事實并非如此。主動性越高,不可預測性就越強,這為嚴重的、往往被忽視的安全風險打開了大門。從指令劫持到數字供應鏈的連鎖故障,代理型人工智能不僅智能,而且在不受控制的情況下非常…

SonarQube 掃描多個微服務模塊

SonarQube 掃描多個微服務模塊 在使用 SonarQube/SonarCloud 掃描多個微服務模塊時,核心目標是??確保每個微服務模塊被獨立分析??,并在 SonarQube 界面中以獨立項目展示結果。以下是具體實現方案,分場景說明: ??一、前提條…

當前主流且經過市場驗證的開源 BI 系統推薦

以下是當前主流且經過市場驗證的開源 BI 系統推薦,結合技術特性、適用場景和行業實踐,為不同需求提供針對性解決方案:一、綜合型開源 BI 平臺1. Apache Superset(Apache 2.0 協議)核心優勢:全場景覆蓋&…

第05章 排序與分頁

1.排序數據 1.1 排序規則 1.2 單列排序 1.3 多列排序 2.分頁 2.1 背景 背景1:查詢返回的記錄太多了,查看起來很不方便,怎么樣能夠實現分頁查詢呢? 背景2:表里有 4 條數據,我們只想要顯示第 2、3 條數據怎么辦呢? 2.2 實現規則 分頁原理:所謂分頁顯示,就是將數據…

第4章 程序段的反復執行4.2while語句P128練習題(題及答案)

&#xff08;&#xff08;1&#xff09;閱讀程序#include <bits/stdc.h> using namespace std; //湯永紅 int main(){int n,s0;cin >> n;while(n){s s * 10 n % 10;n / 10;}cout << s << endl;return 0; }分別輸入&#xff1a;0 1024 1234567890輸出…

Linux下管道的實現

1.溫故知新在上一篇博客我們知道了動態庫是怎么樣進行鏈接的&#xff0c;我們知道我們的.o文件&#xff0c;可執行文件都是我們的ELF格式的文件&#xff0c;是ELF文件&#xff0c;里面就有ELF header&#xff0c;程序頭表&#xff0c;節&#xff0c;還有節頭表&#xff0c;我們…

光貓、路由器和交換機

光貓&#xff1a;全稱為光調制解調器&#xff0c;負責光信號與電信號的轉換。在光纖入戶的網絡環境中&#xff0c;運營商通過光纖傳輸光信號&#xff0c;光貓將其轉換為電腦、路由器等設備能識別的電信號&#xff0c;反之亦然。它是用戶端與運營商網絡之間的橋梁&#xff0c;保…

從零開始理解編譯原理:設計一個簡單的編程語言

編譯原理是計算機科學的核心領域之一&#xff0c;它研究如何將高級編程語言轉換為目標機器能夠執行的代碼。對于許多開發者來說&#xff0c;編譯原理可能是一個神秘而復雜的領域&#xff0c;但實際上&#xff0c;通過系統的學習和實踐&#xff0c;我們可以逐步掌握其核心概念和…

年輕新標桿!東方心繡臉韌帶年輕技術升級發布

年輕新標桿&#xff01;東方心繡臉韌帶年輕技術升級發布近日&#xff0c;“東方心繡臉韌帶年輕品項升級發布會”圓滿落幕。本次發布會聚焦現代女性面臨的衰老困擾&#xff0c;正式推出技術升級成果——“韌帶年輕”品項&#xff0c;旨在通過更科學的方案&#xff0c;助力求美者…

qt文件操作與qss基礎

文章目錄qt文件操作文件概述文件讀寫文件屬性界面優化qss基礎選擇器的用法結語很高興和大家見面&#xff0c;給生活加點impetus&#xff01;&#xff01;開啟今天的編程之路&#xff01;&#xff01; 作者&#xff1a;?( ‘ω’ )?260 我的專欄&#xff1a;qt&#xff0c;Li…

spring.config.import 不存在

確認spring.config.import的語法是否正確根據Spring Cloud的官方文檔&#xff0c;該屬性的值應該指向配置信息&#xff0c;例如對于Nacos配置中心&#xff0c;其格式通常為&#xff1a;spring:config:import: nacos://<nacos-server-addr>/<data-id>?group<gro…

kettle插件-kettle MinIO插件,輕松解決文件上傳到MinIO服務器

場景&#xff1a;周二下班剛下地鐵的時候有一位大佬&#xff0c;咨詢kettle是否可以適配MinIO&#xff0c;功能要實現將圖片或者base64通過kettle直接上傳到MinIO服務器。接到需求&#xff0c;溝通需求&#xff0c;開干。經過3天左右研發和調試MinIO插件已經成功交付&#xff0…

套接字編程UDP

1.創建套接字int socket(int domain, int type, int protocol);第一個參數&#xff0c;底層用的ip報文統一使用的網絡協議都是AFIN第二個參數&#xff0c;面向流的傳輸協議SOCK_DGRAM&#xff08;數據報套接字類型&#xff09;&#xff1a;支持數據報&#xff08;無連接、不可靠…

計算機網絡:如何判斷B或者C類IP地址是否劃分了子網

要判斷B類或C類IP地址是否劃分了子網,核心在于通過子網掩碼分析其網絡位長度是否超過該類地址的默認網絡位長度。以下是具體的判斷方法和細節說明: 一、基礎概念:IP地址類別與默認網絡位 IP地址分為A、B、C三類(常用),每類地址的默認網絡位長度(即未劃分子網時,用于標…