PHP远程开发环境及调试环境配置流程
开发:docker+phpbrew+nginx+phpstorm
调试:docker+phpbrew+xdebug+nginx+phpstorm
环境说明:
- 本地:windows10
- 远程:Ubuntu18.04_sever虚拟机
- 虚拟网关:192.168.2.0
- window10_ip:192.168.2.1
- ubuntu_ip:192.168.2.134
- phpstorm:在windows10上
- docker:在ubuntu_server上
- phpbrew:docker容器
- nginx:docker容器
这样搭环境的好处
- 环境中的各个模块分离,不会出现环境混乱的情况
- 可以避免windows端和服务端环境不一致的情况
- 各个服务的版本可以随意切换,不会影响到其他服务
ubuntu_server
- docker安装(以ubuntu系统为例):apt install docker.io
- 新建www用户(将整个web环境用户统一为www用户防止出现权限问题):
adduser www
- 进入/home/www建立html文件夹设置文件夹权限为644
docker
-
方法1:docker拉镜像:
docker pull phpbrew/phpbrew
docker pull nginx
docker pull mysql:5.7
-
方法2:用ubuntu镜像制作phpbrew镜像和nginx镜像
-
1. 拉取ubuntu镜像:
docker pull ubuntu
-
2. phpbrew镜像制作:
- 启动容器:
docker run -it --name phpbrew -d ubuntu /bin/bash
- 进入容器:
docker exec -it phpbrew /bin/bash
- 安装php7.2及扩展
apt install php7.2
apt-get install build-essential
apt-get install libxml2-dev
apt-get install libcurl4-openssl-dev pkg-config
apt-get install libbz2-dev
apt-get install libicu-dev
apt-get install libmcrypt-dev
apt-get install libreadline-dev
apt-get install libxslt-dev
-
组件依赖
apt-get install libjpeg-dev libpng-dev
apt-get install libfreetype6-dev
apt-get install libt1-dev
- 安装phpbrew:
curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
-
chmod +x phpbrew
(给phpbrew添加可执行权限) mv phpbrew /usr/local/bin/phpbrew
-
phpbrew init
(初始化phpbrew) -
1704_0.png
- Add these lines to your .bashrc or .zshrc file:
[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc
- 用phpbrew安装php7.2和php-fpm(nginx会远程调用php-fpm)
phpbrew install 7.2 +default +fpm
- 退出容器提交镜像:
docker commit phpbrew phpbrew-self
- 启动容器:
-
3. nginx镜像制作
- 启动容器:
docker run -it --name nginx -d ubuntu /bin/bash
- 进入容器:
docker exec -it nginx /bin/bash
- 安装nginx:
apt install nginx
- 退出容器提交镜像:
docker commit nginx nginx-self
- 启动容器:
-
-
启动容器
- nginx容器:
docker run -it --name nginx_1 -p 8002:80 -v /home/www/html:/home/www/html -d nginx /bin/bash
- --name:容器名:nginx_1(根据需要随意修改)
- -p:端口映射:将服务器的8002端口映射到容器的80端口(保证服务器的8002端口是开放的,没有被防火墙关闭)(根据需要随意修改)
- -d:后台启动
- -v:文件目录挂载:将服务器的/home/www/html挂载到容器中的/home/www/html(根据需要随意修改,要保证phpbrew容器中有目录是挂载到修改后的目录的,否则php会找不到文件)
- phpbrew容器:
docker run -it --name phpbrew_1 -v /home/www/html:/home/www/html -d phpbrew /bin/bash
- 一定要设置文件目录挂载将容器中的某个目录挂载到本机存有web服务源码的目录中,否则后面会出现php找不到文件的情况(file not found)
- nginx容器:
-
临时启动服务器docker远程访问(在docker服务关闭的情况下使用):
dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
- 配置成功后:可在本地用
docker -H [服务器ip:监听端口] [docker命令]
控制远程服务器的docker -
1692_0.png
- 配置成功后:可在本地用
phpbrew容器配置
- 进入容器:
docker exec -it phpbrew_1 /bin/bash
- 建立www用户:
adduser www
- 进入www用户根目录建立html文件夹
- 修改php-fpm配置文件www.conf(文件位置:/root/.phpbrew/php/php-7.2.20/etc/php-fpm.d)
-
1706_0.png
-
- 启动php-fpm:
phpbrew fpm start
nginx容器配置
- 进入容器:
docker exec -it nginx_1 /bin/bash
- 建立www用户:
adduser www
- 进入www用户根目录建立html文件夹
- 修改nginx配置文件nginx.conf(文件位置:/etc/nginx)
-
1708_0.png
-
- 修改default.conf(文件位置:/etc/nginx/conf.d)
-
1710_0.png
-
- 重启nginx服务:
service nginx restart
phpstorm配置
-
远程sftp
- 配置:file -> setting -> Build, Execution, Deployment -> Deployment
-
1712_0.png
-
远程连接docker服务
- phpstorm可以连接开启了远程访问的docker服务
- 配置:file -> setting -> Build, Execution, Deployment -> docker
-
1694_0.png
-
1696_0.png
-
1698_0.png
-
1700_0.png
-
1702_0.png
-
远程服务器xdebug
- xdebug可以实现php文件断点调试
- 进入phpbrew容器安装xdebug扩展修改配置文件
- phpbrew ext install xdebug
- 修改php.ini文件,添加内容(文件位置:/root/.phpbrew/php/php-7.2.20/etc)
-
1714_0.png
[xdebug] zend_extension = /root/.phpbrew/php/php-7.2.20/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so xdebug.remote_enable=1 xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_host=192.168.2.1 xdebug.remote_port=9009 xdebug.idekey=PHPSTORM```
- 重启php-fpm
-
- phpstorm配置
- 新建服务
-
1716_0.png
-
- 配置服务
-
1720_0.png
-
1718_0.png
- 配置目录映射:
-
1726_0.png
-
- 安装浏览器端插件:xdebug helper
- 修改配置:
1732_0.png
- 修改配置:
-
1722_0.png
-
1728_0.png
- 成功停住
-
1730_0.png
-
-
- 新建服务
-
phpstorm上传修改后代码
-
1734_0.png
-