首页
学习
活动
专区
圈层
工具
发布

GitLab 自动部署代码到服务器:完整实践指南

准备工作 1.1 环境要求 GitLab 项目(自托管或 GitLab.com) 目标服务器(支持 SSH 访问) 基本的 CI/CD 概念理解 1.2 服务器配置 确保目标服务器已安装: Git 运行环境...配置 GitLab 变量 在 GitLab 项目设置中配置 CI/CD 变量,避免将敏感信息硬编码在配置文件中: 必需变量: SSH_PRIVATE_KEY:服务器 SSH 私钥 SERVER_IP:服务器...IP 地址 SERVER_USER:服务器用户名 PROJECT_PATH:项目在服务器上的路径 DEPLOY_COMMANDS:部署命令(如:npm install && npm run build...服务器端配置 4.1 设置部署用户 # 在服务器上创建部署专用用户 sudo adduser deployer sudo usermod -aG sudo deployer # 如果需要 sudo 权限...# 切换到部署用户 su - deployer 4.2 配置 SSH 密钥认证 # 在服务器上生成 SSH 密钥对 ssh-keygen -t rsa -b 4096 -C "gitlab-deployer

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    十大 Docker 反模式

    但是,使用容器的主要问题是企业无法在更大的图景上审视它,特别是容器/镜像不可改变的角色问题。尤其是很多企业试图将其既有的基于虚拟机的生产过程转化为容器,从而造成了有问题的结果。...在虚拟机中滥用它部署应用可能还凑合,但对于容器就是灾难性的了。 首先,这使得该 Dockerfile 依赖于所处的位置。你不得不将其构建在一台能访问到生产环境 puppet 服务器的的机器上。...还有如果你无法访问 puppet 服务器或 puppet 服务器宕机了,你甚至根本都没法构建出镜像。如果无法访问到 puppet 脚本,甚至也不知道应用的版本。...请不要以这种给开发者(以及其它无法访问整个系统的人)在本地创建 Docker 镜像制造巨大困难的方式编写你的 Dockerfile。...在大多数情况下,当我问起一些企业为何他们的 QA/预发/生产 环境需要不同的镜像时,答案通常是它们包含了不同的配置和密钥。

    98650

    Gitlab-ci:从零开始的前端自动化部署

    「deploy阶段」 deploy也就是部署阶段,也就是把刚才bulid阶段生成的生产代码,部署到生产访问的服务器上。...这里又具体有以下两部分工作要做 「A.申请服务器 & 安装web服务 (准备工作)」 (1)我本次使用的是百度云的「云服务器」(每天9点的时候可以抢有一定免费使用期限的服务器) (2)然后在本地终端通过...(4)最后我们只需要在每次部署的时候把生产的单页面拷贝到这个页面下,就能在浏览器上通过对应的 「IP+路径」 来访问Web页面了。 「B....部署资源(每次pipeline都进行)」 我下面的示例中,是通过 「scp」 这一命令,将本地机器代码远程拷贝到云服务器上。...,那么「可以通过美元符号$写入一个预定义的变量,然后在Gitlab面板上输入它」 ?

    2.4K50

    vue菜鸟从业记:完成项目最后一公里之真机测试和打包上线

    王小闰准备在leader面前大展身手,展示下自己最近的学习成果,让我们跟着王小闰的节奏操练起来~ 首先需要在命令行中输入 npm run dev ,启动自己的vue项目,例:http://localhost...测试之后,发现IP是没有问题的,问题出在8080端口无法被外部访问。...跟着王小闰的节奏,快速打开项目根目录下的package.json文件,每次运行npm run dev的时候,本质上都在运行它后面定义的 webpack-dev-server --inline --progress...当我们做vue项目上线的时候,首先第一步需要在终端运行一个命令 npm run build 此时,vue的脚手架工具会帮我们自动的对src目录下的源代码进行打包编译,生成一个能被浏览器运行的代码,同时这个代码是被压缩过的...此时,后端的服务器已经有了前端的代码,默认会显示index.html,同时index.html上面又引入了打包生成的css和js文件,那么整个前端的代码就可以在后端的服务器上完美的运行起来了。

    82610

    5 分钟搭建一个简洁优雅的静态博客

    为什么需要博客 CSDN 上的广告太多,简书虽然广告比较少,但是一旦出现公众号或一些涉及到 ID 推广的,直接就限制只有自己可见了,知乎更严格,最开始有几篇文章放了公众号的二维码,未及时修改,直接永久禁言了...cd blog-template npm install && npm run dev 配置文件位于为 docs/.vuepress,请逐行检查,把博客名称,描述,图片位置,颜色配置等,改成自己满意的的即可...cd blog-template vi docs/blog/2021/blog.md npm run build #生成静态文件,一般在 public 目录下,该目录可以部署到服务器,使用 nginx...我反对这种做法,因为这违背了 github 分支的用途,一般 master 分支不够用的时候,我们创建 develop 分支,用于开发时,修改任何代码不会影响 master 分支,开发、测试完成,形成稳定版本...如果觉得本文不错,欢迎关注我的公众号「Python七号」,有任何问题,都可以公众号聊天界面直接咨询哦,我会第一时间回复。

    1.5K10

    Next.js +Egg.js+React项目服务器部署超详解

    购买成功后你会获得一个服务器实例和对应的公网ip(你的服务器ip地址)。现在的网站其实都是在我们输入网址后进行了DNS域名解析后,也就是转到对应的公网ip后才访问到的。 ?...服务器环境搭建 3.1 连接服务器 在windows系统上我们使用Xshell(linux系统命令行操作工具)来连接服务器,通过输入自己的公网ip和服务器实例密码新建连接会话。如下图所示: ?...可后台运行,它主要被用来守护node进程。我们将在后面运行项目时用到它,到时候再详细说明。...为什么要使用PM2来而不是项目中原有配置的script命令来控制项目运行? 因为使用原有script命令启动后,当我们断掉与服务器的连接后,进程都会被销毁。...在此之前,我们可以先执行 npm run build来打包生成生产环境所用的静态资源文件,默认生成在admin的bulid文件夹下。

    3.8K10

    写给前端同学的终端修炼手册

    配置Bash或者Zsh 当我们在终端中输入命令并按下Enter时,那个命令会由Shell语言解释。它本质上是运行在终端应用程序中的解释器。 最流行的Shell语言是Bash[2]。...为什么安装说明会包括一个实际上不是命令一部分的符号呢!?这是因为在Bash shell语言中,$ 是提示符字符,显示在提示符的末尾。 ❝它本质上是一个符号,表示“这里的内容是要在终端中运行的!”...例如,要启动本地开发服务器,我们可以运行: cd path/to/project npm run start 运行此命令会启动一个长时间运行的进程。...它启动一个 Node服务器,让我们可以在我们的应用程序上工作,监视文件的变化并在编辑时重新打包它们。 当我们完成时,可以通过 ctrl + c 杀死服务器。...链接命令 每当我们从 Github 克隆一个新项目时,我通常会连续做两件事: npm install,获取第三方依赖 npm run start,启动本地开发服务器 此时,就会有一个问题,当install

    1.2K10

    「前端必看」这篇Nginx反向代理技巧,助你准时下班陪女神

    原创@大前端技术沙龙 问题引入 相信很多前端朋友在线上debug时都吐槽过npm run dev或npm start太费时的问题吧(这里提到的两条npm脚本代指启动前端dev server)。...固定前端代理 为了避免在debug线上问题时需要切换proxy target而重新运行npm start,我们在前端层把proxy target固定下来。...X-Real-IP,而我们在生产环境下配置Nginx时,一般会保留这几项Host,X-Real-IP,X-Forwarded-For,用以保留请求的服务器域名,原始客户端和代理服务器的IP等信息。...如果不注释X-Real-IP,前端访问入口的真实IP是127.0.0.1或localhost,Nginx不认可这样的本地ip,直接返回404,客户端请求不予代理到其他远程服务器。...这就相当于告诉本地操作系统,如果用户访问www.devtest.com,我就给他解析到127.0.0.1这个ip 所以,我们在Nginx只要监听127.0.0.1的80端口即可,配置如下。

    2.4K20

    赋能 Gulp 构建流:使用腾讯云 EdgeOne 为 Pug 博客注入全球 CDN 与安全防护能力

    接下来我们还需要输入命令进行项目的编译 npm run dev 与 npm run build 相对的,是我们更常在本地开发时使用的 npm run dev 命令。...从上图的终端输出中,我们可以清晰地看到它的工作流程与前者的巨大差异。 当我们执行 npm run dev 时,它首先也会完整地执行一次 gulp build 任务,将项目编译好。.../,输出目录为dist,因为我们的主要文件都是在dist路径下的 重点来了:构建命令是npm run build,如果你填写的是npm run dev的话就会出现报错了 ,因为我在 EdgeOne 的 ...没有服务器端逻辑:当用户访问你的网站时,服务器(或像 EdgeOne 这样的 CDN 节点)只是简单地把这些已经存在的文件发送给用户的浏览器。它不会在服务器上运行代码、连接数据库或实时处理数据。...所有内容在构建时已确定:在你执行 npm run build 的时候,你所有的源代码(比如 Pug、Sass、ES6 JavaScript)都被编译成了浏览器可以直接读取的最终静态文件。

    46520

    写给前端程序员的命令行入门

    我们还需要确保运行正确的shell语言。 当我们在终端输入命令并回车时,命令会通过shell语言进行解释执行。它本质上是在终端应用程序中运行的环境。 最流行的shell语言是Bash。...为什么安装说明会包含一个随机的符号,而这个符号实际上并不是命令的一部分?好吧,在Bash shell语言中,$ 是提示符,显示在提示的末尾。 它本质上是一个符号,并说道:嘿,这里的东西要在终端运行!...它对于检查一个给定的服务器是否在线很有用。8.8.8.8是谷歌DNS服务器的IP地址。 image.png 与我们到目前为止看到过的命令不同,ping是一个长期运行的进程,它永不停歇。...它启动了一个Node服务器,允许我们在应用程序上进行开发,监听文件的变动,当我们编辑文件时,重新进行打包。 当我们结束开发时,我们可以使用ctrl + c来关闭该服务。...链式命令 每当我从Github上克隆一个新项目时,我一般要做两件事: npm install ,来拉取第三方依赖。 npm run start ,来启动本地开发服务器。

    1.8K30

    当我有一台服务器时我做了什么

    当一八年末的时候,我写了一篇文章 当我有一台服务器时我做了什么 又是一九年末,我服务器的架构也发生了一些变化,因此总结一番 本文收自于系列文章: 当我有一台服务器时我做了什么[1] 本文所涉及所有依赖的部署及使用都记录在...博客与编码 基本上自己的博客以及个人编码都在这台测试服务器上完成,至于为什么要在服务器下开发: 在公司 Mac 及我自己的笔记本间同步博客实在太痛苦了,而使用服务器作为中介则方便很多 由于在服务器下写博客以及一些个人的代码...略微麻烦 npm run dev + openvpn。...,用 docker 建了 vpn 在本地开发访问。...但是如果你对 k8s 没有什么兴趣的话,这一台 1C2G 的服务器完全满足你的要求 参考资料 [1] 当我有一台服务器时我做了什么: https://github.com/shfshanyue/op-note

    2.4K30

    teprunner测试平台部署到Linux系统Docker

    本地运行 通过在Vue项目执行npm run serve和在Django项目执行python manage.py runserver,我们把项目在本地跑起来了,示意图如下: ?...前端在本地启了个Node服务器,后端在本地启了个Django服务器,分别使用8080和8000端口。浏览器有个同源策略:域名、端口、协议三者一致才能进行访问,否则会由于跨域访问而被浏览器拦截。...在Linux上访问http://127.0.0.1,能打开登录页面,但是无法向后端发起请求,因为从80端口直接请求8099端口,跨域了。...有点区别,RUN指令在docker build时就执行,CMD指令在docker run时才执行,预定义启动命令。...最后可以在虚拟机中访问http:127.0.0.1进行登录了,本地机器想要访问的话,需要把127.0.0.1改为你的虚拟机实际IP,比如http://172.16.25.131。

    1.8K10

    使用 GitLab CI 和 Docker 自动部署 Spring Boot 应用

    你已经在GitLab上推送了Spring Boot项目 2. 你已在应用程序服务器上安装了Docker(指南) 3. 你具有Docker镜像的镜像托管(在本指南中将使用Docker Hub) 4....在应用程序服务器上运行镜像 基本项目信息 本文的Spring Boot应用程序是通过Spring Initializr生成的。这是一个基于Java 8或Java11构建的Maven项目。...我们的dev,QA和prod应用程序将在不同的服务器上运行,并且将具有不同的Docker容器标签,端口和SSH密钥。...这可能是一个问题,因为你将无法以干净的方式停止运行容器。 端口:这是我们希望运行Docker容器的端口。 SERVER_IP:应用程序使用的服务器IP。通常,每个环境都将位于不同的服务器上。...: 先前在服务器上生成的SSH私钥。

    3.6K30

    Dockerize Your Hexo

    如果我只在我的机器上安装 Hexo 2.8.3 ,那我接下来维护这几个项目就变得非常不方便。 出于以上的原因,我决定使用 Docker 将 Hexo 2 和 Hexo 3 两套写作环境各自打包成镜像。...这样,当我需要编写自己的博客时,就使用 Hexo 2 的镜像;当我需要维护几个 Hexo 主题和插件时,就使用 Hexo 3 的镜像。我也顺便将整个过程记录下来,形成此文,以供其他朋友参考借鉴。...当我运行该镜像时,可以通过 -v 参数将本地的博客目录挂载到虚拟机里,从而实现在本地编辑而在虚拟机上渲染。...也就是说,通过映射到本地上的不同端口,我可以同时在虚拟机中的不同 container 里运行两个虚拟机端口号均为 4000 的服务! Hexo 的服务器启动后,我们就可以在本地的浏览器预览页面了。...因此我们还需要获取一下虚拟机的地址: $ boot2docker ip 将得到一个 ip 地址,那么就可以通过访问 http://虚拟机地址:映射端口号 来预览站点了。

    90040

    【nodejs原理&源码赏析(9)】用node-ssh实现轻量级自动化部署

    +PHP】 nodejs或相关框架+守护进程 Express Koa2 以上任何一种在服务器上运行起来后都可以担任Web服务器的角色,只是具备的扩展功能和应用场景有区别,Nginx基本上是正式环境部署的首选方案...常见的基本部署方案如下: IP+端口访问 使用访问,可直接访问对应端口的服务,部署方式相对简单: ?...域名访问 使用域名访问时,通常会使用A记录进行解析,它只能映射到80端口(https时映射到443),这时就需要使用反向代理将80端口的请求分发到本地不同的内部端口来访问对应服务: ?...但是如果此时SSH工具断开连接,就会发现express应用无法继续访问了,所以还需要一个守护进程来维持应用的启动状态,在服务端通过npm install pm2 -g来安装nodejs应用的部署管理模块.../scripts/deploy/deploy.js" }, ... } 当输入npm run deploy或yarn deploy时,实际上就相当于用node去执行.

    2.2K20
    领券