phpstorm远程调试

记录下phpstorm远程调试下使用方法

一、Xdebug 安装

使用命令可看服务端php的安装信息,其实就是phpinfo了

1
php -i

复制上面命令输出的东西到Tailored Installation Instructions页面中的输入框中,然后下载推荐的Xdebug版本
搞定上面一步后,提示我安装2.2.5版本的。

接着安装命令搞起来
1
2
3
4
5
wget http://xdebug.org/files/xdebug-2.2.5.tgz
tar -xvzf xdebug-2.2.5.tgz
cd xdebug-2.2.5
sudo ./configure --with-php-config=/usr/local/php-5.2.17/bin/php-config
sudo cp xdebug.so /usr/local/php-5.2.17/lib/php/extensions/no-debug-non-zts-20060613/

接着在php.ini中加入相关配置

1
2
[Xdebug]
zend_extension = /usr/local/php-5.2.17/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so

nginx缓存时间设置

来看一段nginx的配置

1
2
3
4
location ~ .*\.(js|css|png|jpg)?$
{
    expires      12h; # 设置缓存时间
}

主要作用就是起到告诉浏览器缓存图片的意思
接着来看Chrome请求的数据
浏览器请求头
Date与Expires刚好相差12个小时

再看Chrome显示的请求
请求数据

注意到Chrome显示的304 Not Modified 这个是nginx发回给Chrome的消息[只传了个header过来,不传body也就是图片数据],告诉此文件没有修改过,可以使用浏览器本地缓存过的图片。

Laravel安装遇到的几个小坑

一、代理问题
国内的网络环境对IT工作者来说,已经达到变态成度了,各种包无法下载,线路干扰,有几种方式来解决
一、先在VPS用composer把Laravel给拖回来,本地你就别想用Composer正常下载Laravel回来了
二、使用全局代理,暂时木有折腾过在终端下怎么折腾,GUI可以使用proxifier将socks5代理转成全局代理
三、直接使用Laravel Homestead来开发,开发完,代码直接copy到线上运行
四、从Laravel-cn下载最新的完整包

二、nginx配置
开发部署均是使用NG,外加Lnmp.org上面的集成环境,参考了Laravel Homestead上面的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
server
    {
        #监听端口
        listen 80;

        #域名
        server_name meitubar.com;

        #默认访问的文件
        index index.html index.htm index.php;

        #代码根目录
        root  /home/wwwroot/meitubar/public;

        charset utf-8;

        #匹配站点内的所有链接
        # 将http://meitubar.com/users 这样的请求全部转发到index.php/users 上面去,其实就是rewrite了
        location / {
            try_files \$uri \$uri/ /index.php?$query_string;
        }

        # try_files 及$uri 的具体含义参考: [HttpCoreModule](http://nginx.org/en/docs/http/ngx_http_core_module.html)

        location = /favicon.ico { access_log off; log_not_found off; } # 匹配favicon.ico时,关闭日志
        location = /robots.txt  { access_log off; log_not_found off; } # 同上

        # 不知道为什么我的Laravel如果木有设置下面的缓存时间的话,会直接404返回回来
        location ~ .*\.(js|css|png|jpg)?$
        {
            expires      12h; # 设置缓存时间
        }

        access_log off; # 关闭访问日志
        error_log  /var/log/nginx/meitubar-error.log error; #设置错误日志的位置

        error_page 404 /index.php; # 定义出错页面,出错时,直接跳转到首页

        sendfile off; # 关闭sendfile选项

        # 配置解析php文件的方式
        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass  unix:/tmp/php-cgi.sock;
            fastcgi_index index.php;
            include fastcgi.conf;
        }

        location ~ /\.ht {
            deny all;
        }
    }

三、app/Storage目录权限问题
参考这条issuesFix blank-screen error on unwritable storage dir
在Mac需要在Mac端设置权限,然后在通过SSH连接上服务器进行权限的设置

四、proc_open函数的开启
注释php.ini中正面的这行

1
disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket

当然有些函数在生产环境还是需要关的,开发环境就算了,一次性全部打开省不少事。

