在win7中搭建Linux+PHP 开发环境


Posted in PHP onOctober 08, 2014

我用了 3 年多的 Linux 桌面,很是不爽,主要是各个软件的体验不够统一,太分裂,太多选择让人无从选择。
而回到 Windows, 则更糟糕,使用 *nix 工具集变得非常折腾,部署 Web 环境也很麻烦,而且我的服务器都是 Linux 的,代码里有些功能是不能运行在 Windows 上的。

因为我偶尔还打打游戏,一个月前,我还是选择回到 Windows 桌面。
但我下面的这些软件几乎都是跨平台的,如果你使用 Linux 桌面,也不会有什么影响的。

我的主机是 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 就行了。

其他推荐

Robomogo - 跨平台的 Mongo GUI 客户端
SourceTree - Windows 下的 Git GUI
Secure Shell - Chrome 中的 SSH
Clover - 让 Windows 的资源管理器像 Chrome 一样
FileZilla - 跨平台的 FTP 客户端
SmartGit - 跨平台的 Git GUI
Sublime Text - 好用的跨平台编辑器

PHP 相关文章推荐
PHP 5.3新特性命名空间规则解析及高级功能
Mar 11 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
Jun 24 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
Jan 11 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
Mar 21 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
Mar 16 PHP
PHP下载远程图片的几种方法总结
Apr 07 PHP
[原创]PHP实现SQL语句格式化功能的方法
Jul 28 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
ThinkPHP5框架缓存查询操作分析
May 30 PHP
asp函数split()对应php函数explode()
Feb 27 PHP
PHP7 字符串处理机制修改
Mar 09 PHP
两千行代码的PHP学习笔记汇总
Oct 05 #PHP
PHP实现定时执行任务的方法
Oct 05 #PHP
PHP实现图片旋转效果实例代码
Oct 01 #PHP
PHP实现图片裁剪、添加水印效果代码
Oct 01 #PHP
PHP实现绘制3D扇形统计图及图片缩放实例
Oct 01 #PHP
PHP的switch判断语句的“高级”用法详解
Oct 01 #PHP
php中文字符串截取方法实例总结
Sep 30 #PHP
You might like
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
PHP 上传文件大小限制
2009/07/05 PHP
在PHP中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
学习PHP session的传递方式
2016/06/15 PHP
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
基于nodejs实现微信支付功能
2017/12/20 NodeJs
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
python中常用检测字符串相关函数汇总
2015/04/15 Python
Python2与python3中 for 循环语句基础与实例分析
2017/11/20 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
python async with和async for的使用
2019/06/20 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
Python之变量类型和if判断方式
2020/05/05 Python
纯css3实现效果超级炫的checkbox复选框和radio单选框
2014/09/01 HTML / CSS
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
高分子材料个人求职信范文
2013/09/25 职场文书
无工作经验者个人求职信范文
2013/12/22 职场文书
上班打牌检讨书
2014/02/07 职场文书
2014年质检工作总结
2014/11/26 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python