Giter Site home page Giter Site logo

xiiapp / xii Goto Github PK

View Code? Open in Web Editor NEW
106.0 1.0 17.0 570.46 MB

服务器docker环境

Home Page: https://xii.app

License: MIT License

Shell 91.57% Go 7.30% HTML 0.02% Dockerfile 1.06% PHP 0.04%
docker lnmp mongodb mysql nginx php redis elk phpmyadmin supervisor

xii's Introduction

All Contributors

GitHub GitHub language count GitHub issues GitHub closed issues GitHub pull requests GitHub closed pull requests GitHub forks

最新changelog(1-2条)

2022-10-21 增加 xii db 命令,封装了mysql的备份还原,增删数据库的便捷操作

2022-10-19 增加对arm、arm64 架构的支持。

Xii 助手命令:

命令:xii db 包括了8个常规mysql操作,主要有:

xii db 并不是要代替mysql的所有操作,他主要是针对最常用的场景做了处理。【参考自lnmp.org的操作】,更多功能请用专业管理软件或命令操作。

  • 创建备份
  • 还原/导入备份
  • 创建数据库+用户 ,删除数据库
  • 显示所有用户
  • 常用mysql操作集合提示。

群聊沟通

Tg: https://t.me/xii_app

简介

详细文档请查看: https://xii.app

Docker 化的 lnmp 环境及更多软件包,同时提供助手程序 xii 用来快捷管理。

注: xii 是罗马数字 12 的意思,正好有域名 xii.app ,就很随意的用了。 这会征求名。

内置软件(Docker 镜像)清单

软件 具体版本 备注
PHP php7.3 , php7.4, php8.0, php8.1, php8.2
Web服务器 nginx 内嵌acme.sh,用于ssl证书申请
数据库 mysql5.7, mysql8.0 , mysql5.6 , mysql5.5
Nosql mongoldb , redis
缓存 memcached
消息队列 rabitmq
其他 supervisor
工具 phpmyadmin

注 1: 可自行轻松扩展软件清单

注 2: php 支持快捷安装扩展,已默认安装 compose,php 扩展等请查看左边 php 节点说明。 nginx 的配置已做优化处理,默认自带 acme.sh,可免费申请 ssl 证书。phpmyadmin 实际运行体积大改 450Mb,不太建议启用。

注3: Mysql尽可能建议使用5.7或以上版本,能获得更多的性能。 使用前请查看左边mysql说明了解端口、导出导入数据等信息。

助手程序 Xii

