在一个centos服务器上同时部署tomcat,django,flask

简介: 在一个centos服务器上同时部署tomcat,django,flask

本博客主要讲解 玩转nginx代理服务器,参考了django官方部署教程,以及flask部署教程,以及tomcat部署教程,nginx代理服务器

重点在于如何在同一个服务器上运行多种语言后端。

重启服务器命令

切记 打开服务器端口

切记 以 root 身份 启用 nginx 转发服务

killall -9 uwsgi
uwsgi -x /data/wwwroot/Logistics/Logistics.xml
nohup uwsgi /data/wwwroot/yiliao1/uwsgi.ini &
/usr/local/nginx/sbin/nginx  -s reload

先记下来命令,方便自己使用

下边来一句一句分析

killall -9 uwsgi

暂停所有 uwsgi 服务

刷新 django项目资源``

uwsgi -x /data/wwwroot/Logistics/Logistics.xml

刷新 flask 项目资源

nohup uwsgi /data/wwwroot/yiliao1/uwsgi.ini &

重启 nginx 代理服务器

/usr/local/nginx/sbin/nginx  -s reload

本博客主要讲解 玩转nginx代理服务器,参考了django官方部署教程,以及flask部署教程,以及tomcat部署教程,nginx代理服务器

重点在于如何在同一个服务器上运行多种语言后端。

下边我们简单开讲,tomcat 部署较为简单,此处不详谈,来点干货

nginx转发tomcat代理配置文件(配置文件参考博主位置)

user root;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #服务1
    server {
        listen 80;
        server_name www.limengkai.work limengkai.work;
        rewrite ^(.*)$ https://${server_name}$1 permanent; 
    }
  #服务2
    server {
        listen 443 ssl http2;
        server_name www.limengkai.work limengkai.work;
        root /data/wwwroot/Logistics; #项目路径
        charset utf-8;
        ssl_certificate   /data/wwwroot/Logistics/1701030_www.limengkai.work.pem;#.pem证书路径
        ssl_certificate_key  /data/wwwroot/Logistics/1701030_www.limengkai.work.key;#.key证书路径
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        error_page 497  https://$host$request_uri;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8999;
           uwsgi_param UWSGI_SCRIPT Logistics.wsgi;
           uwsgi_param UWSGI_CHDIR /data/wwwroot/Logistics/;#项目路径
        }
        location /static/ {
        alias /data/wwwroot/Logistics/static/; #静态资源路径
        }
        access_log  /data/wwwroot/Logistics/www.limengkai.work.log;
        error_log  /data/wwwroot/Logistics/www.limengkai.work.error.log;
    }
  #服务3
    server {
        listen 1443 ssl http2;
        server_name www.limengkai.work limengkai.work;
        charset utf-8;
        ssl_certificate   /data/wwwroot/yiliao1/1701030_www.limengkai.work.pem;#.pem证书路径
        ssl_certificate_key  /data/wwwroot/yiliao1/1701030_www.limengkai.work.key;#.key证书路径
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        error_page 497  https://$host$request_uri;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:5000;      # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
     }
        access_log  /data/wwwroot/yiliao1/www.limengkai.work.log;
        error_log  /data/wwwroot/yiliao1/www.limengkai.work.error.log;
    }
  #服务4
    server {
    listen 1401;             # 端口号
    server_name www.limengkai.work limengkai.work;           # 配置域名信息
    root /home/tomcat/apache-tomcat-9.0.21/webapps/web2_war/mk_learn/;               # 静态页面根目录
    index index.html;
    }
  #服务5
    server {
    listen 1402;             # 端口号
    server_name www.limengkai.work limengkai.work;           # 配置域名信息
    root /home/tomcat/apache-tomcat-9.0.21/webapps/web2_war/mk_learn/as2/;               # 静态页面根目录
    index index.html;
    }
}

以上nginx配置文件一共 配置了 五个服务,其中服务4,5最简单,是静态html代理

