使用 Proxifier 解决系统级的代理问题

先前有写过这样一篇文章《Fiddler 让 Win10 自带日历客户端连接谷歌账户》

然而 Fiddler 毕竟是跟踪流量用的,本业并不是代理,所以在代理设置上还是捉襟见肘的。 今天找到了 Proxifier 这个软件,就是为了代理而生的,非常好用。

先说一下使用场景,我目前的需求是在 Mac 下同步 Google Drive,虽然登录是没问题,然而连接就是失败,官方客户端也没有提供 http/socks 代理设置之类的,也是无语。于是就找到了这个东西。

介绍

Proxifier allows network applications that do not support working through proxy servers to operate through a SOCKS or HTTPS proxy and chains. The most advanced proxy client 。https://www.proxifier.com/index.htm

Proxifier是一款功能非常强大的socks5客户端,可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链。支持 64位系统,支持Xp,Vista,Win7,MAC OS ,支持socks4,socks5,http代理协议,支持TCP,UDP协议,可以指定端口,指定IP,指定域名,指定程序等运行模式,兼容性非常好,和SOCKSCAP属于同类软件,不过SOCKSCAP已经很久没更新了,不支持64位系统。 有许多网络应用程序不支持通过代理服务器工作,Proxifier 解决了这些问题和所有限制,让您有机会不受任何限制使用你喜爱的软件。此外,它让你获得了额外的网络安全控制,创建代理隧道,并添加使用更多网络功能的权力。

特性如下:

  • 通过代理服务器运行任何网络应用程序。对于软件不需要有什么特殊配置;整个过程是完全透明的。
  • 通过代理服务器网关访问受限制的网络。
  • 绕过防火墙的限制。
  • ”隧道”整个系统 (强制所有网络连接,包括系统工作都通过代理服务器连接)。
  • 通过代理服务器解析 DNS 名称。
  • 灵活的代理规则,对于主机名和应用程序名称可使用通配符。
  • 通过隐藏您的 IP 地址的获得安全隐私。
  • 通过代理服务器链来工作,可使用不同的协议。
  • 查看当前网络活动的实时信息(连接,主机,时间,带宽使用等)。
  • 维护日志文件和流量转储。
  • 获得详细的网络错误报告。

Debian 生成新的交换分区

先看我在推特上的这条吐槽:

https://twitter.com/kelvinbloodzz/status/881719864989065217

嘛,事情是这样的。 我在阿里云的机器上编译 PHP,编译到中途就报了错误——内存不足。于是就纳闷了,这问题咋解决啊,难道要我换台机器?虚拟内存在哪呢?然后就是这样了:

才知道原来阿里云没有为我们默认创建交换分区。这个,算是个坑吧。

所以下面来看怎么添加交换分区。

给linux增加swap主要有两种方法,1是增加swap文件,2是增加swap分区。

在你有单独硬盘可以挂载的时候,才可以用第二种方式。具体根据你的环境操作来选吧。

增加 swap 文件

  • free查看系统内存及交换分区的使用率

      用法:free  -m   #以兆为单位查看
      free –m
    
  • 使用虚拟设备生成空文件

      dd  if=/dev/zero  of=目录/文件名  bs=容量  count=次数
      dd  if=/dev/zero of=/swapfile bs=100M count=10  #表示增加1G虚拟内存
    
  • 生成交换分区文件

      mkswap  /swapfile 
    
  • 激活交换分区

      swapon /swapfile
      swapon -s //检查是否生效
    
  • 交换分区永久生效

    在文件/etc/rc.local中添加一行

      swapon   /swapfile    #重启系统生效
    

如果要去掉这个新的交换分区,用如下命令:

/sbin/swapoff   /swapfile 

增加 swap 分区

增加 swap 分区

  • 设置分区

      mkswap  /dev/sdc
    
  • 激活分区

      swapon /dev/sdc
      swapon -s //检查是否生效
    
  • 交换分区永久生效

      echo /dev/sdc swap swap defaults 0 0  >> /etc/fstab //将/dev/sdc自动挂载成Swap写入fstab文件里
    

