项目部署到服务器

  当写完项目之后,经常需要将项目部署到网络服务器上,以便于可以随时进行访问(注意:项目部署之前要将debug改成false)。

  一般来说,部署项目到服务器需要使用中间代理服务器,一般我们使用Nginx。作为We服务器:相比Apache,Nginx使用资源更少,支持更多的并发连接,体现更高的效率,使Nginx倍受欢迎,能够支持高达50000个并发连接数的响应。作为负载均衡服务器:Nginx既可以在内部直接支持Redis和PHP,也可以支持作为HTTP代理服务器对外进行服务,Nginx使用C编写,不论是系统资源开销还是CPU使用效率都处理的非常优秀。Nginx安装非常简单,配置文件非常简洁,Bug非常少:Nginx启动非常容易,并且几乎可以做到24小时不间断运行,即使运行数个月也不需要重新启动。

  gunicorn是一个被广泛使用的高性能的Python WSGI UNIX HTTP服务器,,使用pre-fork worker模式,具有使用非常简单,轻量级的资源消耗,以及高性能等特点。

为什么要同时使用nginx和gunicorn?

  gunicorn 可以单独提供服务,但生产环境一般不这样做。首先静态资源会占用不少的请求资源,而对于 gunicorn 来讲它本身更应该关注实际业务的请求与处理而不应该把资源浪费在静态资源请求上;此外,单独运行 gunicorn 是没有办法起多个进程多个端口来负载均衡的。nginx 的作用就是弥补以上问题,首先作为前端服务器它可以处理一切静态文件请求,此时 gunicorn 作为后端服务器,nginx 将会把动态请求转发给后端服务器,因此我们可以起多个 gunicorn 进程,然后让 nginx 作均衡负载转发请求给多个 gunicorn 进程从而提升服务器处理效率与处理能力。最后,nginx 还可以配置很多安全相关、认证相关等很多处理,可以让你的网站更专注业务的编写,把一些转发规则等其它业务无关的事情交给 nginx 做。

  supervisor这东西,其实就是用来管理进程的。相对于我们linux传统的进程管理方式来说,它有很多的优势,如简单、精确、可扩展,集中式管理等等。

一、配置Nginx:

1、首先需要安装Nginx:sudo apt install nginx

2、在/etc/nginx/conf.d 目录下新建一个你的配置文件,如nignx.conf

3、在创建的配置文件中加入以下配置

server{
    listen 80;
    server_name 47.94.225.12;    #写你的域名或者IP
    location / {
      proxy_pass http://127.0.0.1:12345;    #Django服务使用的端口
      proxy_set_header Host $host;    #捕获客户端真实IP
      proxy_set_header X-Real-IP $remote_addr;     #$remote_addr 代表客户端IP
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
    }
    location /static {
    alias  /home/wusir/hz_python/django_test/axf_1806/static;  #静态文件路径
    }
}

Nginx配置文件

4、配置完成后,重启Nginx,执行 :sudo nginx -s reload

二、配置gunicorn

1、首先需要安装gunicorn:pip3 install gunicorn

2、在你的工程下新建一个gunicorn的配置文件目录,如server_confs目录,在server_confs下新建一个gunicorn的配置文件,如叫gunicorn.conf。

3、在创建的配置文件中加入以下配置

cmmand = ‘/home/wusir/.local/bin/gunicorn‘  #gunicorn命令的绝对路径
pythonpath = ‘/home/wusir/hz_python/django_test/axf_1806‘   #项目路径
bind = ‘0.0.0.0:12345‘   #运行服务的IP和端口
workers = 3   #开几个线程来执行请求

gunicorn配置文件

4、在包含manage.py的同级目录下执行下面命令来运行项目。

gunicorn 工程名.wsgi -c gunicorn配置文件夹/配置文件

三、配置supervisor

1、首先需要安装supervisor,命令为:安装:sudo apt install supervisor。

2、在/etc/supervisor/conf.d 目录下新建你的配置文件,如叫axf.conf。

3、在配置文件中加入以下配置:

[program:axf_1806]
directory=/home/wusir/hz_python/django_test/axf_1806     #项目路径
command=/home/wusir/.local/bin/gunicorn axf_1806.wsgi -c server_confs/axf_gunicorn.conf    #需要执行的命令
autostart=true         #在supervisord启动的时候也自动启动
startsecs=10           #启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true       #程序退出自动重启,默认unexpected,表示进程意外杀死才重启
startretries=3        #启动失败自动重试次数,默认是3
user=wusir           #哪个用户启动进程,默认是root
priority=999          #进程启动优先级,默认999,值小的优先启动
redirect_stderr=true       #把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=100MB     #stdout 日志文件大小,默认50MB
stdout_logfile_backups = 20     #stdout 日志文件备份数,默认是10
stdout_logfile=/var/log/supervisor_logs/axf.log     #日志文件路径,当指定目录不存在
                                                                #时无法正常启动,所以需要手动创建目录
stopasgroup=false   #默认false,进程被杀死时,是否向该进程组发stop信号,包括子进程
killasgroup=false   #默认false,进程被杀死时,是否向该进程组发送kill信号,包括子进程
    

supervisor配置文件

PS:1、当我们修改了原码的时候就要重启我们的supervisor。

  2、supervisor 不支持python3 也就是默认python对应版本是python2。

   3、如果启动问题 先去看看log有没有问题,log的位置 stdout_logfile=/var/log/supervisor_logs/axf.log

gunicorn的常用命令:

supervisord                     #启动supervisor
supervisorctl reload            #修改完配置文件后重新启动supervisor
supervisorctl status            #查看supervisor监管的进程状态
supervisorctl start 进程名       #启动XXX进程
supervisorctl stop 进程名        #停止XXX进程
supervisorctl stop all          #停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl update            #根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启

