Git Product home page Git Product logo

fangphp's Introduction

fangPHP

fangPHP is a docker based development env with php7 mysql redis and livereload

fangPHP 的目标是一个跨平台( Mac / Linux / Win )的 PHP 开发环境,主要用于教学。它解决的是:老师讲了,学生回去做的时候,不能复现例子,最后查出来是环境差异的问题。

安装和启动

分为三步

  1. 安装 Docker( 这是我们的容器平台 )以及 Docker-compose( 这是我们编排容器的工具,Linux上需要单独安装 )
  2. 启动 fangPHP 环境
  3. 安装 Live-reload 插件
  4. 使用说明

安装 Docker

不同的操作系统安装 Docker 的方式不同,以下做分别的讲解。

Windows用户

Windows 因为版本差异、环境不同会遇到各种奇形怪状的问题,推荐大家直接安装 Ubuntu / Windows 双系统,然后在 Ubuntu 下进行开发,能节约很多时间。

首先,请按此提示查看Windows的版本

Win10 专业版和服务器版( Win10 的其他版本看后边 )

微软在 Win10 专业版、教育版和服务器版中,提供了 Hyper V 虚拟化技术,所以这部分用户可以安装最新的原生 Docker 客户端。 Docker 提供面向企业的付费版本(EE)和面向社区的免费版本(CE),我们使用CE。

下载地址 官方网站

安装时记得选中 git for windows ,这是我们检出代码时要用到的工具。

其他 Windows 版本,包括 Win10 的家庭版等等

更新:Docker 原生版已经支持在 Win10 2004以后的版本安装,可参考: https://www.jdon.com/54526

以下方式已经不推荐。

由于没有容器化技术的支持,其他的 Windows 版本只能通过虚拟机的方案来实现。这时候我们需要用到 Docker ToolBox。

1. 下载页面 https://docs.docker.com/toolbox/toolbox_install_windows/
1. 安装(安装时如果没有安装 git windows 版,记得同时选上 )
1. 完成后,启动「 Docker Quickstart Terminal 」,进入命令行
1. 等待一段时间,按提示给予权限。最后会显示一个内网地址,一般是 192.168.99.100 。

原生 Docker 客户端的服务是启动在 127.0.0.1 上边的 , 为了保证环境的统一,我们将 192.168.99.100 的端口 映射到 127.0.0.1 上:

1. git clone https://github.com/easychen/fangPHP ( clone fangPHP 代码到本地 )
1. 以管理员身份运行 fangPHP 目录下的 port-remapping-for-toolkit-win.bat 启动以后挂着就行,不用的时候再点任意键关掉
1. 如果你的IP不是 192.168.99.100 , 请用编辑器打开 port-remapping-for-toolkit-win.bat , 将 192.168.99.100 替换为对应的 IP。
1. 因为 Windows 的一个 Bug( https://support.microsoft.com/en-us/help/555744 ),如果这个脚本不生效,请检查是否电脑是否安装了 IPV6MON.DLL 

Linux

按官方的安装提示进行安装,以下链接以 Ubuntu 为例,左侧菜单处可切换其他发行版。( 18.04 请参考这篇文章 需科学访问 ) https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce

注意 apt-get 里边的 docker-compose 版本过低,不要通过 apt-get install docker-compose 安装,可按以下命令安装

sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose

Mac

Mac 系统可以使用原生的 Docker 客户端,下载地址 官方网站

启动 fangPHP

进入命令行,选择一个用来存放代码的目录( 路径中不要包含中文,不然某些版本的 Docker 会出错 )

检出代码:

  1. 运行 git 命令检出代码 git clone https://github.com/easychen/fangPHP
  2. 进入代码目录 cd fangPHP

启动:

使用 Mac 和 Linux 的同学运行 docker-compose up 使用 Windows 的同学运行 docker-compose.exe -f docker-compose.win.yaml up

注意这里 Windows 使用了独立的配置,否则 MySQL 服务会无法启动。

报错备用方案:

Mac & Linux : 将 docker-composer.yaml 第4行  build: ./buildLNP 换成     image: hub.c.163.com/easychen/apncore:latest 

Win:将 docker-composer.win.yaml 第4行  build: ./buildLNP 换成     image: hub.c.163.com/easychen/apncore:latest 

添加测试 PHP 文件:

在 fangPHP 目录下,进入 data/web , 新建 index.php 文件,内容为:

<?php echo "Hello world";

打开浏览器,访问 o.ftqq.com ,应该就能看到输出的结果了。

如果在 Windows 上创建了 index.php ,访问还是403,那么请打开 kitematic ( 桌面快捷方式的另一个 ),然后启动(可跳过登录),进入容器的可视化管理界面。

在左侧菜单中选择名称中包含 php7.ftqq.com 的镜像,然后,在右边的共享目录设置处点击齿轮图标。

把 local folder 改到 你安装fangPHP的目录+ data/web(如果选中后提示权限不够,将安装目录放到你的用户目录下边) ,应该就能找到 index.php 啦。

安装 Live-reload 插件

  1. 打开 Chrome 浏览器,进入插件页面,将 fangPHP 目录下的 LiveReload_v2.1.0.crx 拖拽到浏览器中的插件 Tab,放开即可安装
  2. 打开 o.ftqq.com , 点击浏览器右上方的插件图标 ,会提示连接成功
  3. 当你修改 data/web 下的 PHP、HTML、CSS 和 JS 文件时 ,页面会自动更新

管理数据库

  1. 访问 o.ftqq.com/mysql.php 即可
  2. 可以在左上角切换语言
  3. 默认账号信息如下,可在 docker-compose.yaml 中修改:
    MYSQL_HOST: mysql.ftqq.com
    MYSQL_ROOT_PASSWORD: itworks1343
    MYSQL_DATABASE: fangtangdb
    MYSQL_USER: php
    MYSQL_PASSWORD: fangtang

在 PHP 中访问 MySQL 和 Redis

  1. 使用 mysql.ftqq.com 作为 mysql 的 host
  2. 使用 redis.ftqq.com 作为 redis 的 host

注意以上域名只在 PHP 环境内有效。

fangphp's People

Contributors

anderson-liu avatar easychen 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

fangphp's Issues

/

之前的fangPHP是透过./buildLNP build的,现在更换成了镜像文件,请问要如何修改nginx配置呢?谢谢

ERROR: client version 1.22 is too old

我在window10 专业版(版本号:16299)尝试执行docker-compose up时发生以下错误:

ERROR: client version 1.22 is too old. Minimum supported API version is 1.24, please upgrade your client to a newer version

在查阅资料后,在docker的官方Github的Issues ERROR: client version 1.22 is too old #4106中找到解决方案

打开docker-compose.yaml文件,将 version:'2.0' 修改为 version:'2.1'

详细内容请打开链接自行查阅,希望对你有所帮助 :)

mysql一直重启,请问如何解决

  • 环境 win10 专业版
  • localhost可以显示php的hollo world,o.ftqq.com无法访问(没有403)。
  • mysql一直重启,登录mysql显示connection refused。
    image
    image

mac环境启动docker报出 ERROR: unknown blob 错误

docker版本信息如下:

hanjundeMacBook-Pro:fangPHP hanjun$ docker version
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:13:02 2018
OS/Arch: darwin/amd64
Experimental: false
Orchestrator: swarm

Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:22:38 2018
OS/Arch: linux/amd64
Experimental: true

错误信息如下:
hanjundeMacBook-Pro:fangPHP hanjun$ docker-compose up
Pulling mysql.ftqq.com (hub.c.163.com/easychen/mysql-alpine:latest)...
latest: Pulling from easychen/mysql-alpine
75f2985e83e6: Pulling fs layer
75f2985e83e6: Downloading [> ] 75f2985e83e6: Downloading [==> ] 75f2985e83e6: Downloading [======> ] 257.5kB/2.065MBwnloading
75f2985e83e6: Downloading [=========> ] 400.1kB/2.065MB
ffb020801b98: Downloading [==================================================>] ffb020801b98: Download complete

362e5191da4f: Downloading [==================================================>] 362e5191da4f: Download complete
ERROR: unknown blob

我所理解的blob错误通常都是资源配置错误,但fangPHP应该并没有引用静态资源。
或者 unknown blob 还有其它涵义?

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.