服务1为 tomcat 请求转发

监听80端口转发tomcat

 #服务1
server {
      listen 80;
      server_name www.limengkai.work limengkai.work;
      rewrite ^(.*)$ https://${server_name}$1 permanent; 
  }

服务2,服务3 配置较为困难,具体步骤请先详细阅读,django部署服务,以及flask部署服务,下边依次讲解主要步骤:

服务2搭建 django服务,首先需要创建 django的虚拟环境

django部署详细过程

然后启动虚拟环境后,开始配置nginx文件

本文配置了 https 443 协议

nginx文件配置如下,

此配置文件listen 443 ssl http2 转发 uwsgi 127.0.0.1:8999 内部端口

uwsgi 是一种网络协议,此处可以简单理解为 添加了一层网络层映射

将 服务器 https://limengkai.xxxx ➡️ uwsgi 127.0.0.1:8999 端口

所以在下边的配置过程中,需要在 uwsgi中 配置 内部服务

#服务2
    server {
        listen 443 ssl http2;
        server_name www.limengkai.work limengkai.work;
        root /data/wwwroot/Logistics; #项目路径
        charset utf-8;
        ssl_certificate   /data/wwwroot/Logistics/1701030_www.limengkai.work.pem;#.pem证书路径
        ssl_certificate_key  /data/wwwroot/Logistics/1701030_www.limengkai.work.key;#.key证书路径
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        error_page 497  https://$host$request_uri;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8999;
           uwsgi_param UWSGI_SCRIPT Logistics.wsgi;
           uwsgi_param UWSGI_CHDIR /data/wwwroot/Logistics/;#项目路径
        }
        location /static/ {
        alias /data/wwwroot/Logistics/static/; #静态资源路径
        }
        access_log  /data/wwwroot/Logistics/www.limengkai.work.log;
        error_log  /data/wwwroot/Logistics/www.limengkai.work.error.log;
    }

uwsgi服务配置

创建文件夹 上传django 项目文件,自己随意创建即可,一般的创建习惯是

和虚拟环境目录放在一起,其实没有什么影响,方便寻找

博主项目名称Logi

项目位置 /data/wwwroot/Logi

虚拟环境位置 /data/env/pyweb/bin

博主文件版本

centos 7.0.3

nginx version: nginx/1.13.7

tomcat version 9.0.21

python3.6.5

django2.2.4

好了以上都是闲话,按照此版本配置基本问题不大,

在项目位置 /data/wwwroot/Logi 下新建 同名 [项目名称].xml文件

如果有 https 证书也放进去 .pom .key文件

<!-- logi.xml --> 
<uwsgi>    
   <socket>127.0.0.1:8999</socket> <!-- 内部端口,自定义 --> 
   <chdir>/data/wwwroot/Logistics/</chdir> <!-- 项目路径 -->            
   <module>Logistics.wsgi</module>  <!-- Logistics为wsgi.py所在目录名--> 
   <processes>4</processes> <!-- 进程数 -->     
   <daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
</uwsgi>

此时 django项目配置工作已经完成,

运行 uwsgi -x /data/wwwroot/Logistics/Logistics.xml 即可

虽然flask与 django 同为 python 项目,但是两者配置却又差别,博主水平有限,暂时没有找到,一致的方法,

但是我们可以来看一看他们的差别,观察 django项目可以发现,在django

项目同名文件下的 logi/logi存在 logi/logi/uwsgi.py 文件,

此文件可以调用启动 uwsgi 服务 配置 xml 文件,所以在django项目中,只编写 xml文件即可,执行 uwsgi -x 命令即可


但是在flask项目中,启动服务只有app.py 文件

所以在 nginx 服务3配置完成后 需要新建 uwsgi.ini 文件


同 服务2 此处 配置nginx 监听

https://limengkai.xxx:1443 端口 转发 uwsgi 内部端口