常见错误

  1. 在 openvz 的机器中,你可能会遇到这样一个错误:

     swapon: /swapfile: swapon failed: Operation not permitted
    

    对于这个问题我还没有好的解决办法,如果你有解决办法的话欢迎和我联系。

参考资料


PHP模块加载失败

当我们编译好 php 后,启动 php-fpm 时会出现这样一系列的模块加载失败的错误:

NOTICE: PHP message: PHP Warning:  Module 'bcmath' already loaded in Unknown on line 0
NOTICE: PHP message: PHP Warning:  Module 'curl' already loaded in Unknown on line 0
...

如图:

或者是查看 php 版本时,php -v 也会出现这样的错误。

PHP有两种方式添加扩展模块, 一种是直接编译进了PHP,另外一种是通过共享模式添加模块,并在php.ini配置文件中配置相应的模块。 在编译时的区别如下:

以下是直接编进内核的示例:

./configure --prefix /usr/share/php7  \
    --enable-mbstring \
    --with-bz2 \
    --with-curl \
    --with-xsl

以下是共享模式添加的示例:

./configure --prefix /usr/share/php7  \
    --enable-mbstring \
    --with-bz2=share \
    --with-curl=share \
    --with-xsl

以上问题出现的原因是我们需要的模块已经编译进PHP了,但是我们通过共享模块再次加载了这些模块,这样就导致重复加载。

解决方案:修改php.ini配置文件,注释掉相应的模块配置

;extension=pcre.so
;extension=spl.so
;extension=simplexml.so
;extension=session.so
;extension=exif.so

参考资料

参考资料


nginx 413 Request Entity Too Large 错误解决方法

今天在网站上传文件时,出现这个错误

413 Request Entity Too Large 

解决办法是打开nginx主配置文件nginx.conf,找到http{}段,修改或者添加下面的字段

client_max_body_size 30m;

然后重启nginx

./reload.sh

顺便贴一下我的 nginx.conf 配置文件的 http 设置。

http {
    access_log off;
    log_format default_format '$time_iso8601|$remote_addr|$request_method|$status|$request_length|$request_time|$http_referer|$http_user_agent|$request_uri';

    fastcgi_cache_path /var/local/nginx/fastcgi_cache/one_hour keys_zone=fastcgi_1h:16m levels=1:2 inactive=1h max_size=1g;

    limit_conn_zone $binary_remote_addr zone=conn_perip:16m;
    limit_req_zone $binary_remote_addr zone=req_perip:16m rate=2r/s;

    limit_rate_after 2048k;
    limit_rate  512k;

    client_header_timeout 8s;
    client_body_timeout 8s;
    client_max_body_size 32m;

    server_names_hash_bucket_size 64;

    gzip on;
    gzip_min_length 16384;
    gzip_types text/javascript text/css text/xml text/plain application/json application/x-javascript application/xml;

    include       mime.types;
    sendfile      on;

    keepalive_timeout  30 30;

    upstream services {
        server localhost:8090;

        keepalive  16;
    }

    include vhost/*.conf;
}

Mac 下 MySQL 安装以及 phpmyadmin 配置

MySQL 安装

安装 MySQL 有很多种方式,包括 源代码安装、homebrew安装、还有直接下载dmg安装包安装。

一切从简把,直接在官网上下载 dmg 文件,双击安装。https://dev.mysql.com/downloads/mysql/

一路无脑安装即可。在系统偏好里开启。 一般还是不要开机自启动,因为 mysql 比较耗内存,像我这的 air 就比较吃力了。

phpmyadmin 配置

phpMyAdmin. 由php开发的一个 MySQL 管理工具。在官网上下载源代码:https://www.phpmyadmin.net/downloads/

下载到本地后把文件 「config.sample.inc.php」 拷贝一份,重命名为 「config.inc.php」

找到这一行:

$cfg['Servers'][$i]['host'] = 'localhost';

改为:

$cfg['Servers'][$i]['host'] = '127.0.0.1';

配置好 nginx/apache,就能够跑起来了。 我用的是 IDEA 自带的配置,就不那么费神了。下面是IDEA中的配置方法,可以做个参考。