CVM 上的操作记录。
CentOS 7.2
ngrok 服务器搭建
可参考 imike 的CentOS下部署Ngrok服务器。
1 2
| sudo yum update sudo yum install build-essential golang mercurial git
|
1 2
| git clone https://github.com/inconshreveable/ngrok.git ngrok cd ngrok
|
- 生成证书并替换代码中默认证书,修改域名为解析到云主机的域名。
1 2 3 4 5 6 7
| NGROK_DOMAIN="cross.forec.cn" openssl genrsa -out base.key 2048 openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem openssl genrsa -out server.key 2048 openssl 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
,编译结束后 bin
目录下会有 ngrokd
和 ngrok
两个可执行文件,对应服务器和客户端。
- 不同系统使用的客户端需要重新编译
- windows:
sudo GOOS=windows GOARCH=amd64 CGO_ENABLED=0 make release-client
- arm:
sudo GOOS=linux GOARCH=arm CGO_ENABLED=0 make release-client
- mac:
sudo GOOS=darwin GOARCH=amd64 make release-client
- 设置域名解析,增加记录
A
,主机记录为 cross
,记录值为云主机公网 IP。
- 启动服务器,下面命令指定 http 端口映射到
8081
,https
映射到 8082。
1
| ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="cross.forec.cn" -httpAddr=":8081" -httpsAddr=":8082"
|
域名解析
将 http://blog.forec.cn 解析至 https://forec.github.io。
- 向解析列表添加一条
CNAME
记录,主机记录为 blog
,记录值为 forec.github.io
。
- 在 Github 博客仓库中根目录添加一个文件,文件名为
CNAME
,文件内容为 blog.forec.cn
。
开启 IPv6
- 新建
/etc/modprobe.d/ipv6.conf
,添加 options ipv6 disable=0
。
- 向自启动脚本添加
sysctl -w net.ipv6.conf.all.disable_ipv6=0
。
- 重启,或直接运行上面的命令,观察
ifconfig
结果。
使用 tunnelbroker 分配 IPv6 地址
- 在 tunnelbroker 注册,并分配一个 tunnel,填入 VPS 外网 IPv4 地址。
- 在 tunnel 的 example configuration 选项卡下选择
Linux-route2
,将生成的脚本拷贝到自启动脚本中。
- 重启,观察
ifconfig
,应增加一个 he-ipv6
网卡,并可看到对应 IPv6 地址。
Nginx 配置
- 从官网获得 nginx 最新版本链接,wget 到本地
- 安装编译依赖包:
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel
- 安装 nginx 依赖包:
yum install GeoIP gd libXpm libxslt
- 编译、安装
1 2 3 4 5
| tar -zxvf nginx-1.10.2.tar.gz cd nginx-1.10-2 ./configure make make install
|
/usr/local/nginx/sbin/nginx
运行,在浏览器输入 IP 观察是否显示欢迎页
- 向
/etc/profile
增加环境变量并 source /etc/profile
更新
1 2
| PATH=/usr/local/nginx/sbin:$PATH export PATH
|
为 Ngrok 做反向代理
- 要令
monitor.cross.forec.cn
作为 ngrok 代理,该域名对应的 80 端口转发至本地 9999 端口。在 /usr/local/nginx/conf
增加配置文件 ngrok_monitor.conf
。
1 2 3 4 5 6 7 8 9 10 11 12
| server{ listen 80; server_name monitor.cross.forec.cn; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host:8081; proxy_set_header X-Nginx-Proxy true; proxy_set_header Connection ""; proxy_pass http://127.0.0.1:9999; } }
|
安装 MySQL
- 腾讯云 CentOS 7.2 的 yum 源不提供
mysql-server
- 下载 mysql 的 repo 源:
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
- 安装源:
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
- 安装 mysql :
sudo yum install mysql-server
- 启动 mysqld 服务:
systemctl start mysqld.service
- 修改密码:
mysqladmin -u USER -p password PASSWORD
或使用 root 账户登入 mysql,执行
1 2 3
| USE mysql; UPDATE user SET password=PASSWORD('123456') WHERE user='root'; FLUSH PRIVILEGES;
|
- 开机启动 mysqld 服务:
systemctl enable mysqld.service
WordPress + Nginx 配置
1 2 3 4 5 6 7 8 9
| if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; }
|
Nginx HTTPS 配置
- 安装 openssl 和 openssl-devel:
yum install openssl openssl-devel
- 颁发证书
1 2 3 4 5
| cd /usr/local/nginx/conf openssl genrsa -des3 -out server.key 1024 openssl req -new -key server.key -out server.csr openssl rsa -in server.key -out server_nopwd.key openssl x509 -req -days 365 -in server.csr -signkey server_nopwd.key -out server.crt
|
- 增加配置文件
wordpress_https.conf
,除下面部分,其它和 wordpress 配置文件相同
1 2 3 4 5 6
| server { listen 443; sever_name forec.cn; ssl_certificate /usr/local/nginx/conf/server.crt; ssl_certificate_key /usr/local/nginx/conf/server_nopwd.key; }
|
OpenVPN Server
1
| yum install epel-release
yum install openvpn easy-rsa -y
cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn
|
- 编辑
/etc/openvpn/server.conf
1 2 3 4 5 6
| dh dh2048.pem push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" user nobody group nobody
|
1
| mkdir -p /etc/openvpn/easy-rsa/keys
cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa
cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
|
- 编辑
/etc/openvpn/easy-rsa/vars
1 2 3 4 5 6 7 8 9 10
| export KEY_COUNTRY="US" export KEY_PROVINCE="NY" export KEY_CITY="New York" export KEY_ORG="DigitalOcean" export KEY_EMAIL="sammy@example.com" export KEY_OU="Community"
# X509 Subject Field export KEY_NAME="server" export KEY_CN=openvpn.example.com
|
1
| cd /etc/openvpn/easy-rsa
source ./vars
./clean-all
./build-ca
./build-key-server server
./build-dh
cd /etc/openvpn/easy-rsa/keys
cp dh2048.pem ca.crt server.crt server.key /etc/openvpn
|
1
| cd /etc/openvpn/easy-rsa
./build-key client
|
1
| yum install iptables-services -y
systemctl mask firewalld
systemctl enable iptables
systemctl stop firewalld
systemctl start iptables
iptables --flush
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables
sed -n '0a net.ipv4.ip_forward = 1' /etc/sysctl.conf
systemctl restart network.service
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| client dev tun proto udp remote your_server_ip 1194 resolv-retry infinite nobind persist-key persist-tun comp-lzo verb 3 ca /path/to/ca.crt cert /path/to/client.crt key /path/to/client.key
|
- 启动:
sudo openvpn --config ~/path/to/client.ovpn
- 结合客户端/服务器输出的错误信息,对双方配置文件再做调整。
原创作品,允许转载,转载时无需告知,但请务必以超链接形式标明文章原始出处(https://forec.github.io/2016/11/02/cloud-virtual-machine-config/) 、作者信息(Forec)和本声明。