uwsgi_pass 127.0.0.1:5000; 也是 flask 默认启动端口

  #服务3
    server {
        listen 1443 ssl http2;
        server_name www.limengkai.work limengkai.work;
        charset utf-8;
        ssl_certificate   /data/wwwroot/yiliao1/1701030_www.limengkai.work.pem;#.pem证书路径
        ssl_certificate_key  /data/wwwroot/yiliao1/1701030_www.limengkai.work.key;#.key证书路径
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        error_page 497  https://$host$request_uri;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:5000;      # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
     }
        access_log  /data/wwwroot/yiliao1/www.limengkai.work.log;
        error_log  /data/wwwroot/yiliao1/www.limengkai.work.error.log;
    }

配置nginx flask 转发文件后,

在flask 项目文件下 创建 uwsgi.ini文件

博主flask项目文件/data/wwwroot/yiliao1

/data/wwwroot/yiliao1/app.py

/data/wwwroot/yiliao1/uwsgi.ini

因为 博主 django项目以及 flask 项目使用的相同的 python虚拟环境,此处省略,

#uwsgi.ini文件配置
[uwsgi]
#指向网站根目录
chdir=/data/wwwroot/yiliao1
#虚拟环境目录
home = /data/env/pyweb
# python启动程序文件
wsgi-file=app.py
#python程序内用于启动的application变量名
callable=app
processes = 4
threads = 2
# py文件修改,自动加载
py-autoreload=1
#设置uwsgi包解析的内部缓存区大小。默认4k
buffer-size = 32768
chmod-socket = 664
# 退出uwsgi是否清理中间文件,包含pid、sock和status文件
vacuum=true
# uwsgi 启动时所使用的地址与端口,配置nginx时候使用
socket = 127.0.0.1:5000
#没有nginx时,要用浏览器测试是否可以成功访问需要配置http端口
http=:9090
# 状态监测地址
stats=127.0.0.1:9191
#使用协程gevent启动使用
listen=100

配置完成后,在激活虚拟环境后 来到 flask项目文件

执行 nohup uwsgi /data/wwwroot/yiliao1/uwsgi.ini & 即可刷新服务

在完成所有配置后,即可通过 下边四条命令随时启动 django 以及 flask 服务,如果有多个 django项目,以及多个flask 项目,按照相同 步骤 重复以上环节即可,

切记 打开服务器端口

切记 以 root 身份 启用 nginx 转发服务

杂记命令:

可以用命令杀掉这个端口在重启:

