在centos7.6上部署前后端分离项目Nginx反向代理vue.js2.6+Tornado5.1.1,使用supervisor统一管理服务

简介: 这一次使用vue.js+tornado的组合来部署前后端分离的web项目,vue.js不用说了,前端当红炸子鸡,泛用性非常广,无论是单页应用,还是混合式开发app,亦或是微信小程序开发,样样得心应手,tornado最近的风头有点被新锐框架sanic抢走了,但是作为老牌的异步非阻塞框架,其内置了支持epoll/kqueue 等高效网络库,而具备了处理高并发的能力并且开发效率也不低,这一次tornado作为承载后端压力的角色。

这一次使用vue.js+tornado的组合来部署前后端分离的web项目,vue.js不用说了,前端当红炸子鸡,泛用性非常广,无论是单页应用,还是混合式开发app,亦或是微信小程序开发,样样得心应手,tornado最近的风头有点被新锐框架sanic抢走了,但是作为老牌的异步非阻塞框架,其内置了支持epoll/kqueue 等高效网络库,而具备了处理高并发的能力并且开发效率也不低,这一次tornado作为承载后端压力的角色。

首先部署前端,将测试好的vue.js2.6项目打包,值得一提的是,在生产环境并不需要node.js服务,因为利用vue.js的特性可以对前端页面进行打包,使其成为一个纯静态页包,上线后利用nginx对其代理即可,既方便又安全。在项目目录下执行npm run build命令,在执行之前,先把conifg目录下index.js中的bulid配置../dist改成./dist

执行命令后,会在项目的config目录下的dist目录生成静态页,将dist目录上传到服务器的/root目录下

运行 chmod 755 /root/dist 对项目文件授权

然后,在线上安装nginx

#设置源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

#安装
yum install -y nginx

#启动服务
systemctl start nginx.service

服务器需要暴露80端口,此时,测试一下,看看能否显示欢迎页

没有问题,这时修改一下nginx 配置文件 vim /etc/nginx/conf.d/default.conf 增加下面的配置,这里前端服务默认监听80端口

server {
    listen       80;
    server_name  localhost;

    access_log      /root/md_vue_access.log;
    error_log       /root/md_vue_error.log;


    client_max_body_size 75M;


    location / {

        root /root/dist;
        index index.html;
        try_files $uri $uri/ /index.html;

    }
    
    error_log    /root/dist/error.log    error;

}
#继续修改配置
vim /etc/nginx/nginx.conf
将第一行改为 user root;

改好后,重启nginx服务

systemctl reload nginx.service

每次修改nginx配置一定要重启服务,否则修改不会生效

访问一下,看看效果

至此,前端就部署好了,是不是很简单呢?这一次我们摒弃了老美多商城丑陋而原始的模板,采用响应式设计的新模板,兼容任意大小屏幕,并且还可以打包成apk,简直棒

接着,我们来部署后端,首先安装python3,需要注意的是centos自带python2.7,当装软件的时候千万不要影响这个python2.7,因为系统很多东西都依赖python2,所以我们只要python2和python3共存就可以了

yum install epel-release

yum install python36

wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py

python3 get-pip.py

pip3 install pymysql

pip3 install pillow

pip3 install pycryptodome

pip3 install tornado==5.1.1

pip3 install sqlalchemy

将tornado项目上传到/root/mytornado下,修改项目权限:chmod -R 755 /root/mytornado 然后将项目的debug模式关闭,并且修改端口号为8001,同时阿里云暴露8001端口,进行项目根目录,启动服务:python3 server.py,检查一下

没有问题,此时修改nginx配置文件,用nginx对tornado进行反向代理,新建一个配置文件

vim /etc/nginx/conf.d/tornado.conf
upstream tornado {
    server 127.0.0.1:8001;
}

server {
    listen   8000;
    root /root/mytornado;
    index server.py index.html;

    server_name server;

        # 静态文件直接由Nginx处理
    location /static/{
        alias /root/mytornado/static/;
        expires 24h;
    }
    location /{
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        # 把请求方向代理传给tornado服务器,负载均衡
        proxy_pass http://tornado;
    }

}

该配置的意思就是由nginx监听8000端口,并且将请求反向代理至tornado服务,这里我们只起了一个8001的服务,还可以启动更多,这就是传统意义上的负载均衡

