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

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

  •  
  •   ywgx · 111 天前 · 4853 次点击
    这是一个创建于 111 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 条附言  ·  109 天前
    只是分享一种简化问题的方法,没想到还有人抬杠这个 😄
    54 回复  |  直到 2018-12-10 17:03:04 +08:00
        1
    pyufftj   111 天前
    使用 docker 也可以
        2
    mineqiqi   111 天前
    看着不错 收藏了
        3
    est   111 天前   ♥ 9
    # curl -s xabc.io/挖矿脚本.sh | bash
        4
    ywgx   111 天前
    @est 😄 没那么大胆子
    可以 curl xabc.io/mysql 看看后再执行嘛 哈哈
        5
    vipdog73   111 天前
    收藏了。
        6
    vipdog73   111 天前
    好像有问题
        7
    ywgx   111 天前   ♥ 1
    @vipdog73 什么问题?
        8
    dengtongcai   111 天前 via iPhone
    @est v 站的老哥们都贼幽默哈哈哈哈
        9
    tanranran   111 天前
    好东西。感谢楼主分享
        10
    tiaod   111 天前   ♥ 10
    我突然有了个灵感
    # curl -s xabc.io/俄罗斯轮盘赌.sh | bash

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

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

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

    数据存储在腾讯云 CDN,所以下载还是比较快的
        24
    msg7086   110 天前   ♥ 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 打包的软件往里解压一下就跑,你猜猜接下来我们会收到多少张法院的传票?
        25
    ywgx   110 天前
    php 安装几套的问题,我不多说了,你有运行过没? 安装了几套?

    redis.conf 你看过没 bind 127.0.0.1

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

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

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

    我只是提供一种分享,一种方案,多多益善
        26
    ywgx   110 天前
        27
    msg7086   110 天前   ♥ 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 的新手?我反正是有点看不懂。
        28
    msg7086   110 天前
    然后是 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
        29
    yuanfnadi   109 天前
    docker run mysql
    docker run redis
    docker run nginx
        30
    ywgx   109 天前
    @msg7086 你连自己的开发同事都不信任 ; 用淘汰了的 CentOS6 安装多套,你何必呢?

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

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

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

    如你所言,你要求自己就行了,不要圣母心
        31
    ywgx   109 天前
    @msg7086 如果觉得 几十台几百台机器 管理不安全,没问题,老夫给你准备了 xabcstack.com 欢迎使用 😄
        32
    msg7086   109 天前   ♥ 1
    @ywgx
    CentOS 6 Maintenance Updates November 30th, 2020
    ermmm 行吧,你说淘汰就淘汰吧。

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

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

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

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

    仁者见仁,智者见智吧

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

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

    有病回家治病
        51
    xiaowangwang92   108 天前   ♥ 1
    大佬们,歇一歇来看个漫画吧~ https://ibb.co/xS338MS
        52
    mingyun   106 天前
    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
        53
    lemonda   106 天前
    @msg7086
    看了下是 redis
        54
    ywgx   105 天前
    @mingyun 加一个 -s 参数

    curl -s xabc.io/y | bash
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3278 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 04:27 · PVG 12:27 · LAX 21:27 · JFK 00:27
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1