主要提供了易用性功能,具体如下:

  1. 便捷的网站增删查,使用 xii vhost add 可以创建安装,安装 nginx 的优化配置,申请免费的 ssl 证书等(该功能借鉴自 lnmp 套件)。
  2. 便捷的 docker 镜像管理功能, 使用 `` xii init` 可以随时随地增删 docker 镜像。
  3. 封装了 docker-compose 的大部分命令,docker-compose 平时要的时候,要么需要进入到 docker-compose.yml 所在的目录,要么需要带一大串参数。 而且任何危险操作都没有二次确认,这导致不是很熟悉的人容易误操作。 xii 的封装解决了这些问题。可以在任何目录下执行,危险动作会有说明或二次确认。
  4. 封装了 docker 的几个命令,主要也是危险动作二次确认或便捷操作。
  5. 后续拟增加的功能:升级功能,继续提供一些便捷操作组合等,具体参照“路线图”

安装

当前仅在 linux 和 mac 测试完全。

注:暂没在 window 下充分测试完,项目的快捷操作严重依赖 xii 助手,所以如需要 window 下使用,建议使用 yeszao/dnmp 这个开源项目(本项目的配置项大量复用了它的代码段,并进行优化配置或提升版本等)。

一键安装

复制并执行一下命令:

wget -c https://raw.githubusercontent.com/xiiapp/xii/main/script/install.sh && chmod +x install.sh && ./install.sh

注: 当前仅支持 mac 和 linux,暂不支持 win 系统一键安装。

手动安装

mac 系统

  1. 确保系统安装好 docker 和 docker-compose,建议直接安装 docker 官方的 docker-desktop。

  2. 下载安装包,下载地址二选一

    苹果M1/M2芯片用户请下载 arm64 版本 https://github.com/xiiapp/xii/raw/main/release/xii_mac_arm.zip

    苹果Intel芯片用户请下载 https://github.com/xiiapp/xii/raw/main/release/xii_mac.zip

  3. 解压安装后后,手动执行 chmod +x manual.sh && ./manual.sh 完成安装。

  4. 注意检测 docker 是否启动,在 docker 启动的情况下,可以执行后续命令。

Linux 系统

  1. 确保系统安装好 docker 和 docker-compose。 安装docker#

docker官方提供了傻瓜式安装脚本,为你做好所有工作,免去了手动安装的繁琐。

本文实测系统环境:debian11

执行以下命令

2023-03-07更新

不知道从什么时候开始官方脚本已经默认也安装了 docker compose,不需要后面的手动安装了

注意是 docker compose 而不是 docker-compose. 执行命令时候也没有这个杠

curl -fsSL https://get.docker.com | bash -s docker

  1. 下载安装包,下载地址二选一

    Linux 版本 https://github.com/xiiapp/xii/raw/main/release/xii_linux.zip

    Linux arm64 版本 https://github.com/xiiapp/xii/raw/main/release/xii_linux_arm64.zip

    Linux arm 版本 https://github.com/xiiapp/xii/raw/main/release/xii_linux_arm.zip

  2. 解压安装后后,手动执行 chmod +x manual.sh && ./manual.sh 完成安装。

  3. 注意检测 docker 是否启动,在 docker 启动的情况下,可以执行后续命令。

卸载

快捷卸载

wget -c https://raw.githubusercontent.com/xiiapp/xii/main/script/uninstall.sh && chmod +x uninstall.sh && ./uninstall.sh

手动卸载

  • 备份好所需数据,网站数据放在www目录,配置放在env/容器类型, 容器产生的数据,比如msyql,一般在data/容器名

  • 执行 xii down 停止所有容器

  • 执行 xii rmall 删除所有容器、镜像、卷

  • Linux用户执行 rm -rf /home/xii,Mac用户执行 rm -rf ~/xii 删除所有数据

  • 执行 rm -f /usr/local/bin/xii rm -f /usr/local/bin/xxi 删除软链接

快速选择组件

无论什么时候,只要你想变更 docker 容器,都可以执行以下命令进行组件的变更。

xii init

演示动画

<script id="asciicast-ag7Woq3p2wc9hsFnbI4c1EzM9" src="https://asciinema.org/a/ag7Woq3p2wc9hsFnbI4c1EzM9.js" async></script>

友情提示,一个可能更好的操作流程

第一次建议执行 xii up -d 然后再执行 xii ps 看下你的容器是否都起来了。如果没起来,可以再执行一次 xii up xii up -容器名 来看一下报了什么错误

网站管理

添加网站或nginx反代

xii vhost add

注: 添加网站或者任意nginx反代的过程中,会提示很多选项,根据需要创建即可,此外过程中,会提示是否申请免费的SSL证书。

**注:**当前不会创建mysql数据库,拟后续版本推出。

演示:

<script id="asciicast-528842" src="https://asciinema.org/a/528842.js" async></script>

**注:**国内某些云服务器间歇性屏蔽掉github的访问,有可能会导致用来生成证书的acme.sh无法安装上,xii vhost如果遇到这种情况,会尝试自己安装一次,还不行会将安装命令显示出来,并提示用户复制黏贴后自己执行几次安装。

删除网站或反代

xii vhost del

注:其本质是检查nginx的配置目录vhost里的配置文件,一个文件就是一个网站

演示:

<script id="asciicast-528843" src="https://asciinema.org/a/528843.js" async></script>

查看网站列表(仅查看)

xii vhost list

修改网站配置

解析匹配关系,暂不提供。

请自行编辑 env/nginx/vhost/域名.conf文件

有关 xii 的操作问答

问题 1:如何重新编译镜像,即修改 docker-compose.yml ,dockerfile,env 文件等,要如何让他生效?

**场景:**服务器已经在跑了一个 nginx 容器(也就是说这个容器被 docker-compose up 或者 xii up 过一次了), 此时修改docker-compose.yml或者dockerfile文件、.env 文件后,要如何让他生效?

关键理解:

  • docker-compose.yml 的的改变,只跟 2 个 docker-compose up 和 docker-compose build 有关,其他命令都无法让他生效
  • 默认**/data 、/www、/env 里的数据是不会被删除掉**的。如有需要强制清理,请docker-compose down --volumes

可以有几种如下操作来确保生效,但推荐使用xii rebuild -镜像名来快捷操作:

  • 最粗暴做法,先 xii downxii up 一次:
  # 做法 1:使用原始命令,必须在 xii 的项目下执行
  docker-compose down
  docker-compose up -d

  # 做法 2: 使用 xii 助手,可以在任何目录下执行
  xii down
  xii up -d

注意:docker-compose down 会删除容器、镜像、网络、映射的卷(我们通过 dockerfile 里 volume 命令挂载上去的不会删除)。

  • 标准流程
    #做法 1:原始命令方式,必须在 docker-compose.yml 所在目录下执行
    docker stop 容器名 #1.先停止容器
    docker rm 容器名 #2.删除掉容器
    systemctl restart docker #重启 docker 服务(测试过,新版似乎无需,需要进一步测试,可以暂时跳过观察一下)
    docker-compose up -d --no-deps --build 容器名 #4.重新 docker up 一下

    # 做法 2:使用 xii 助手

    xii stop -容器名
    xii rm -容器名 #重启 docker,同做法 1 第 3 步一样 #在 up 之前,也可以直接先 xii build 一次,多了一条操作命令,
    xii up -d -容器名

    # 做法 3: 使用 xii rebuild 一步到位。强烈推荐这个,最简单
    xii rebuild -容器名
  • 粗暴做法 2,适合同样不想手动删除已经建立的 container
    # --force-recreate 即使配置或者镜像(images)没有改变也强制重启

    docker-compose up --force-recreate -d

    # 参数挺长的,推荐使用 xii rebuild -容器名

问题 2: 在 Linux 上非 root 安装,每次启动 docker 都需要增加 sudo 的解决方法:

sudo gpasswd -a ${USER} docker

执行完毕后,重新登陆一次 ssh 即可

问题 3: 国内使用 docker 慢

安装的时候,复制专用国内的安装脚本。其实就是 install.sh 后面加一个参数 china 就会默认使用国内源。

授权

MIT

Contributors

mslxi
mslxi

💻
xiiapp
xiiapp

💻 🤔

All Contributors

xii's People

Contributors

allcontributors[bot] avatar mallka avatar mslxi avatar xiiapp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

xii's Issues

debian11 提示 -bash: xii: command not found

Saving to: ‘xii.zip’

xii.zip                                 100%[==============================================================================>]  12.01M  5.69MB/s    in 2.1s    

2022-10-17 22:52:03 (5.69 MB/s) - ‘xii.zip’ saved [12597804/12597804]

./install.sh: line 96: unzip: command not found
mv: cannot stat '/home/xii/linux/*': No such file or directory
chmod: cannot access '/home/xii/xii': No such file or directory
  
  
  
 ---Success---
XII is installed successfully.
 Your app location is /home/xii 
Please visit https://xii.app for detail information before use.

Docker 环境安装在部分服务器失效

请确认

  • 是当前最新的发布版本(官网安装),还是开发版本

Bug 描述

在国内 ubuntu 22 最新版本上安装,docker没有成功安装上。
在ovh 法国的debian11 同样如此

复现步骤

该 Bug 复现步骤如下:
见描述

截图

Docker容器互联

如是功能需求,请确定符合以下情况

  • 难以通过自己实现
  • 难以通过第三方插件实现

请描述该需求尝试解决的问题

Docker容器之间互联时,bridge模式下需要配置Docker网络来实现容器互通。

请描述您认为可行的解决方案

xii init 编译 docker-compose.yml 时添加命令,用来自定义网络模式。

考虑过的替代方案

xii 容器网络直接使用 host模式

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.