重启一下nginx

systemctl restart nginx.service

访问服务器的8000端口,阿里云也别忘了暴露一下8000

最后,每次手动在命令行启动应用是比较麻烦的,我们还需要一个能够方便的管理服务进程的工具,包括自动重启进程等,而Supervisor的作用在这里就可以体现了。我们使用它来管理这个Tornado web server相关的进程

安装supervisor

yum install epel-release
yum install -y supervisor

生成配置文件

supervisord -c /etc/supervisord.conf 

修改配置文件

然后修改配置文件 vim /etc/supervisord.conf 将下面几行的注释解开

[inet_http_server]         ; inet (TCP) server disabled by default
port=*:9001        ; (ip_address:port specifier, *:port for all iface)
username=user              ; (default is no username (open server))
password=123               ; (default is no password (open server))

意思是将web服务页面打开,需要注意ip地址要写*,否则外网访问不了,而username和password就是登录服务页面的用户名和密码,可以改的复杂一点,另外阿里云也需要向外网暴露一下9001端口

然后在配置文件末尾加上tornado的配置

[program:mytornado]
command=python3 /root/mytornado/server.py --port=8001
directory=/root/mytornado
autorestart=true
redirect_stderr=true

保存文件退出后,启动supervisor服务

supervisord -c /etc/supervisord.conf

此时,将刚刚手动启动的tornado服务关闭,然后访问服务器的9001端口,用配置文件中的账号和密码登录

这样就可以在管理页面中控制tornado服务了,同时supervisor还赋予了守护进程模式,方便服务拉起

需要注意的是,当修改了supervisor的配置,想要生效就得重启supervisor服务,终止服务命令是:

killall -s INT /usr/bin/python

因为supervisor是基于python2的,所以不用担心python3的进程

另外如果只想在命令行中控制tornado也是可以的

#停止tornado服务
supervisorctl stop mytornado

#启动tornado服务
supervisorctl start mytornado

至此,我们通过nginx反向代理tornado负载均衡,并且通过supervisor管理就部署好了,简直太简单了

相关文章
|
11月前
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
987 87
|
JSON JavaScript Linux
【MCP教程系列】Node.js+TypeScript搭建NPX MCP服务并自定义部署至阿里云百炼
本文介绍如何将阿里云百炼的工作流封装成MCP服务并部署,随后引入到智能体中使用。主要步骤包括:1) 封装MCP服务;2) 发布到npm官方平台;3) 在阿里云百炼平台创建自定义MCP服务;4) 在智能体中添加自定义MCP服务。通过这些步骤,用户可以轻松将工作流转化为MCP服务,并在智能体中调用。
4069 0
|
11月前
|
应用服务中间件 Linux 网络安全
技术指南:如何把docsify项目部署到基于CentOS系统的Nginx中。
总结 与其他部署方法相比,将docsify项目部署到基于CentOS系统的Nginx中比较简单。以上步骤应当帮助你在不花费太多时间的情况下,将你的项目顺利部署到Nginx中。迈出第一步,开始部署你的docsify项目吧!
433 14
|
JavaScript 前端开发 Docker
如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
通过这些步骤,可以确保您的Next.js应用在多核服务器上高效运行,并且在Docker环境中实现高效的容器化管理。
1445 44
|
负载均衡 Ubuntu 应用服务中间件
nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点
通过合理配置 Nginx,我们可以高效地管理和发布软件源,为用户提供稳定可靠的服务。
1867 13
|
7月前
|
编解码 应用服务中间件 Linux
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
627 1
|
11月前
|
负载均衡 应用服务中间件 nginx
Nginx配置与命令
Nginx 是一款高性能的 HTTP 和反向代理服务器,其配置文件灵活且功能强大。本文介绍了 Nginx 配置的基础结构和常用指令,包括全局块、Events 块、HTTP 块及 Server 块的配置方法,以及静态资源服务、反向代理、负载均衡、HTTPS 和 URL 重写等功能实现。此外,还提供了常用的 Nginx 命令操作,如启动、停止、重载配置和日志管理等,帮助用户高效管理和优化服务器性能。
1013 14
|
7月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
416 18
|
7月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
680 17