安装gcc
yum install gcc

安装git
yum install git

安装GO语言环境
yum install go
go version

下载ngrok源码
cd /usr/local/src
git clone https://github.com/inconshreveable/ngrok.git
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=flask.huchangyi.com" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=flask.huchangyi.com" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

将新生成的证书,替换掉assets/client/tls下的证书
yes|cp rootCA.pem assets/client/tls/ngrokroot.crt
yes|cp device.crt assets/server/tls/snakeoil.crt
yes|cp device.key assets/server/tls/snakeoil.key

编译生成ngrokd(服务端)
这里是交叉编译,linux系统GOOS=linux,64位系统GOARCH=amd64,32位系统GOARCH=386
当前系统可用go env查看
GOOS=linux GOARCH=amd64 make release-server

启动服务端(/usr/local/src/ngrok目录下)
nohup /usr/local/src/ngrok/bin/ngrokd -tlsKey="assets/server/tls/snakeoil.key" -tlsCrt="assets/server/tls/snakeoil.crt" -domain="flask.huchangyi.com" -httpAddr=":8081" -httpsAddr=":8082" -tunnelAddr=":8083" &

添加新的域名解析
*.flask

编译生成ngrok(客户端)
linux版客户端: make release-client
windows客户端32位: GOOS=windows GOARCH=386 make release-client
windows客户端64位: GOOS=windows GOARCH=amd64 make release-client
MAC: GOOS=darwin GOARCH=amd64 make release-client

客户端执行
nohup /home/ngrok/bin/ngrok -config /home/ngrok/bin/ngrok.cfg -proto tcp 22 &
nohup /home/ngrok/bin/ngrok -subdomain rasp -config /home/ngrok/bin/ngrok.cfg 80 &
或者
nohup /home/ngrok/bin/ngrok -subdomain rasp -config /home/ngrok/bin/ngrok.cfg start http https ssh

配置文件格式(ngrok.cfg)

server_addr: "flask.huchangyi.com:8083"
trust_host_root_certs: false
tunnels:
  http:
    subdomain: "www"
    proto:
      http: "8090"
      
  https:
    subdomain: "www"
    proto:
      https: "8091"
 
  ssh:
    remote_port: 3333
    proto:
      tcp: "22"

编译树莓派上的ngrok客户端
将刚才用来编译ngrok服务端的ngrok源码文件夹全部复制到树莓派上:
cd ./ngrok
make release-client
出错时
把源码目录下bin/go-bindata删除,然后执行make release-client
直接下载已经编译好的
wget http://huchangyi.com/doc/ngrok-rasp.zip
unzip ngrok-rasp.zip
mv ngrok-rasp ngrok
vim /etc/rc.local
bash /home/ngrok/start-ngrok.sh

格式化存储卡
Panasonic_SDFormatter

烧录镜像
Win32DiskImager
write

默认密码
pi
raspberry

切换命令行
空格选中
sudo raspi-config
boot options

启用root
sudo passwd root
sudo passwd --unlock root
su
reboot

键盘定义
raspi-config
Generic 104-key PC
other
chinese
Thedefaultforthekeyboardlayout
NO compose key

连接wifi
查看射频端口
rfkill list
rfkill unblock all
查看网络状态
ifconfig
ifconfig -a
安装网卡驱动(如果没有)
apt-get install wireless-tools wpasupplicant firmware-realtek
启动网卡
ifconfig wlan0 up
设置开机启动
vim /etc/rc.local
rfkill unblock wifi
ifconfig wlan0 up
查看可连接wifi
iwlist wlan0 scan |grep 360wifi
快捷配置
wpa_passphrase 360wifi 12345678
配置文件配置
vim /etc/network/interfaces
vim /etc/wpa_supplicant/wpa_supplicant.conf
ifconfig wlan0 up
刷新配置文件
wpa_cli reconfigure
systemctl restart networking
参考资料

安装vim
apt-get install vim

开启ssh
cd /
systemctl enable ssh
systemctl restart ssh

启用root的ssh
vim /etc/ssh/sshd_config
PermitRootLogin yes
reboot

中文环境
sudo apt-get install ttf-wqy-zenhei
raspi-config
change_locale
zh_CN.UTF-8

连接3.5寸LCD屏幕
参考资料
https://github.com/goodtft/LCD-show

0、PM2简介
pm2是可以用于生产环境的Node.js的进程管理工具,
并且它内置一个负载均衡。

1、 卸载旧版npm
npm uninstall npm -g

2、安装gcc
yum install gcc gcc-c++

3、自建一个文件夹下载node
mkdir npm
cd npm
wget https://npm.taobao.org/mirrors/node/v10.14.1/node-v10.14.1-linux-x64.tar.gz

4、解压
tar -xvf node-v10.14.1-linux-x64.tar.gz
mv node-v10.14.1-linux-x64 node

5、添加环境变量
vi /etc/profile
export NODE_HOME=/home/npm/node
export PATH=$NODE_HOME/bin:$PATH
注意!! NODE_HOME后面的值要添加到自己的node解压的路径

6、刷新配置
source /etc/profile

7、看看自己的版本情况
node -v
npm -v

8、常用命令

设置启动应用的显示名称

pm2 start app.js --name <app_name>

监控应用目录,一旦有文件发生更改就立刻重启应用

pm2 start app.js --watch

重启

pm2 restart app.js

查看所有进程信息(app_name、app_id等)

pm2 [list|ls|status]

查看所有命令

pm2 --help

#or

pm2 -h