aLoNe IT Develop Studio

  • 首页
  • IT前沿
  • Web技术
  • 小姿势
  • 运维管理
  • 随笔
欢迎来到aLoNe.Adams.K的个人博客
  1. 首页
  2. 小姿势
  3. 正文

DevilBox全程操作记录

2022年12月15日 13505点热度 0人点赞 0条评论

本文主要记录全新全新安装Docker、Devilbox等相关组件,实现本机利用Devilbox的能力可以快速搭建本地开发环境。

安装WSL

  1. Windows+X键,弹出的菜单中选择Windows终端(管理员)

  2. 输入以下指令激活wsl服务

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启系统,使wsl服务生效

  1. 设置默认为wsl2版本
wsl --set-default-version 2
wsl --update

重启系统。
PS:可选项 wsl --install,可以安装指定的系统,当然具体可以到windows store里面看看支持哪些,一般情况下大家用ubuntu即可

  1. 下载docker desktop,到官网下载最好:下载地址;下载并安装完成后可以用wsl --list -v查看信息,显示docker-desktop和docker-desktop-data即表示安装成功
    • 这里可以处理下默认镜像和容器生成位置,避免C盘空间不够(可能会有问题,导致无法启动,有问题可以恢复docker出厂设置),以下是windows下的方法
    • 托盘区找到docker图标,右键点击后选择退出
    • 执行命令wsl --list -v查看运行状态,编程stopped
    • 执行命令wsl --shutdown,关闭wsl
    • 执行命令wsl --export docker-desktop-data 你的保存路径.tar,导出为一个文件
    • 执行命令wsl --export docker-desktop 你的保存路径2.tar,导出为一个文件
    • 执行命令wsl --unregister docker-desktop-data,注销原来的docker-data镜像
    • 执行命令wsl --unregister docker-desktop,注销原来的docker镜像
    • 使用以下命令,导入镜像文件,然后重启docker-desktop
    wsl --import docker-desktop-data 目标存储路径 你的保存路径.tar
    wsl --import docker-desktop 目标存储路径2 你的保存路径2.tar
    
    • 以下是linux下修改方式
    • 执行命令systemctl stop docker 停止docker
    • 修改/usr/lib/systemd/system/docer.service文件,找到ExecStart=/usr/bin/dockerd所在的行,修改为ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=你打算保存的数据目录 --pidfile=你打算保存的数据目录/docker.pid
    • 执行以下命令
    systemctl daemon-reload
    mv /var/lib/docker /data/docker
    systemctl start docker
    
    • 启动后数据目录就已经变更完成
    • 修改镜像源地址,打开docker desktop客户端,点击右上角齿轮图标,选择Docker Engine菜单,然后添加docker镜像源,json格式,可以参考如下内容:
    {
      "builder": {
        "gc": {
          "defaultKeepStorage": "20GB",
          "enabled": true
        }
      },
      "debug": false,
      "experimental": true,
      "features": {
        "buildkit": true
      },
      "insecure-registries": [],
      "registry-mirrors": [
        "http://hub-mirror.c.163.com"
      ]
    }
    

安装DevilBox

  1. 获取devilbox的代码,下载地址
  2. 进入devilbox目录,复制一份env-example文件,重命名为.env,并修改其中内容
    • 搜索PHP_SERVER,MYSQL_SERVER,将你需要的版本取消注释,其他的注释继续保留
    • 搜索HOST_PATH_HTTPD_DATADIR,将他修改为你的所有项目所在的目录下,devilbox启动的时候会扫描这个目录下的文件,并将该目录下的每个目录当成一个站点看待。比如你设置了D:\Project,目录下有D:\Project\WebSite1和D:\Project\WebSite2,那么devilbox就会把它视为2个站点,会有相应的请求转发过去
    • 搜索PHP_MODULES_ENABLE,添加swoole,这个是php加载的模块,可以根据需要添加,更多支持的模块可以到DevilBox的github仓库去看文档
    • 搜索PHP_MODULES_DISABLE,删除swoole
  3. 进入devilbox目录,执行启动命令docker compose up -d httpd php redis,未来需要其他容器的可以自由添加
  4. 启动后可以访问localhost查看devilbox相关功能

部署站点

  1. 进入devilbox目录,然后执行.\shell.bat,这样就进入到了容器内部
  2. 执行composer create-project topthink/think tp6.0.*,创建tp6.0新项目
  3. 进入新创建的ThinkPHP目录,创建htdoc软链接,执行命令ln -s /shared/httpd/tp/public /shared/httpd/tp/htdocs,这个主要目的是devilbox默认会设置每个项目目录下的htdocs作为站点根目录
  4. 修改windows下的hosts,增加tp.loc解析,devilbox会将每个站点目录名称映射为"目录名.loc"这个域名,所以需要自行添加hosts来指向本地,比如现在的示例目录就是tp.loc
  5. 如果需要对nginx有修改,可以复制devilbox\cfg\vhost-gen下的文件至"你的项目目录.devilbox"下,并重命名为vhost.yml后缀,这样在docker启动时候就会根据这个yml模板内容生成对应的vhost了。同样devilbox\cfg下的其他文件都可以复制到每个项目的.devilbox下,后缀保持yml即可自动加载
  6. 分享下我的tp项目下.devilbox\nginx.yml的模板内容(请注意,因为markdown特殊符号原因,请自行替换下方¥为$)