五、总结
以上4点都会导致Laravel空白页的问题,需要注意下, 如果发现空白页,还可以通过

1
php artisan tail

这条命令来查看哪里有出错

vagrant与parallels搞基

背景
因为一台电脑两个屏幕两套键鼠的实现方案,里面的实现在Mac下只有Parallels可以完美的实现一分二,
但是平时开发使用的都是vagrant+virtual box 这对好基友,但是有个很严重的问题是Parallels与Virtual Box不能同时开启,这个无解。所以想着干脆把开发
环境直接切换到Parallels下的虚拟机好了,IO神马的都上去了,一举多得。

parallels provider 安装

1
vagrant plugin install vagrant-parallels

添加新Box
此Box是针对Parallels的,不能在VB下使用,这点应该都能理解。

1
vagrant add parallels/centos-6.5

初始化与开机

1
2
vagrant init parallels/centos-6.5
vagrant up --provider=parallels

就此搞定,接着开搞Laravel + Composer…
细节的配置与Virtual Box对应的Vagrantfile不大一样,需要特殊指定。
具体参考文档参考: vagrant parallels provider

Vagrantfile配置样例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
  VAGRANTFILE_API_VERSION = "2"
 
  Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
     config.vm.box = "parallels/centos-6.5"
     config.vm.provider "parallels" do |v|
       v.name = "H1ac0k_Dev_Machine"
       v.memory = 1024
       v.cpus = 2
     end
 
     config.vm.provider "parallels" do |v, override|
       override.vm.synced_folder "/Users/machaismile/Documents/Dev", "/home/wwwroot", mount_options: ["share"]
     end
  end
 
  Vagrant.configure("2") do |config|
     config.vm.network "forwarded_port", guest: 80, host: 8080
  end

注意点
使用Parallels Desktop 10 可以支持端口转发,10以下的版本无法使用端口转发

Google Domains 试用

今天起床,早早的收到Google Domains发来的邀请码,果断用上。来上几张试用的图
我的域名列表
我的域名列表

域名转移
域名转移

订单管理
订单

域名搜索
域名搜索

购买域名之注册信息填写
注册信息填写

购买域名之付款
付款

略坑爹的是需要使用Google Wallet这玩意来付款。总体来说Google Wallet功能略简单,和其他大厂相比也木有什么特别的地方,价格也差不多。

一台电脑两个屏幕两套键鼠的实现方案

请仔细看标题,不是一套键鼠操作多个显示器,或者多台电脑。这里是把一台电脑分割成两台电脑,使用不同的键盘与鼠标,两个互相不干扰。
具体的实现过程请看下面。

必备条件

  • 一台Mac
  • 虚拟机软件: Parallels

实现思路
实现思路

一、使用Parallels 安装一个Win7
安装win7结果页面
我自己测试使用XP系统,会莫名使Parallels无法启动的问题,或者XP系统无法关闭的Bug,所以推荐使用Win7系统,当然了你的机器硬件性能需要足够才行。

二、设置启动参数
启动参数
这个参数主要是为了关闭鼠标同步功能,仅针对Parallels,本地测试版本为Parallels 9

三、启动win7
启动win7

四、挂载键盘与鼠标
选择菜单:Device -> External Device -> 选择你要在虚拟机下使用的键盘与鼠标

说明

  1. 使用Parallels可以使win7下的键盘与鼠标完全锁定在里面,不会跑出到外面的物理机上,这样就非常方便的达到隔离效果了。
  2. 有试过使用VirtualBox来实现这个需求,但是发现鼠标不会被限制在win7里面,不好使
  3. 在Windows下的Vmware暂时没有环境去试,但是估计应该也可以实现

PHP多版本共存方案

主版本安装

主版本主要通过lnmp.org的安装脚本来安装(这个实在是太方便了,如果自己折腾依赖实在是太痛苦了)
具体教程,请移步:http://lnmp.org

其他版本