PS:做负载均衡的配置

在Nginx的配置文件中加入upstream的以下配置:

upstream axf_1806{
    server 127.0.0.1:12345;
}
server{
    listen 80;
    server_name 47.94.225.12;

    location / {
      proxy_pass http://axf_1806;     #配置好了以后IP可以换成上面取的项目名称
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
    }
    location /static {
    alias  /home/wusir/hz_python/django_test/axf_1806/static;
    }
}

负载均衡配置

补充:可以配置多个机器,即可以配置多个server,后面还可以加上每台机器配置的权重,达到负载均衡的效果。

例:server 127.0.0.1:12355 weight=3

原文地址:https://www.cnblogs.com/wusir66/p/9942150.html

时间: 2024-08-30 14:06:15

项目部署到服务器的相关文章

如何把已完成的项目部署到服务器

今天,第一次为工作写日子,以后肯定会一直记录,好了,说一下重点吧.             如何把已完成的项目部署到服务器,            准备工作,在服务器上搭建 jdk 和 tomcat ,版本根据个人需求,我是 jdk1.7 和 tomcat 7.0 ,具体怎么搭建上网查吧.            第一步:把自己的项目上传到服务器上.我用的是最笨的方法,因为服务器的电脑,读取不到本地的U盘或硬盘.注意:项目的 “本身” 和 在本地的tomcat中的项目都要.因为要直接放在tomca

如何把vue.js项目部署到服务器上

如何把vue.js项目部署到服务器上面,我用的是tomcat服务器 1-改一下config/index.js文件,如下图,把assetsPublicPath: './', productionSourceMap: false 2-运行npm run build 然后在项目路径中找到打包后的文件,在项目文件的dist文件夹下面的static和index.html就是打包后的文件.然后我自己创建了cccBlog文件夹,把static和index.html拷贝到cccBlog下面,然后向服务器上传这个

ssm项目部署到服务器过程

ssm项目部署到服务器过程 安装jdk 命令行下安装jdk1.8 安装mysql 命令行下安装mysql 安装tomcat 命令行下安装tomcat8 安装redis 命令行下安装redis 原文地址:https://www.cnblogs.com/Draymonder/p/10162352.html

java项目部署Linux服务器几种启动方式总结经验

一:两种部署包: 部署之前先说下两种包,java项目部署到服务器一般有用war包的,也有用jar包的,微服务spring-cloud普及后大部分打包都是jar,部署之前先搞清楚自己要打war包还是jar包,下面小介绍两种包的区别: spring boot既可以打成war发布,也可以找成jar包发布.说一下区别: jar包:直接通过内置tomcat运行,不需要额外安装tomcat.如需修改内置tomcat的配置,只需要在spring boot的配置文件中配置.内置tomcat没有自己的日志输出,全

项目部署到服务器需要注意几点

1.连接字符串 一般项目在本地开发可能会用到windows验证,但是服务器上却使用sql server身份验证,可能会出现如下错误. 用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败 再看看web.config配置的连接字符串 <add name="Letters_ManagementEntities" connectionString="metadata=res://*/Model.Letter.csdl|res://*/Model.Let

.net框架的项目部署到服务器遇到的几个问题及对策

今天做了一个.net项目,用VS2017发布之后,将发布的文件上传部署到服务器上,结果遇到了一个又一个的难题.下边总结用一下问题,顺便探讨一下问题的解决方案,希望可以帮助那些遇到类似的问题的同学,如果有解释不正确的还望指正. 1.iis的网站配置问题 在iis上新建网站,但是点击浏览网站时网页是打不开的,提示"未能加载文件或程序集"EntityFramework"或它的某一个依赖项.找到的程序集清单定义与程序集引用不匹配.".我的方案是修改程序池内的.netfram

项目部署到服务器过程记录

本文记录项目部署过程. 一.服务器准备 // TODO 服务器环境搭建.工具安装....(如windows/Linux.jetty.mysql.....) 二.DB整理 1.本地连接服务器DB 打开Navicat(或SQLyog),点击"连接"打开新建连接界面: 2.DB迁移 在服务器上新建一个DB 将开发时用的DB迁移到服务器上,需要对DB表进行整理 -- 保留需要的表,保留某些表需要的初始数据,不需要的一律清理掉. 三.项目打包 1.从 git 上取项目最新代码 2.修改项目配置(

DJANGO项目部署到服务器上

---- 说明: 本文章来自于 http://www.pythonav.com/wupeiqi/3.html  是武沛齐老师个人博客上取的内容. 尊重老师的成果. 小白的项目部署 项目开发完毕后,需要将代码放到服务器上,这样用户才能访问.接下来我们一步一步来进行一波部署操作. 1. 简单粗暴 项目开发完毕,在部署之前需要再配置文件中将 ALLOWED_HOSTS配置设置为:当前服务器IP或*,如: ALLOWED_HOSTS = ["*",] 示例源码:猛击下载 然后将源码上传至服务器

vue、react等单页面项目部署到服务器的方法及vue和react的区别

最近好多伙伴说,我用vue做的项目本地是可以的,但部署到服务器遇到好多问题:资源找不到,直接访问index.html页面空白,刷新当前路由404...用react做的项目也同样遇到类似问题.现在我们一起讨论下单页面如何部署到服务器? 由于前端路由缘故,单页面应用应该放到nginx或者apache.tomcat等web代理服务器中,千万不要直接访问index.html,同时要根据自己服务器的项目路径更改react或vue的路由地址. 如果说项目是直接跟在域名后面的,比如:http://www.so