搭建 ngrok 服务实现内网穿透

本文有借鉴屈光宇的《搭建ngrok服务实现内网穿透》,感谢原作者分享智慧,本文对原文有修改。   我们经常会有「把本机开发中的 web 项目给朋友看一下」这种临时需求,为此专门在 VPS 上部署一遍就有点太浪费了。之前我通常是在 ADSL 路由器上配个端口映射让本机服务在外网可以访问,但现在大部分运营商不会轻易让你这么干了。一般小运营商也没有公网 IP,自己的路由器出口还是在局域网内,端口映射这种做法就不管用了。 之前我就想过能否借助拥有公网 IP 的主机中转来实现这种需求,后来发现已经有这样的软件了:ngrok。而且 ngrok 官网本身还提供了公共服务,只需要注册一个帐号,运行它的客户端,就可以快速把内网映射出去。不过这么好的服务,没多久就被墙了~ 好在 ngrok 是开源的,我在 VPS 上搭了一套服务自己用,一劳永逸地解决了内网穿透这个难题,这里记录一下过程。(注意:ngrok.com 提供的服务是基于 ngrok 2.0,github 上目前只有 1.0 的源码,二者功能和命令有一些区别,用的时候别搞混了) 编译 ngrok 我的 VPS 系统是 Ubuntu 14.04.2 LTS,首先装必要的工具: sudo apt-get install build-essential golang mercurial git 获取 ngrok 源码: BASHgit clone https://github.com/inconshreveable/ngrok.git ngrok### 请使用下面的地址,修复了无法访问的包地址git clone https://github.com/tutumcloud/ngrok.git ngrokcd ngrok 生成并替换源码里默认的证书,注意域名修改为你自己的。(之后编译出来的服务端客户端会基于这个证书来加密通讯,保证了安全性) BASHNGROK_DOMAIN=”imququ.com”openssl genrsa -out base.key 2048openssl req -new -x509 -nodes -key base.key -days 10000 -subj “/CN=$NGROK_DOMAIN” -out base.pem openssl genrsa -out server.key 2048openssl req -new -key server.key -subj “/CN=$NGROK_DOMAIN” -out server.csr openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt cp base.pem assets/client/tls/ngrokroot.crt 开始编译: sudo make release-server release-client 如果一切正常,ngrok/bin 目录下应该有 ngrok、ngrokd 两个可执行文件。 服务端 前面生成的 ngrokd 就是服务端程序了,指定证书、域名和端口启动它(证书就是前面生成的,注意修改域名): sudo ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain=”imququ.com” -httpAddr=”:8081″ -httpsAddr=”:8082″ […]

Tomcat 乱码

Tomcat 控制台乱码 JAVA_TOOL_OPTIONS,     -Dfile.encoding=UTF-8.     Tomcat 配置 解决乱码问题 server.xml  里面的 connector  改成: <Connector port=”8089″ protocol=”HTTP/1.1″ connectionTimeout=”20000″ redirectPort=”8443″ URIEncoding=”UTF-8″ useBodyEncodingForURI=”true” />  

Linux(Ubuntu)下MySQL的安装与配置

本文有参考ZuqingLi的《Linux(Ubuntu)下MySQL的安装与配置》,感谢分享智慧。本文在原文基础上有改动。   1)检查是否安装了MySQL sudo netstat -tap | grep mysql 若无反应,表示没有安装。   2)安装MySQL sudo apt-get install mysql-server mysql-client 安装过程中需输入用于管理MySQL数据库的密码(非系统用户)。   3)测试安装是否成功  sudo netstat -tap | grep mysql 或通过登录MySQL测试 mysql -uroot -p   4)MySQL的一些简单操作 启动服务: sudo start mysql 停止服务:  sudo stop mysql 修改管理员密码:  sudo mysqladmin -u root password newpassword 设置远程访问(默认本地3306端口监听,拒绝其他ip访问): sudo vi /etc/mysql/my.cnf 找到以下内容,并注释 bind-address = 127.0.0.1   5)使用apt-get insatall 方式安装后的MySQL目录结构: 数据库存放目录:/var/lib/mysql/ 配置文件存放目录: /usr/share/mysql 相关命令存放目录: /usr/bin(mysqladmin mysqldump等命令) 启动脚步存放目录: /etc/rc.d/init.d/  

Java 运算符优先顺序

下面的表将所有运算符按照优先级的不同从高到低排列。 优先级 运算类型 关联性 运算符 19 圆括号 n/a ( … ) 18 成员访问 从左到右 … . … Computed Member Access 从左到右 … [ … ] new (带参数列表) n/a new … ( … ) 17 函数调用 从左到右 … ( … ) new (无参数列表) 从右到左 new … 16 后置递增(运算符在后) n/a … ++ 后置递减(运算符在后) n/a … — 15 逻辑非 从右到左 ! … […]