sudo fuser -k 8080/tcp
killall -9 uwsgi
uwsgi -x /data/wwwroot/Logistics/Logistics.xml
nohup uwsgi /data/wwwroot/yiliao1/uwsgi.ini &
/usr/local/nginx/sbin/nginx  -s reload
相关文章
|
3天前
|
弹性计算 网络安全
【玩转幻兽帕鲁/Palworld】幻兽帕鲁服务器搭建,幻兽帕鲁部署全攻略
在开放世界的冒险中,与好友共同探索的乐趣无疑为《幻兽帕鲁》增添了更多色彩。今天,就让我们一起走进搭建《幻兽帕鲁》专属服务器的世界,体验“轻点三次鼠标,3秒轻松开服”的极致便捷!
|
2天前
|
弹性计算 Ubuntu Windows
2024年部署幻兽帕鲁/Palworld服务器多少钱?阿里云帕鲁主机优惠价格解析
对于热爱《幻兽帕鲁》的玩家们来说,一个稳定、高效的游戏服务器是畅享游戏乐趣的关键。那么,搭建一个这样的服务器需要多少钱呢?别担心,阿里云已经为大家准备了超值的幻兽帕鲁Palworld游戏服务器!
|
2天前
|
弹性计算 运维 数据安全/隐私保护
阿里云一键部署雾锁王国联机服务器详细教程
阿里云一键部署雾锁王国联机服务器详细教程,阿里云雾锁王国服务器搭建教程是基于计算巢服务,3分钟即可成功创建Enshrouded游戏服务器,阿里云8核32G雾锁王国专用游戏服务器90元1个月、271元3个月,阿里云百科亲自整理雾锁王国服务器详细搭建教程
|
2天前
|
Linux 网络安全 数据安全/隐私保护
幻兽帕鲁服务器部署保姆级教程(持续更新)
幻兽帕鲁服务器部署保姆级教程(持续更新)
|
3天前
|
弹性计算 数据安全/隐私保护
2024年阿里云新用户部署Palworld/幻兽帕鲁服务器,详细攻略
在充满奇幻色彩的《幻兽帕鲁》世界中,与好友一起联机探险总是乐趣无穷。但你知道吗?现在,搭建一个专属的服务器,与伙伴们畅享游戏时光,已经不再是技术大神的专利了。本篇文章将为大家带来一篇详细的攻略,教你如何轻松搭建《幻兽帕鲁》云服务器,让你和好友们快乐玩耍!
|
3天前
|
弹性计算 数据安全/隐私保护
2024年阿里云幻兽帕鲁/Palworld服务器部署攻略
随着幻兽帕鲁(Palworld)这款游戏的持续升温,越来越多的玩家渴望能够拥有自己的专属服务器,与好友们畅享不受限的组队冒险。好消息是,现在搭建幻兽帕鲁服务器,比以往任何时候都要简单。今天,就让我带你走进这个神秘而富有创意的幻兽世界,手把手教你如何轻松搭建自己的游戏服务器。
|
3天前
|
弹性计算
2024年阿里云部署一个幻兽帕鲁/Palworld服务器多少钱?一个月26元
对于热爱幻兽帕鲁Palworld游戏的玩家们来说,一个稳定且高性能的游戏服务器是必不可少的。那么,在2024年,搭建一个这样的服务器需要多少钱呢?答案可能会让你惊喜——从每月仅需26元起,你就能拥有属于自己的游戏天地!
|
3天前
|
弹性计算 Ubuntu Linux
搭建幻兽帕鲁/Palworld服务器怎么配置:阿里云幻兽帕鲁服务器部署详细攻略
幻兽帕鲁是一款由Pocketpair开发的开放世界沙盒游戏,在2024年初一经发布便以其独特的幻想生物收集与养成系统,结合了生存、建造以及冒险元素,迅速在全球范围内吸引了大量玩家的关注。目前有玩家还不清楚如何配置游戏服务器,下面就由小编为大家带来幻兽帕鲁/Palworld服务器怎么配置:幻兽帕鲁服务器部署详细攻略。
26 1
|
4天前
|
弹性计算 Ubuntu Linux
2024年阿里云上幻兽帕鲁/Palworld游戏服务器简易部署教程
近期,作为一款主打多人游戏模式的全新开放世界生存制作游戏——《幻兽帕鲁》(Palworld) ,可谓“高效出圈”,自 2024 年 1 月 19 日在 Steam 平台发售抢先试玩版后,短短两个星期,幻兽帕鲁 steam 在线峰值已突破 200 万,跻身 Steam 历史第二高游戏!也因此,这款游戏获得了 2024 游戏界”新黑马“的称号。 目前对于《幻兽帕鲁》而言,面对此开年火爆的程度,游戏官方服务器接连出现了卡断/闪退/延迟高的状况,相关话题也在持续发酵,十分影响游戏体验,因此官方直接放出了幻兽帕鲁的服务器端,支持并鼓励各位玩家“自建帕鲁专用服务器”(Dedicated Server)。
|
4天前
|
安全 网络安全 开发者
如何在OpenWRT部署uhttpd搭建服务器实现远程访问本地web站点
如何在OpenWRT部署uhttpd搭建服务器实现远程访问本地web站点
18 0

相关产品

  • 云迁移中心