为什么
搭建VSCode+Docker搭建PHP远程开发环境搭建,主要解决以下几个问题:
微信开发调试问题。
随时随地办公问题(具体参看code-server)。
减少本地环境污染,PHP与Node版本可能冲突(dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib)。
减少硬盘使用。
基础环境
本地
MacOS
VSCode
Docker Desktop
远程
CentOS
Docker CE
本机不使用MacOS,而用Windows,准备好SSH工具应该也没问题。远程服务器,推荐购买阿里云,使用*NIX系统都没有问题。
步骤
配置ssh登录远程服务器
安装Docker
安装PHP
安装Nginx
配置VSCode
测试
以上为使用VSCode+Docker搭建PHP远程开发环境搭建的主要过程。
配置SSH远程登录
在本机上生成密钥对,然后把公钥放到服务器相应用户的~/.ssh目录,开启服务器SSH配置。
生成密钥
进入~/.ssh如果有管理多个ssh,最好~/.ssh
1 | mkdir ~/.ssh/aliyun |
系统会询问你文件名和秘钥密码,可以一路回车过去,会生成两个文件:
- id_rsa 私钥
- id_rsa.pub 公钥
服务器ssh配置
把上一步生成的公钥发送到服务器(scp,FillZilla等)上,然后在服务器上执行下面命令。(authenrized_keys的权限必须是600或更小,否则会连接失败)。
1 | cat id_rsa.pub >> ~/.ssh/authorized_keys |
修改服务器上的ssh配置文件,位置:/etc/ssh/sshd_config
1 | RSAAuthentication yes |
然后重启ssh服务
1 | systemctl restart sshd |
配置别名
1 | Host server_alias(你的服务器别名) |
保存后,登录时只需执行
1 | ssh server_alias |
安装Docker
Docker安装无特殊说明,参考官方文档进行安装即可,本机Docker可以不用启动。
本机
https://docs.docker.com/docker-for-mac/install/
远程
https://docs.docker.com/engine/install/centos/
安装PHP
因为需要安装PHP扩展,所以通过编写Dockerfile来生成镜像。通过https://hub.docker.com/_/php 可以查看相关配置。注意修改国内源,同时不要使用最新版本镜像,否则下载依赖包时可能出现问题。如下是我的 Dockerfile,大家可以参考。
1 | FROM php:7.3-fpm |
构建容器
1 | docker build -t php-dev . |
安装Nginx
在远程服务器用Docker安装Nginx,通过https://hub.docker.com/_/nginx 可以查看一些配置。一般会将nginx的整个配置目录 copy 到本地一份,然后在运行的时候将目录绑定到 nginx 容器的配置目录
获取配置
1 | docker run --name tmp-nginx -d nginx |
修改配置
1 | server { |
注意/var/www/html/为php-dev中的地址。172.17.0.1为docker宿主网卡地址,可通过ip addr show docker0 来查看,一般为172.17.0.1。
构建容器
1 | docker run -p 80:80 --name nginx -v /data/nginx/conf:/etc/nginx -d nginx:stable |
VSCode配置
安装Remote Development插件
打开VSCode,切换到插件面板,搜索Remote Development并安装,会同时安装Remote-WSL,Remote-Containers,Remote-SSH这三个插件。
配置SSH
创建工作目录,如/Users/airhead/WorkSpace/followme/docker
使用VSCode打开目录,增加.vscode\settings.json
1 | { |
注意,docker.host不是一个地址不能使用别名。
测试
此时切换的VSCode的Docker面板,会看到php-dev(根据自己的情况查看),右键Attach Visual Studio Code,会打开一个新的VSCode。
打开目录/var/www/html,创建inde.php
1 |
|
使用浏览器查看或用wget查看
1 | wget http://php.goldsyear.com/index.php -O index.html |
总结
通过以上的配置就可以在VSCode中远程开发了,此次配置PHP远程开发环境,最容易出现问题的地方是PHP镜像的构建,可能会因为各种原因出错,要保持耐心多试几次。