V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ywgx
V2EX  ›  分享创造

给大家几个日常工具,一行命令搞定基础环境建设

  •  
  •   ywgx · 2018-12-05 09:23:57 +08:00 · 6821 次点击
    这是一个创建于 2171 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.安装 MySQL

    # curl -s xabc.io/mysql | bash

    2.安装 Redis

    # curl -s xabc.io/r | bash

    3.安装 OpenResty 也就是 Nginx

    # curl -s xabc.io/o | bash

    4.安装 Java 环境,即 JDK8 和 Tomcat8

    # curl -s xabc.io/j | bash

    5.安装 PHP7 环境

    # curl -s xabc.io/php | bash

    6.安装 Influxdb 时序数据库

    # curl -s xabc.io/influxdb | bash

    7.安装编译环境

    # curl -s xabc.io/base | bash

    8.生成 Nginx server {} 段配置

    # curl -s xabc.io/w-bbs.xabcloud.com-127.0.0.1:7001

    自己搭建适合自己的

    第 1 条附言  ·  2018-12-06 13:26:06 +08:00
    只是分享一种简化问题的方法,没想到还有人抬杠这个 😄
    56 条回复    2019-03-31 03:38:39 +08:00
    pyufftj
        1
    pyufftj  
       2018-12-05 09:26:27 +08:00
    使用 docker 也可以
    mineqiqi
        2
    mineqiqi  
       2018-12-05 09:55:32 +08:00
    看着不错 收藏了
    est
        3
    est  
       2018-12-05 10:22:38 +08:00   ❤️ 9
    # curl -s xabc.io/挖矿脚本.sh | bash
    ywgx
        4
    ywgx  
    OP
       2018-12-05 10:33:24 +08:00
    @est 😄 没那么大胆子
    可以 curl xabc.io/mysql 看看后再执行嘛 哈哈
    vipdog73
        5
    vipdog73  
       2018-12-05 10:49:18 +08:00
    收藏了。
    vipdog73
        6
    vipdog73  
       2018-12-05 11:09:22 +08:00
    好像有问题
    ywgx
        7
    ywgx  
    OP
       2018-12-05 11:11:29 +08:00   ❤️ 1
    @vipdog73 什么问题?
    dengtongcai
        8
    dengtongcai  
       2018-12-05 11:14:45 +08:00 via iPhone
    @est v 站的老哥们都贼幽默哈哈哈哈
    tanranran
        9
    tanranran  
       2018-12-05 11:26:15 +08:00
    好东西。感谢楼主分享
    tiaod
        10
    tiaod  
       2018-12-05 11:46:45 +08:00   ❤️ 10
    我突然有了个灵感
    # curl -s xabc.io/俄罗斯轮盘赌.sh | bash

    有 1/6 几率返回 rm -rf /
    est
        11
    est  
       2018-12-05 12:16:46 +08:00
    @tiaod 可以哈哈。
    vipdog73
        12
    vipdog73  
       2018-12-05 13:14:33 +08:00
    @ywgx redis 的那个
    ywgx
        13
    ywgx  
    OP
       2018-12-05 13:36:10 +08:00
    @vipdog73 没啥问题呀,你贴问题
    loading
        14
    loading  
       2018-12-05 13:41:19 +08:00 via Android
    适合用于学习写这类脚本,但不适合直接使用。
    vipdog73
        15
    vipdog73  
       2018-12-05 14:08:48 +08:00
    @ywgx 不知道为啥,上午在云服务器敲了一遍,报没有那个目录,我想脚本会新建的啊,还把脚本看了一遍,下午在同一台机器敲,好了。。。。。神奇
    TheGooooooooooo
        16
    TheGooooooooooo  
       2018-12-05 17:49:16 +08:00
    mark
    x66
        17
    x66  
       2018-12-05 17:57:07 +08:00 via iPhone
    我选择用 Docker
    msg7086
        18
    msg7086  
       2018-12-06 00:28:10 +08:00   ❤️ 3
    看了一眼 redis 和 php 的安装代码……希望生产环境不会有人用这些脚本……
    ywgx
        19
    ywgx  
    OP
       2018-12-06 08:03:09 +08:00 via iPhone
    @msg7086 迫害妄想狂患者?
    ywgx
        20
    ywgx  
    OP
       2018-12-06 08:05:00 +08:00 via iPhone
    @msg7086 我把原理代码都告诉你了,你觉得不信任的话,可以自己建设自己的,没必要恶意揣测
    msg7086
        21
    msg7086  
       2018-12-06 09:32:14 +08:00
    @ywgx 请问这位兄弟,你从上到下哪里看到我不信任你了?请问我恶意揣测你什么了?请问你大脑中凭空想象出了哪些内容?
    ywgx
        22
    ywgx  
    OP
       2018-12-06 09:46:45 +08:00
    @msg7086 我们这边生产环境在使用,你说说看,生产环境使用了,咋啦?
    ywgx
        23
    ywgx  
    OP
       2018-12-06 11:35:13 +08:00
    很多人说担心不安全,可以建设自己的 https://bbs.xabcloud.com/topic/19/view

    xabc.io 里面的资源包,文件更新,我这边在维护

    比如 redis 目前就是最新的 5.0.2 ;我分别在 CentOS 和 Ubuntu 下编译,打包

    数据存储在腾讯云 CDN,所以下载还是比较快的
    msg7086
        24
    msg7086  
       2018-12-06 11:40:13 +08:00   ❤️ 2
    @ywgx 既然你诚心诚意地问了,那我就随便说两点。

    1. 你的 PHP 脚本
    Debian Buster 的软件源里同时内置了 PHP7.2 和 PHP7.3。
    请问用了你的 PHP 安装脚本以后,会安装几套 PHP ?

    2. 你的 Redis 脚本
    wget 直接下载了一个不知道什么版本的 Redis 直接解压到系统里运行。
    请问你的 Redis 是在 root 权限下运行的还是在无权限用户下运行的?
    你的 Redis 如果是在 root 权限下运行,被入侵了以后是不是能通过复写 /root/.ssh/authorized_keys 导致整台服务器被人黑掉?
    通过 wget 下载的 Redis 程序如果以后发现了 CVE 漏洞,你通过什么方式来追踪哪些 CVE 是不会影响到的,哪些 CVE 是会影响到而且需要立刻升级版本才能修复的? CVE 追踪和版本升级你负责吗?如果不是你负责,谁负责?

    你自己喜欢用这种非标准的手段来配服务器那是你的自由,我一句都不会多嘴。现在你放出来给大家用,不能有点责任心吗。要是有人用了你的 Redis 然后被人拿了 root 全公司数据丢光了你真的不会内疚吗?你怎么想的我是不知道,但是我自己是 Debian 上数个第三方软件包的维护者,我们公司自己的产品也好,公开给别人免费使用的开源软件源也好,负责任,保证自己做出来的软件包和磁盘镜像安全可靠,这是最基本的要求。别人的服务器,别人公司的命脉,就掌握在这些开发和运维的手里。我们的客户当中还有银行,服务器上所有的软件版本要审计,有哪些漏洞打了,哪些漏洞没打,全部要记录在案。要是我告诉他们我随便找了个 tgz 打包的软件往里解压一下就跑,你猜猜接下来我们会收到多少张法院的传票?
    ywgx
        25
    ywgx  
    OP
       2018-12-06 11:48:42 +08:00
    php 安装几套的问题,我不多说了,你有运行过没? 安装了几套?

    redis.conf 你看过没 bind 127.0.0.1

    我当然知道 安全的部署 尽量避免在 root 下运行; 我如果告诉你 我打的 salt 安装模版 s.xabcloud.com/src/redis.tgz ;我担心大家不会使用

    另外说到安全问题,chattr +ai /root/.ssh/authorized_keys 这是我们这边机器默认就执行的初始化操作

    再说,如果真心有人觉得不安全,我相信他自然会把文件放到普通用户下执行

    我只是提供一种分享,一种方案,多多益善
    ywgx
        26
    ywgx  
    OP
       2018-12-06 11:49:48 +08:00
    msg7086
        27
    msg7086  
       2018-12-06 12:17:35 +08:00   ❤️ 1
    一个一个来,先说 Redis 的问题。

    你的 bind 127.0.0.1 大作我当然是看过了。bind 127.0.0.1 不正是给人提权用的吗?
    任何一个无权的本地用户都可以连接到 127.0.0.1 然后给 redis 发指令复写任意文件。
    所以比如你给一个做外包的开发开了一个没有权限的 SSH 账号。然后人家直接连接你无保护的 Redis,然后注入,马上就能拿到 root。这简直就是教科书式的提权漏洞。

    安全措施做好的情况,应该是 bind 到 unix_socket,并且修改 sock 文件的 owner group 和 mode,保证只有对应用户组的进程才能够连接,然后程序不在 root 下运行才行。

    当然你也说了,chattr 或者放到普通用户下执行。

    那么问题来了,一个懂得 chattr 和懂得如何创建普通系统用户然后再手写 systemd 服务特别去指定运行用户就为了跑起你这个 Redis 程序的运维,他为什么要下载你这个一键包而不是直接 apt 无脑一分钟装完不仅有打包者帮你配置好权限和安全措施还能享受到以后官方运维负责的补丁更新服务?你的受众到底是谁?是管着几十台服务器的资深用户,还是刚开始玩 VPS 的新手?我反正是有点看不懂。
    msg7086
        28
    msg7086  
       2018-12-06 12:20:48 +08:00
    然后是 PHP 的问题。
    首先这玩意儿在 CentOS 6 上是跑不起来的,看我给你表演一个:

    root@verification ~ # yum -y localinstall https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
    Loaded plugins: fastestmirror
    Setting up Local Package Process
    Examining /var/tmp/yum-root-u6aqjZ/webtatic-release.rpm: webtatic-release-7-3.noarch
    Marking /var/tmp/yum-root-u6aqjZ/webtatic-release.rpm to be installed
    Loading mirror speeds from cached hostfile
    Resolving Dependencies
    --> Running transaction check
    ---> Package webtatic-release.noarch 0:7-3 will be installed
    --> Processing Dependency: epel-release >= 7 for package: webtatic-release-7-3.noarch
    --> Finished Dependency Resolution
    Error: Package: webtatic-release-7-3.noarch (/webtatic-release)
    Requires: epel-release >= 7
    Installed: epel-release-6-8.noarch (@extras)
    epel-release = 6-8
    You could try using --skip-broken to work around the problem
    You could try running: rpm -Va --nofiles --nodigest



    然后你问我装几套,跑过没跑过。



    那,你跑过吗?

    没跑过吧。来,给你看看什么效果。

    root@verification ~ # apt-get -y install php7.[0-9]
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    Note, selecting 'php7.0' for glob 'php7.[0-9]'
    Note, selecting 'php7.2' for glob 'php7.[0-9]'
    Note, selecting 'php7.3' for glob 'php7.[0-9]'
    The following packages were automatically installed and are no longer required:
    gnupg-agent libasprintf0c2 libbind9-90 libcurl3-gnutls libdns100 libisc95 libisccc90 libisccfg90 libjasper1 liblwres90 libpng12-0 libpth20
    Use 'apt autoremove' to remove them.
    The following additional packages will be installed:
    apache2 apache2-bin apache2-data apache2-utils curl libapache2-mod-php7.0 libapache2-mod-php7.2 libapache2-mod-php7.3 libapr1 libaprutil1 libaprutil1-dbd-sqlite3
    libaprutil1-ldap libbrotli1 libcurl4 libgdbm-compat4 liblua5.2-0 libmagic-mgc libmagic1 libpcre2-8-0 libperl5.28 libsodium23 perl perl-modules-5.28 php-common php7.0-cli
    php7.0-common php7.0-json php7.0-opcache php7.0-readline php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline php7.3-cli php7.3-common php7.3-json
    php7.3-opcache php7.3-readline ssl-cert
    Suggested packages:
    apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser php-pear file perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl make libb-debug-perl
    liblocale-codes-perl openssl-blacklist
    The following packages will be REMOVED:
    libcurl3
    The following NEW packages will be installed:
    apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php7.0 libapache2-mod-php7.2 libapache2-mod-php7.3 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
    libbrotli1 libcurl4 libgdbm-compat4 liblua5.2-0 libmagic-mgc libmagic1 libpcre2-8-0 libperl5.28 libsodium23 perl perl-modules-5.28 php-common php7.0 php7.0-cli php7.0-common
    php7.0-json php7.0-opcache php7.0-readline php7.2 php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline php7.3 php7.3-cli php7.3-common php7.3-json
    php7.3-opcache php7.3-readline ssl-cert
    The following packages will be upgraded:
    curl
    1 upgraded, 42 newly installed, 1 to remove and 0 not upgraded.
    Need to get 22.3 MB of archives.
    After this operation, 111 MB of additional disk space will be used.


    还行,也就装了 7.0 7.2 7.3 三套…… ermmm
    yuanfnadi
        29
    yuanfnadi  
       2018-12-06 12:50:15 +08:00
    docker run mysql
    docker run redis
    docker run nginx
    ywgx
        30
    ywgx  
    OP
       2018-12-06 12:52:14 +08:00
    @msg7086 你连自己的开发同事都不信任 ; 用淘汰了的 CentOS6 安装多套,你何必呢?

    你说对了部分事情,谁运行这些命令呢? 他可以是测试,可以是开发,可是是本地 linux 快速使用,线上的也行,问题不大,如果觉得需要就自己改改路径

    我再重申一遍,这里是一种分享

    请继续你的表演,你还知道什么,请继续说 😄

    如你所言,你要求自己就行了,不要圣母心
    ywgx
        31
    ywgx  
    OP
       2018-12-06 12:54:21 +08:00
    @msg7086 如果觉得 几十台几百台机器 管理不安全,没问题,老夫给你准备了 xabcstack.com 欢迎使用 😄
    msg7086
        32
    msg7086  
       2018-12-06 13:04:33 +08:00   ❤️ 1
    @ywgx
    CentOS 6 Maintenance Updates November 30th, 2020
    ermmm 行吧,你说淘汰就淘汰吧。

    信任同事?哦 500 强大公司域控 Admin 权限在企业内部随便发咯,反正「信任自己的同事」对吧。
    ermmm 行吧,你要信任就信任吧。

    我一开始就说了,这玩意儿不是给生产环境用的,你要和我杠,说了半天还是主要给测试和开发用的,那你叫唤啥呀。这帖子简直是教科书级的中国 GOV 传统文化。遇到问题,不解决问题,先解决提出问题的人。把我杠走了,脚本里的错误就都不是错误了。不支持的操作系统和瞎瘠薄装上 3 个版本的 PHP 也都不是事了。
    ermmm 行吧,要 Block 那就 Block 吧。

    对了,什么叫「迫害妄想狂患者」?

    19 楼那个回复「迫害妄想狂患者?」的人,别人回一句他就觉得别人要喷他祖宗十八代的人,他就是典型的「迫害妄想狂患者」。这种人真的可怕,我还是躲远点好。
    ywgx
        33
    ywgx  
    OP
       2018-12-06 13:15:22 +08:00
    @msg7086 我分享错了吗? 如果你切实按照你的要求做,github 上还能发布作品吗 ?

    仁者见仁,智者见智吧

    PS: 请不要诋毁国家,不要以偏概全
    edsheeran
        34
    edsheeran  
       2018-12-06 13:21:16 +08:00 via iPhone
    @ywgx 詆毀的是 gov 不是國家,請注意審題
    MeteorCat
        35
    MeteorCat  
       2018-12-06 13:25:12 +08:00 via Android
    生产环境确实需要审慎下,最简单往往是代价最高的
    houzhimeng
        36
    houzhimeng  
       2018-12-06 13:26:12 +08:00
    我怎么记得这是第二次看到了。
    PureWhiteWu
        37
    PureWhiteWu  
       2018-12-06 13:36:52 +08:00   ❤️ 1
    @msg7086 老哥,其实你要想,如果有生产环境都不看源码直接用这些脚本安装的人。。。多半让他自己配置也是各种漏洞各种问题各种不安全。。。
    一个合格一点的运维都不会直接用各种一键安装脚本的。。。就算要用之前也得看看源码。。。。
    305835227fadf
        38
    305835227fadf  
       2018-12-06 16:26:58 +08:00
    docker 不是更好
    lemonda
        39
    lemonda  
       2018-12-06 16:29:15 +08:00
    @msg7086
    看到这儿问一下,我平时就是
    apt-get install redis-server
    然后
    service redis-server start
    都是 root 直接运行的
    这时如果给了外包 www-data 用户的 SSH 权限,他可以提权吗?
    msg7086
        40
    msg7086  
       2018-12-06 16:46:59 +08:00   ❤️ 1
    @lemonda apt 安装的 redis 默认是运行在降权用户上的,不会有提权问题。
    你可以开 htop 看一下子进程的运行用户,一般是 nobody 或者是 redis-server 吧。
    u0mo5
        41
    u0mo5  
       2018-12-06 17:06:22 +08:00
    重在分享精神,方便大家,感谢作者的分享!
    技术可以和谐友好的方式讨论,
    现在开源界不都提倡 行为准则嘛,友好交流,少互相攻击。
    corvofeng
        42
    corvofeng  
       2018-12-06 17:11:24 +08:00 via Android
    sarices
        43
    sarices  
       2018-12-06 17:18:11 +08:00   ❤️ 1
    要不你介绍一下 https://www.xabcloud.com/
    bokchoys
        44
    bokchoys  
       2018-12-07 01:42:45 +08:00 via iPhone
    这些内容能申请转载吗
    ywgx
        45
    ywgx  
    OP
       2018-12-07 07:32:40 +08:00 via iPhone
    @bokchoys 可以
    masker
        46
    masker  
       2018-12-07 09:33:59 +08:00 via Android
    又是妄想革命的一个平台。
    NeoChen
        47
    NeoChen  
       2018-12-07 09:53:37 +08:00 via iPhone
    感谢
    @ywgx
    @msg7086
    你们吵归吵,不过我这种小白确实学到了很多!
    可以考虑从解决问题的角度改进楼主的脚本,感谢分享者,感谢质疑者!
    msg7086
        48
    msg7086  
       2018-12-07 11:49:56 +08:00
    @NeoChen 楼主很明显是秉承着能耍嘴炮就绝不妥协的精神来吵的,改进我觉得还是别指望了。
    如果有兴趣了解比较专业的 Deb 家族软件打包流程,可以去看看 Debian 自己 Git Repo https://salsa.debian.org/ ,可以学到很多。我维护的不少软件也都是借鉴或者借用了他们官方的打包工具,确实值得研究学习。
    私底下我还维护着 VPS 厂商部署的 Linux 模板文件,不过因为 NDA 的关系,制作模板的源码没办法放出来,否则也是个很好的学习样本。
    mycheryhr
        49
    mycheryhr  
       2018-12-07 11:53:36 +08:00
    @msg7086 +1 跟你想法一致,希望生产环境不会有人用这些脚本……
    ywgx
        50
    ywgx  
    OP
       2018-12-07 12:05:46 +08:00
    @msg7086 你可以去和 redis 作者抬杠,就抬为什么要做出这种容易被提权的软件,也可以抬为什么要允许 root 身份执行 redis, 吃多了的话,也可以去抬 为什么 UNIX 允许 rm -rf / 的存在

    改进? 这说法感觉你付费了一样, 你有什么资格让我按你的方式“改进” ?

    有病回家治病
    xiaowangwang92
        51
    xiaowangwang92  
       2018-12-07 18:52:40 +08:00   ❤️ 1
    大佬们,歇一歇来看个漫画吧~ https://ibb.co/xS338MS
    mingyun
        52
    mingyun  
       2018-12-09 14:19:17 +08:00
    curl 怎么输出这么多,能只输出 ip 172.27.0.14 吗
    [root@VM_0_14_centos ~]# curl xabc.io/y|sh
    % Total % Received % Xferd Average Speed Time Time Time Current

    Dload Upload Total Spent Left Speed
    100 144 0 144 0 0 230 0 --:--:-- --:--:-- --:--:-- 230
    172.27.0.14
    lemonda
        53
    lemonda  
       2018-12-10 00:16:06 +08:00
    @msg7086
    看了下是 redis
    ywgx
        54
    ywgx  
    OP
       2018-12-10 17:03:04 +08:00
    @mingyun 加一个 -s 参数

    curl -s xabc.io/y | bash
    dongyx
        55
    dongyx  
       2019-03-31 03:37:18 +08:00 via iPhone
    @msg7086

    很佩服你硬核的 Linux 功底和实事求是的精神。
    dongyx
        56
    dongyx  
       2019-03-31 03:38:39 +08:00 via iPhone
    @msg7086 对于如何规范地编写 Linux 软件包我一直很感兴趣,不知道能不能推荐一些入门的资料?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1967 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 16:22 · PVG 00:22 · LAX 08:22 · JFK 11:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.