win7中搭建php+linux环境教程

发布时间:2019-11-04编辑:脚本学堂
有关win7中如何搭建linux+php开发环境的方法,在虚拟机中搭建php环境,所有代码的运行和调试都在虚拟机中进行,需要的朋友参考下。

我的主机是 windows 7 x64, 然后跑一个 arch 的虚拟机,所有代码的运行和调试都在虚拟机中进行。
arch 虚拟机
arch 安装略折腾,但我喜欢它 kiss 的哲学,我用 virtualbox, 分配 512mib 甚至 256mib 就够用了。
网络改成「桥接网卡」然后在路由器设置一个 mac 绑定的固定 ip, 我给虚拟机的是 192.168.0.105, 而我主机的是 192.168.0.100.
需要装的软件包最核心的有:openssh, nginx, mariadb, php, xdebug.
至于其他一些:vim, mongodb, php-mongo, phpmyadmin 就看个人需要了。
直接在 virtualbox 的虚拟机窗口上敲命令很不方便,我会装一个叫 virtuawin 的虚拟桌面软件,类似于 kde 的 workspace(工作区), 把 virtualbox 的窗口丢到另一个桌面。
然后用 xshell 连 ssh 上去敲命令。
当然,还需要建一个非 root 账户来日常使用,我建了一个 jysperm.
然后,可以修改 /etc/php/php-fpm.conf:
user = jysperm
group = jysperm
这样 php-fpm 的进程会以你的用户来跑,读写文件不会遇到任何权限问题。
作为开发服务器,可能同时需要开发测试多个项目,每次都要去 nginx 里面新建站点是很折腾的事情,下面的配置文件可以一劳永逸:
 

复制代码 代码示例:
server {
    listen 80;
    server_name ~(?<dir>.*).ab.jyprince.me$;
    access_log /home/jysperm/nginx.access.log;
    error_log /home/jysperm/nginx.error.log;
    index index.html index.php;
    autoindex on;
    root /home/jysperm/$dir;
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ .php$ {
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}
 

*.ab.jyprince.me 这个域名被我解析到了 192.168.0.105, 这样下来,只需访问 test.ab.jyprince.me, 就相当于访问位于 /home/jysperm/test 中的文件了,以后就不用再修改 nginx 的配置文件了。
phpstorm
我见过最好的 ide 是 phpstorm.
phpstorm 的 deployment 功能可以在你每次修改文件后自动部署到服务器,你只需建一个 sftp 类型的服务器,并把 arch 虚拟机的信息填上去,然后勾选 automatic upload 就好。
每一个项目都上传到 /home/jysperm 下的一个文件夹。
然后访问 项目名.ab.jysperm.me 就行了,一切都是自动的。
远程调试

在 arch 虚拟机中修改 /etc/php/conf.d/xdebug.ini:
 

zend_extension=/usr/lib/php/modules/xdebug.so
xdebug.remote_enable=on
xdebug.idekey=jysperm
xdebug.remote_host=192.168.0.100
xdebug.remote_port=9000
 

然后在 phpstorm 中新建一个 php remote debug 即可。
需要调试时,先在 phpstorm 中打开调试,设上断点,然后让请求带上 xdebug_session=jysperm 的 cookie 即可。
调试页面的时候,可以用 这个工具 生成书签,点击书签就可以控制调试的开关了。
调试 restful api 的话我一般会用一个叫 postman 的 chrome 扩展,这个应用似乎没有编辑 cookie 的功能,这样的话,在 http header 里加上一项 cookie:xdebug_session=jysperm 就行了。