vhost: |
  server {
      listen       __PORT____HTTP_PROTO____DEFAULT_VHOST__;
      server_name  __VHOST_NAME__;
      access_log   "__ACCESS_LOG__" combined;
      error_log    "__ERROR_LOG__" warn;
  __REDIRECT__
  __SSL__
  __VHOST_DOCROOT__
  __VHOST_RPROXY__
  __PHP_FPM__
  __ALIASES__
  __DENIES__
  __SERVER_STATUS__
  __CUSTOM__
  }
vhost_type:
  docroot: |
    root         "__DOCUMENT_ROOT__";
    index        __INDEX__;
  rproxy: |
    # Define the vhost to reverse proxy
    location __LOCATION__ {
        proxy_set_header Host ¥host;
        proxy_set_header X-Real-IP ¥remote_addr;
        proxy_pass __PROXY_PROTO__://__PROXY_ADDR__:__PROXY_PORT__;
    }
features:
  ssl: |
    ssl_certificate           __SSL_PATH_CRT__;
    ssl_certificate_key       __SSL_PATH_KEY__;
    ssl_protocols             __SSL_PROTOCOLS__;
    ssl_prefer_server_ciphers __SSL_HONOR_CIPHER_ORDER__;
    ssl_ciphers               __SSL_CIPHERS__;
  redirect: |
    return 301 https://__VHOST_NAME__:__SSL_PORT__request_uri;
  php_fpm: |
    location / {
        if (!-e ¥request_filename) {
          rewrite  ^(.*)¥  /index.php?s=¥1  last;
        }
    }
    location ~ \.php?¥ {
        try_files ¥uri = 404;
        include fastcgi_params;
        fastcgi_keep_conn off;
        fastcgi_param SCRIPT_FILENAME ¥document_root¥fastcgi_script_name;
        fastcgi_split_path_info ^(.+\.php)(.*)¥;
        fastcgi_pass __PHP_ADDR__:__PHP_PORT__;
        fastcgi_read_timeout __PHP_TIMEOUT__;
        fastcgi_index index.php;
        fastcgi_intercept_errors on;
    }
  alias: |
    location ~ __ALIAS__ {
        root  __PATH__;
    __XDOMAIN_REQ__
    }
  deny: |
    location ~ __REGEX__ {
        deny all;
    }
  server_status: |
    location ~ __REGEX__ {
        stub_status on;
        access_log off;
    }
  xdomain_request: |
    if (http_origin ~* (__REGEX__) ) {
        add_header "Access-Control-Allow-Origin" "¥http_origin";
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
        add_header 'Access-Control-Expose-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
        add_header 'Access-Control-Max-Age' 0;
        return 200;
    }

总结

整体配置完毕后,使用devilbox进行本地开发还是方便不少,依赖于devilbox对容器的网络管理已经配置Ok,并且集成了多种容器,覆盖常见的web、缓存、数据库、消息队列等,可以快速方便搭建本地开发环境!

标签: 暂无
最后更新:2023年4月12日

aLoNe.Adams.K

一只胖菜鸟!

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章分类
  • IT前沿 / 3篇
  • Web技术 / 2篇
  • 小姿势 / 30篇
  • 运维管理 / 6篇
  • 随笔 / 4篇
标签聚合
google debian 反向代理 Orange Pi Yum sqlite 虚表 CentOS
最新 热点 随机
最新 热点 随机
Docker可用的镜像源 念 Github SSH 22端口连接超时解决办法 VSCode插件推荐 Docker内创建SQLServer服务 Cli模式下ThinkPHP框架Redis对象反序列化异常问题解决方案
忆 DevilBox全程操作记录 「微信小程序」有哪些冲击与机会? MySQL创建数据库并授权的SQL 云服务器Linux下磁盘无损扩容注意事项! Docker内创建SQLServer服务
友情连接
  • 李建伟博客
  • 不忘初心的简书
归档
  • 2024年6月 / 1篇
  • 2024年3月 / 1篇
  • 2024年1月 / 1篇
  • 2023年7月 / 3篇
  • 2023年6月 / 1篇
  • 2022年12月 / 5篇
  • 2022年6月 / 1篇
  • 2022年2月 / 3篇
  • 2020年11月 / 1篇
  • 2018年12月 / 1篇
  • 2018年5月 / 1篇
  • 2018年3月 / 1篇
  • 2017年11月 / 1篇
  • 2017年8月 / 1篇
  • 2017年3月 / 2篇
  • 2017年1月 / 1篇
  • 2016年9月 / 16篇

COPYRIGHT © 2022 aLoNe IT Develop Studio. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

陕ICP备19021656号-2