V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
790002517zzy
V2EX  ›  程序员

请问有没有 Linux 软件环境下载部署脚本啊

  •  
  •   790002517zzy ·
    zzy-life · 2023-08-02 00:46:51 +08:00 via Android · 2554 次点击
    这是一个创建于 508 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如 nginx ,mysql 这些软件 可以远程下载部署或者内网选择包部署,还能自动设置开机自启 每次搭环境下软件烦死啦

    40 条回复    2023-08-03 11:46:55 +08:00
    8E9aYW8oj31rnbOK
        1
    8E9aYW8oj31rnbOK  
       2023-08-02 00:55:29 +08:00
    Docker / BT panel 7.7
    iridescent0rsy
        2
    iridescent0rsy  
       2023-08-02 01:20:40 +08:00 via Android
    ansible
    wangkun025
        3
    wangkun025  
       2023-08-02 01:34:04 +08:00 via Android
    熟悉 Python 就 ansible ,熟悉 Ruby 就 chef
    790002517zzy
        4
    790002517zzy  
    OP
       2023-08-02 01:50:58 +08:00 via Android
    @Leonkennedy2 宝塔不能内网使用吧
    790002517zzy
        5
    790002517zzy  
    OP
       2023-08-02 01:52:38 +08:00 via Android
    最好是脚本 因为有时候要内网使用的 可以把软件包下载进去然后脚本安装配置等等
    youyoumarco
        6
    youyoumarco  
       2023-08-02 08:04:15 +08:00
    docker k8s 那套搞起
    loading
        7
    loading  
       2023-08-02 08:38:42 +08:00   ❤️ 1
    sudo apt download xxx
    sudo dpkg -i *.deb

    因为你内网没有源,这是没办法的。
    把整个源拉到内网吧,也不算大,一百多个 T 。
    8E9aYW8oj31rnbOK
        8
    8E9aYW8oj31rnbOK  
       2023-08-02 08:49:27 +08:00
    @790002517zzy docker 打个镜像吧,然后导出,在 docker 的 doker 导入。
    790002517zzy
        9
    790002517zzy  
    OP
       2023-08-02 09:06:56 +08:00 via Android
    @Leonkennedy2 宝塔用 docker 的话 宝塔下载那些软件不需要联网吗
    cheng6563
        10
    cheng6563  
       2023-08-02 09:37:23 +08:00
    建议直接用容器。比如 nerdctl
    790002517zzy
        11
    790002517zzy  
    OP
       2023-08-02 09:49:10 +08:00 via Android
    @loading 内网我的意思是手动下载包丢进去,然后脚本去安装配置
    790002517zzy
        12
    790002517zzy  
    OP
       2023-08-02 09:50:43 +08:00 via Android
    下载安装都是些小事,主要在于配置(我是后端并非运维),比如 mysql 每次手动安装都要搞半天 开机自启也要设置半天
    wxyrrcj
        13
    wxyrrcj  
       2023-08-02 10:17:23 +08:00
    oneinstack
    vincent7245
        14
    vincent7245  
       2023-08-02 10:21:34 +08:00
    作为后端,运维还是要懂一些的,趁着个机会学习一下简单的运维操作也好
    skiy
        15
    skiy  
       2023-08-02 10:30:20 +08:00
    oneinstack
    790002517zzy
        16
    790002517zzy  
    OP
       2023-08-02 10:35:18 +08:00 via Android
    @vincent7245 我会装 但脚本可以提升效率
    loading
        17
    loading  
       2023-08-02 10:42:41 +08:00
    @790002517zzy #11 linux 的配置文件基本都是文本操作啊,学一下写 sh 脚本就行。
    基本套路就是 脚本装软件,然后 cp 或者 wget .conf 文件,最后再运行一下系统的服务命令就完事了。
    你可能需要用到 grep sed awk 等大杀器小命令
    loading
        18
    loading  
       2023-08-02 10:45:14 +08:00
    既然你是后端,你应该会一门后端语言,你用这个语言写成工具就好了。

    然后你就是一名 DevOps 了。
    zedpass
        19
    zedpass  
       2023-08-02 11:02:36 +08:00
    使用 docker compose 可以满足你的需求
    brader
        20
    brader  
       2023-08-02 11:07:52 +08:00
    你连网都不想连,怎么搞,你以为仅仅是安装你需要的那几个包,但其实会依赖到很多其他环境,其他包,你一个一个装,不要命啦
    squarefong17
        21
    squarefong17  
       2023-08-02 11:17:15 +08:00
    1. 安装 docker 。debian 系就 apt 装,加-y 参数后就不需要手动确认了,红帽系就 yum 装。ubuntu 应该会帮你启动的,pacman 需要手动 systemctl enable 一下。别的我不熟,你自己查一下,加自动启动很方便的。
    2. 从硬盘导入你需要的 docker 镜像。docker 对于 image 可以导出到本地文件,也可以从本地文件导入镜像。你在有网的地方自己导出好,到内网再导入。
    3. docker run 的时候加 --network=host 可以让容器里面的端口全部透出来, 加 --restart=always 即可实现 docker 启动就自动启动该容器。第一步开启了 docker 开机自启,这里 restart=always ,相当于就可以让你的 mysql 也开机自启了。如果你要统一配置文件,无非就是把某个文件启动的时候 mount 进去。

    把上面几步命令写到脚本里面,这不就是一键部署脚本吗。
    790002517zzy
        22
    790002517zzy  
    OP
       2023-08-02 13:03:55 +08:00 via Android
    @brader 不是我不想连 你做过政府保密项目就知道了
    790002517zzy
        23
    790002517zzy  
    OP
       2023-08-02 13:05:43 +08:00 via Android
    @squarefong17 嗯 目前只有 docker 方便一点
    julyclyde
        24
    julyclyde  
       2023-08-02 13:07:50 +08:00
    1 如果你需要经常搭环境,那可能是你的需求有问题
    790002517zzy
        25
    790002517zzy  
    OP
       2023-08-02 13:30:19 +08:00 via Android
    @julyclyde 新机器不用搭环境吗
    julyclyde
        26
    julyclyde  
       2023-08-02 13:33:28 +08:00
    @790002517zzy 经常有需要搭环境的新机器就是个问题
    mdn
        27
    mdn  
       2023-08-02 13:37:58 +08:00
    买个 ITX 小机器,装 ubuntu 、docker 镜像源 ,带到内网
    harrozze
        28
    harrozze  
       2023-08-02 13:39:21 +08:00
    把 deb 包下载回来(有选项可以把依赖包也都下回来),然后写个 ansible 脚本,可以远程安装和配置。ansible 需要在目标机器上安装 python3 ,执行一些相对复杂的命令,记得一并下回来。装到 U 盘里,用一台能连内网的 linux 机器跑 ansible 。
    hlbcpt
        29
    hlbcpt  
       2023-08-02 13:43:24 +08:00 via iPhone
    lnmp 离线安装,适合你
    brader
        30
    brader  
       2023-08-02 14:07:57 +08:00
    @790002517zzy 如果你每台服务器需要的基础环境都是一样的,那你可以考虑直接导出成基础系统镜像呗
    ZedRover
        31
    ZedRover  
       2023-08-02 15:59:18 +08:00
    nixos
    xuelu520
        32
    xuelu520  
       2023-08-02 16:00:07 +08:00
    自己写好 shell 就行了
    flexbug
        33
    flexbug  
       2023-08-02 16:03:07 +08:00
    我的 nginx 包是自己编译的,我写成脚本,然后放到 ansible 下面运行,然后接入了 jenkins ,在 jenkins 建了一些 job ,选预填充那种,每行一个 ip ,执行就可以了,很多我都这样搞,比如安装各种 exporter
    zeusho871
        34
    zeusho871  
       2023-08-02 16:06:32 +08:00 via Android
    那就打包源码,自己编译,具体问 gpt
    GTim
        35
    GTim  
       2023-08-02 16:08:13 +08:00
    lnmp
    asdjgfr
        36
    asdjgfr  
       2023-08-02 16:51:05 +08:00
    1. shell - 无依赖
    2. Ansible - 专业
    3. 任意一门脚本语言 Python/Node.js 编译成可执行文件 - 随心所欲
    twofox
        37
    twofox  
       2023-08-02 17:09:52 +08:00
    自己问 GPT 写一个快速安装 docker+portainer 的 shell 脚本,然后安装好之后就用 portainer 安装各种软件,还可以控制版本、启动、数量、端口
    lwep
        38
    lwep  
       2023-08-02 17:33:40 +08:00
    要是个人电脑能接到内网,那就个人电脑再连个热点,开 http 代理给其它内网机器用吧
    jinqzzz
        39
    jinqzzz  
       2023-08-03 00:10:29 +08:00 via iPhone
    几行 shell 的事,不知道有什么好纠结的
    shirenran1
        40
    shirenran1  
       2023-08-03 11:46:55 +08:00
    1panel docker 版的宝塔
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2195 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:37 · PVG 09:37 · LAX 17:37 · JFK 20:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.