最简单的Yii环境搭建方法 |
您所在的位置:网站首页 › yii2源码分析 › 最简单的Yii环境搭建方法 |
微信公众号中有本文的视频演示,关注即可观看。 Yii的源码中其实已经提供了一种快速搭建开发环境的方式,包括php/apache/mysql,不过需要事先安装好docker环境。优点如下: 一键安装,快速方便; 不需要分心安装php/apache/mysql这些软件,已有默认的配置可以跑应用; 便于升级,如果想升级php版本,只要改变一下Dockerfile的基础镜像就可以; 2、安装步骤 2.1 下载源码从Github拉取 git clone -b 2.0.42 https://github.com/yiisoft/yii2-app-advanced.git advancedgithub是国外的网站,有些同学因为网络原因,导致无法访问,或者拉取数据缓慢,因此我在gitee上同步了这个项目,建议使用下面的方式拉取代码,非常快。 从Gitee拉取 git clone -b 2.0.42 https://gitee.com/lvzmen_github/yii2-app-advanced.git advanced 2.2 源码分析源代码中提供了三个容器编排文件,如下所示: chenzhiwei:advanced$ tree -L 2 . ├── docker-compose.yml ├── backend │ └── Dockerfile └── frontend └── Dockerfile我们看一下docker-compose.yml: version: '3.2' services: frontend: build: frontend ports: - 20080:80 volumes: # Re-use local composer cache via host-volume - ~/.composer-docker/cache:/root/.composer/cache:delegated # Mount source-code for development - ./:/app backend: build: backend ports: - 21080:80 volumes: # Re-use local composer cache via host-volume - ~/.composer-docker/cache:/root/.composer/cache:delegated # Mount source-code for development - ./:/app mysql: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=verysecret - MYSQL_DATABASE=yii2advanced - MYSQL_USER=yii2advanced - MYSQL_PASSWORD=secret从上述源码可以分析可知: frontend.build => frontend 这表示使用frontend目录下的Dockerfile文件来生成需要使用的镜像,backend同理。这么做是为了避免管理中间镜像,让整个编排都处于源码可编辑的状态; frontend.ports => 21080:80 这个表示容器内的服务端口号是21080,并和宿主机的80端口绑定,目的是当宿主机的80端口有http请求时,会自动转发到容器内的21080端口; frontend.volumes => ./:/app 表示把当前的目录映射到宿主机的/app目录下,实现代码共享,便于开发人员开发。 mysql mysql容器会读取这四个环境变量,并将配置应用于数据库。 注意:由于mysql并没有volumes将数据库映射到宿主机,因此删除容器后,数据库也会被删除! 接下来我们看一下frontend/Dockerfile: FROM yiisoftware/yii2-php:7.4-apache # Change document root for Apache RUN sed -i -e 's|/app/web|/app/frontend/web|g' /etc/apache2/sites-available/000-default.conf从上述文件我们可知: 使用的基础镜像是:yiisoftware/yii2-php:7.4-apache使用的apache配置文件是:/etc/apache2/sites-available/000-default.conf 2.3 安装docker-compose工具 sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose如果发现太慢下不了,则可以到我的网盘中下载: 链接: https://pan.baidu.com/s/1gMSInCDo60Li2TEdwipMHg 提取码: 2ij6 注意:要配置可执行权限。 2.4 一键部署进入到advanced目录,执行如下命令: chenzhiwei:advanced$ sudo docker-compose up -d Creating network "advanced_default" with the default driver Creating advanced_frontend_1 ... done Creating advanced_mysql_1 ... done Creating advanced_backend_1 ... done-d 表示后台安装,不会把安装时的日志打印出来,因此报错也不知道,如果第一次安装的话,可以去掉。 如果docker ps后可以看到下面的内容,表示容器正常运行,环境部署成功: chenzhiwei:advanced$ docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Image}}" CONTAINER ID NAMES IMAGE ad3cc7dcf763 advanced_backend_1 advanced_backend aecb968efedd advanced_mysql_1 mysql:5.7 abdd6c885b2b advanced_frontend_1 advanced_frontend 2.5 初始化项目容器部署已经完成,但是对于新的项目,尚未初始化,compose依赖也没有拉取,因此无法正常工作,下面就来初始化项目。 进入frontend容器: chenzhiwei:advanced$ docker exec -it advanced_frontend_1 /bin/bash _ _ __ _ (_|_)/ _| | | _ _ _ _| |_ _ __ __ _ _ __ ___ _____ _____ _ __| | __ | | | | | | _| '__/ _` | '_ ` _ \ / _ \ \ /\ / / _ \| '__| |/ / | |_| | | | | | | | (_| | | | | | | __/\ V V / (_) | | | |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |