配置node服务器
После покупки сервера используйтеXshell
ссылка на сервер.
1. Установкаnvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
或者
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
После установки закройте и перезапуститеXshell
.
2. Установите узел с nvm
// 查看当前可安装node版本
nvm ls-remote
// 选择'nodejs.org'官网LTS稳定版本
nvm install v10.16.0
// 出现这样的显示表示安装好了,默认的是v10.16.0的node版本,6.9.0的npm版本
Now using node v10.16.0 (npm v6.9.0)
Creating default alias: default -> v10.16.0
// 可以使用命令查看版本
node --version
// nvm可以安装多个node版本
nvm install v10.11.0
// 可以使用命令查看安装了多少个node版本
nvm ls
// 可以使用命令指定默认的node版本,如果安装了多个node版本,一定要指定一个默认的版本
nvm alias default v10.11.0
// 如果你不想使用默认,只是零时用一下,可以使用命令
nvm use v10.11.0
3. Установите нгинкс
// 查看服务器系统版本
$ cat /etc/redhat-release
// 安装epel-release 源
yum install epel-release -y
// 打开源配置
vim /etc/yum.repos.d/nginx.repo
// 在配置中设置nginx安装源,具体可以参考nginx官网文档('http://nginx.org/en/linux_packages.html#stable')
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
// 安装nginx
yum install nginx -y
// 查看nginx是否安装成功,成功的话会显示路径
whereis nginx
4. Настройте nginx
// 设置开机启动
systemctl enable nginx
// 启动服务,重启是'systemctl restart nginx',停止是 'stop'
systemctl start nginx
// 重新加载,因为一般重新配置之后,不希望重启服务,这时可以使用重新加载
systemctl reload nginx
// 查看服务器状态
systemctl status nginx
// 如果CentOS7 系统打开了防火墙,还需打开防火墙端口
firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --reload
firewall-cmd --list-service
// 如果要使用反向代理,CentOS7 需要打开网络访问权限
setsebool httpd_can_network_connect 1
5. Разверните тестовый проект
// 创建文件夹
mkdir server
// 进入文件夹
cd server
// 创建js文件
vim home.js
// 编写测试代码,注意,这里的ip地址一定要配置成0.0.0.0,如果配置成127.0.0.1,外网会报错端口3000链接不通
const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`服务器运行在 http://${hostname}:${port}/`);
});
// 启动
node home.js
// 如果报错'Unhandled 'error' event',可能是端口被占用了,先查看端口占用情况
ps -ef|grep node
// 如果有占用,删除占用,'xxxx'为'root'后的数字
skill -9 xxxxx
появляться:服务器运行在 http://0.0.0.0:3000/
Это означает, что узел работает успешно. После успешного запуска войдите в Alibaba Cloud, чтобы настроить фон.Правила группы безопасности
Конфигурация успешна следующим образом:
允许 自定义 TCP 3000/3000 IPv4地址段访问 0.0.0.0/0 node后台端口
Затем вы можете ввести общедоступный IP-адрес вашего сервера в адресную строку браузера плюс:3000
, появляется успешноHello World
Это означает, что конфигурация группы безопасности прошла успешно.
6. Настройте nginx
// 进入 '/etc/nginx' 文件夹,查看下 'nginx.conf' 配置文件
cd /etc/nginx
ls
vim nginx.conf
// 低版本的nginx 'nginx.conf' 文件夹里有以下内容
// # include /etc/nginx/conf.d/*.conf;
// # include /etc/nginx/sites-enabled/*;
// 去掉 '#' 号
// 创建nginx配置文件,文件名随意,我一般喜欢用项目名加端口号,比如 'wxServer-3000'
vim /etc/nginx/conf.d/wxServer-3000.conf
// 编写配置文件代码
# 项目名字
upstream wxServer {
# 需要代理的node端口号,也就是你写的端口号
server 0.0.0.0:3000;
# nginx最大连接数
keepalive 8;
}
# nginx服务器实例
server {
# 代理出去的端口号,默认Http协议的80端口,如果配置其它端口需要更改 SELinux 的设置
listen 0.0.0.0:80;
# 别人访问的域名或者ip地址,多个用空格隔开
server_name lzf.fun www.lzf.fun;
# 错误日志存放地址
access_log /var/log/nginx/wxServer-3000.log;
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;
proxy_set_header X-NginX-Proxy true;
# proxy_pass 设置反向代理用服务器域名,不使用反向代理,直接用上面upstream的名字就可以了
proxy_pass http://wxServer/;
proxy_redirect off;
}
}
// 保存配置文件后,检查是否编写错误
nginx -t
// 出现以下内容为正确
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
// 重新加载nginx服务器
systemctl reload nginx
// 在阿里云后台开启80端口的安全组,然后在浏览器输入域名,可以看到 'Hello World' 就表示nginx配置成功了
7. Настройте PM2
// 安装PM2
npm install pm2 -g
// 进入你的node项目存放的文件夹,pwd是你的文件夹路径
cd pwd
// 启动pm2,--watch监听,每次改动代码自动启动,-i 1 启动一个实例,根据服务器又几个核心设置
// -i 0 则会根据机器当前核数自动开启尽可能多的进程
// 为了安全性和性能考虑,--watch 这个指令最好不要在线上使用
pm2 start home.js --watch -i 1
// 查看pm2
pm2 ls
// 查看错误日志
pm2 logs
// 重启
pm2 restart home.js
// 停止,id通过查看获得
pm2 stop home|id
// 删除
pm2 delete home|id
// 了解程序的详细信息
pm2 describe home|id
// 关闭Xshell,刷新域名,还可以看见 'Hello World' 表示配置成功
Советы: после напоминания начальника, возможно, потребуется совместимость PM2 с кодом ES6. Конкретные решения по совместимости см.Using transpilers with PM2а такжеNodeJS использует Babel Support ES6 и PM2 для использования Babel
链接微信公众号接口配置
8. Напишите код локального узла
const Koa = require('koa')
const cors = require('koa2-cors')
const Router = require('koa-router')
const crypto = require('crypto')
const app = new Koa()
// 微信配置
const config = {
wechat: {
appID: 'appID',
appsecret: 'appsecret',
token: 'Maya'
}
}
// 使用koa2-cors解决跨域问题
app.use(
cors({
origin: ctx => {
if (ctx.url === '/test') {
return false
}
return '*'
},
exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'],
maxAge: 5,
credentials: true,
allowMethods: ['GET', 'POST', 'DELETE'],
allowHeaders: ['Content-Type', 'Authorization', 'Accept']
})
)
// 给微信验证的
const wxServer = new Router()
wxServer.get('/', async ctx => {
const { signature, timestamp, nonce, echostr } = ctx.query
const token = config.wechat.token
let hash = crypto.createHash('sha1')
const arr = [token, timestamp, nonce].sort()
hash.update(arr.join(''))
const shasum = hash.digest('hex')
if (shasum === signature) {
return (ctx.body = echostr)
}
ctx.status = 401
ctx.body = 'Invalid signature'
})
// 装载所有路由
const router = new Router()
router.use('/forWx', wxServer.routes(), wxServer.allowedMethods())
// 加载路由中间件
app.use(router.routes()).use(router.allowedMethods())
app.listen(3000)
console.log('[demo] start-quick is starting at port 3000')
9. Проверьте, в порядке ли локальный код, путем проникновения в интрасеть.
1. ПройтиlocaltunnelНачать проникновение в интранет,不推荐
, возможен успешный запуск, но не удается установить связь с доменным именем
// 安装
npm install -g localtunnel
// 开启本地服务器
lt --port 3000
2. ПройтиnatappНачать проникновение во внутреннюю сеть, конфигурация занимает точку
в состоянии пройтиИнтранетный инструмент проникновения NatApp!В этой статье устанавливается конфигурация,
Если ваш код записан на открытый порт 3000, то лучше всего настроить порт 3000
подсказки: Если вы видите успешное связывание туннеля, но запрашивает ошибку соединения порта 127.0.0.1:3000, это не означает, что конфигурация установки не удалась, вам нужно запустить код
После успешной настройки установки запустите
node home.js
можно успешно просматривать в браузереInvalid signature
Указывает, что проникновение в интрасеть прошло успешно.
10. Откройте тестовую учетную запись общедоступной платформы WeChat.
существуетПубличная микроканальная платформа для управления тестированиемстраницу, информацию о конфигурации интерфейса и URL-адрес.natapp
Запускаю доменное имя плюс forWx, например, мое доменное имя
http://qf7rja.natappfree.cc/forWx
Токен настраивается вами и может быть написан так, как вам нравится, но он должен соответствовать Токену в вашем локальном коде.Я использую здесьMaya
Нажмите «Отправить», чтобы показать, что конфигурация прошла успешно.
11. Ссылка на сервер Настройка интерфейса общедоступной учетной записи WeChat
Через вышеуказанную тестовую учетную запись проверяется, что с кодом проблем нет, и конфигурация интерфейса может быть настроена успешно.Остальное - загрузить код на сервер, и выбрать rz и sz для установки.Конечно, это лучше использовать xftp
// 安装
yum install lrzsz -y
// 上传,执行命令,选择打包文件
rz
// 下载,filename是你打包的服务器文件夹,或者单个文件
sz filename
После успешной загрузки расстегните его и очистите предыдущиеHello World
код, очистите PM2 и повторно повесьте текущий код на PM2
Введите доменное имя + forWx в браузере, и он появитсяInvalid signature
Указывает на успех.Если он не появляется, конфигурация не удалась, и необходимо проверить причину.
Войдите в учетную запись на общедоступной платформе WeChat, выберите «Базовая конфигурация» -> «Конфигурация сервера», а затем аналогичным образом настройте тестовую учетную запись.
Нажмите «Отправить», чтобы показать, что конфигурация прошла успешно.
конец
SHH ~~~ Я сделал длинное дыхание и изучал в течение длительного времени. Сервер узла был успешно настроен, и он был связан с конфигурацией интерфейса общего пользования, и у меня все еще есть учетная запись.
Вы можете использовать тестовую учетную запись для локального написания кода, а затем загрузить его на сервер для проверки.
Причина этого в том, что не помешает, если тестовая учетная запись будет сломана, а другая будет исправлена в мгновение ока, а если сервер будет сломан, настроить его будет проблематично.
Остальное — разработка конкретных сервисов, как получить AccessToken, автоматически отвечать на сообщения, настраивать меню и т.д.
Ссылаться на
Alibaba Cloud настраивает обратный прокси-сервер node.js + Nginx Установите и настройте Nginx с yum под CentOS 7 Nodejs WeChat Public Number Development --1. Доступ к WECHAT общественное число