这里以PHP 5.2.17 作为演示

  1. 下载两个源码包:
    php-5.2.17.tar.gz
    php-5.2.17-fpm-0.5.14.diff.gz

  2. 需要说明的是PHP在5.3之前,php-fpm都是通过第三文补丁的形式提供的,安装的时需要先将fpm的源码patch到PHP源码中去。

    1
    2
    
    tar zxvf php-5.2.17.tar.gz
    gzip -cd php-5.2.17-fpm-0.5.14.diff.gz | patch -d php-5.2.17 -p1
    

    如果是新服务器,会提示无patch命令,通过yum install patch安装下即可。

  3. 设置autoconf环境(为什么设置这个,具体还不了解)

    1
    2
    
    export PHP_AUTOCONF=/usr/local/autoconf-2.13/bin/autoconf
    export PHP_AUTOHEADER=/usr/local/autoconf-2.13/bin/autoheader
    
  4. 编译安装

    1
    2
    3
    4
    5
    
    cd php-5.2.17/
    ./buildconf --force
    ./configure --prefix=/usr/local/php-5.2.17 --with-config-file-path=/usr/local/php-5.2.17/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-fastcgi --enable-fpm
    make ZEND_EXTRA_LIBS='-liconv'
    make install
    
  5. 修改php-fpm.conf文件,配置监听IP及端口

    1
    
    <value name="listen_address">127.0.0.1:9001</value>
    
  6. 设置执行用户及用户组

    1
    2
    
    <value name="user">nobody</value>
    <value name="group">nobody</value>
    
  7. 启动php-fpm服务

    1
    
    /usr/local/php-5.2.17/sbin/php-fpm start
    
  8. Nginx 配置
    PHP 5.3.28 Nginx设置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    server
        {
            listen 80;
            #listen [::]:80 default ipv6only=on;
            server_name sososo.loc;
            index index.html index.htm index.php;
            root  /home/wwwroot/sososo.loc;
            sendfile off;
    
            #error_page   404   /404.html;
            location ~ [^/]\.php(/|$)
                {
                    # comment try_files $uri =404; to enable pathinfo
                    try_files $uri =404;
                    fastcgi_pass  unix:/tmp/php-cgi.sock; //lnmp 默认安装提供的是文件监听的方式
                    fastcgi_index index.php;
                    include fastcgi.conf;
                    #include pathinfo.conf;
                }
    
            location /nginx_status {
                stub_status on;
                access_log   off;
            }
        }
    

    PHP 5.2.17 Nginx设置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    server
        {
            listen 80;
            #listen [::]:80 default ipv6only=on;
            server_name soso.loc;
            index index.html index.htm index.php;
            root  /home/wwwroot/soso.loc;
            sendfile off;
    
            #error_page   404   /404.html;
            location ~ [^/]\.php(/|$)
                {
                    # comment try_files $uri =404; to enable pathinfo
                    try_files $uri =404;
                    fastcgi_pass  127.0.0.1:9001; //以IP及端口的形式监听
                    fastcgi_index index.php;
                    include fastcgi.conf;
                    #include pathinfo.conf;
                }
    
            location /nginx_status {
                stub_status on;
                access_log   off;
            }
        }
    

总结
安装多版本PHP时,需要理解几个重要的概念。
一、CGI
二、FastCGI
三、FPM
四、PHP-FPM

centos 6.5 vsftpd 配置

Vsftpd 安装
使用官方yum安装

1
yum install vsftpd

修改配置文件
配置文件地址:/etc/vsftpd/vsftpd.conf

1
2
3
4
5
6
## Set to "NO" ##
anonymous_enable=NO

## Uncomment ##
ascii_upload_enable=YES
ascii_download_enable=YES

修改成开机启动项

1
2
service vsftpd start
chkconfig vsftpd on

添加Ftp用户

1
2
useradd sample
passwd sample

结束
现在直接远程就可以连接了

Linode 服务器配置

昨天在网上看到Linode充5刀送50刀的活动(针对新用户),突然间心动下,所以就买了。
现在记录下服务器的折腾过程,防备后用。

一、新建账户

1
2
useradd -m Hack
passwd Hack

然后按提示输入密码即可

二、为用户添加sudo权限
1
echo -e "\nHack ALL=(ALL) ALL\n" >> /etc/sudoers

三、使用SSH密钥登录VPS