下载大发彩_票平台

下载大发彩_票平台
地址一:【hubawl.com】狐霸源码论坛
地址二:【bbscherry.com】

项目开发完毕后,需要将代码放到服务器上,这样用户才能访问。接下来我们一步一步来进行一波部署操作

打包上传代码

项目开发完毕,在部署之前需要再配置文件中将 ALLOWED_HOSTS配置设置为:当前服务器IP或*,如:

ALLOWED_HOSTS = ["",]
这个配置就是允许别人通过哪个ip访问你,
表示所有ip

上线时还要将配置中的DEBUG改为False

不同系统如何传代码

windows:
yum install lrzsz
压缩zip包,拖进来。
mac:
scp /home/xx/s8day145.zip [email protected]:/data/
在真正的线上环境应该从git上拖代码

安装Python3

复制代码
a. 下载Python:https://www.python.org/ftp/python/3.5.4/
b. 解压 tar -xvf Python-3.5.4.tgz
c. cd Python-3.5.4
d. 先装依赖:

  • yum install openssl-devel
  • yum install sqlite-devel
    e. 编译安装
  • ./configure
  • make
  • make install

    /usr/local/bin python3
    f. 安装django
     pip3 install django==1.11.7
    复制代码
    第一版本上线:简单粗暴

进入python程序目录

python3 manage.py runserver 0.0.0.0:8000
uwsgi

Django框架运行依赖wsgi(本质提供socket服务端),众多模块实现了wsgi规范,而django框架中默认使用wsigiref模块来实现,他由于性能比较低,所以用于本地开发和测试,而线上部署时需要使用uwsgi来代替

在服务器上安装uwsgi

pip3 install uwsgi
单文件使用uwsgi

在服务器上编写一个Python文件app.py:

def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
在服务器上执行命令启动Web服务器:

uwsgi --http :9001 --wsgi-file app.py

uwsgi --http :9002 --wsgi-file app.py --master --processes 4 # 启动4个进程
PS: flask需要再加 --callable app

uwsgi --http :9002 --wsgi-file app.py --callable app
django程序

方式一

uwsgi --http :9003 --chdir /data/s8day145/ --wsgi-file s8day145/wsgi.py # chdir进入后面的项目目录 然后wsgi-file找到项目中的wsgi.py文件
方式二

可以看到上面的方法参数很多,我们可以将参数写到一个文件中

复制代码
s8day145_uwsgi.ini
[uwsgi]
http = 0.0.0.0:9005
chdir = /data/s8day145/
wsgi-file = s8day145/wsgi.py
processes = 4 # 进程数
static-map = /static=/data/s8day145/allstatic # 静态文件的目录
复制代码
启动时

uwsgi --ini s8day145_uwsgi.ini
此时访问时,会出现找不到静态文件的错误。

想要uwsgi处理静态文件,需要先将django的静态文件收集到制定目录,然后再设置对应关系。

收集django静态文件

在django的配置文件中添加:STATIC_ROOT = os.path.join(BASE_DIR,"allstatic")
执行 python3 manage.py collectstatic 命令,至此django项目所有相关静态文件都会收集到制定目录。
设置uwsgi静态文件对应关系

uwsgi --http :9005 --chdir /data/oldboy/ --wsgi-file oldboy/wsgi.py --master --processes 4 --static-map /static=/data/oldboy/allstatic
第三版本上线:uwsgi + nginx

nginx作用:

  • 处理静态文件
  • 反向代理
  • 负载均衡(LVS、haproxy)
    uwsig作用:
  • 处理动态请求

nginx配置文件

复制代码
user root;
worker_processes 4;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

sendfile            on;
tcp_nopush          on;
tcp_nodelay         on;
keepalive_timeout   65;

include             /etc/nginx/mime.types;
default_type        application/octet-stream;

upstream django {
    server 127.0.0.1:8001; 
    server 127.0.0.1:8002; 
}
server {
    listen      80;

    charset     utf-8;

    # max upload size
    client_max_body_size 75M;

    location /static {
        alias  /data/s8day145/allstatic; 
    }

    location / {
        uwsgi_pass  django;
        include     uwsgi_params;
    }
}

}
复制代码
uwsgi配置:/data/s8day145/

复制代码
s8day145_uwsgi_8001.ini
[uwsgi]
socket = 127.0.0.1:8001
chdir = /data/s8day145/
wsgi-file = s8day145/wsgi.py
processes = 1

s8day145_uwsgi_8002.ini
[uwsgi]
socket = 127.0.0.1:8002
chdir = /data/s8day145/
wsgi-file = s8day145/wsgi.py
processes = 1
复制代码
启动

复制代码
nginx:
/etc/init.d/nginx start
/bin/systemctl restart nginx.service
/bin/systemctl start nginx.service
/bin/systemctl stop nginx.service

uwsgi:
uwsgi --ini s8day145_uwsgi_8001.ini &
uwsgi --ini s8day145_uwsgi_8002.ini &
复制代码
如果进程挂了,supervisor帮助你自动将服务重新启动

supervisor是一个对进程管理的软件,可以帮助我们启动uwsgi并维护(uwsgi进程关闭时,自动将其启动起来)

安装

yum install supervisor
配置/etc/supervisord.conf

复制代码
[program:s8day145]
command=/usr/local/bin/uwsgi --ini /data/s8day145/s8day145_uwsgi_8001.ini ;命令
priority=999 ; 优先级(越小越优先)
autostart=true ; supervisord启动时,该程序也启动
autorestart=true ; 异常退出时,自动启动
startsecs=10 ; 启动后持续10s后未发生异常,才表示启动成功
startretries=3 ; 异常后,自动重启次数
exitcodes=0,2 ; exit异常抛出的是0、2时才认为是异常
stopsignal=QUIT ; 杀进程的信号
stopwaitsecs=10 ; 向进程发出stopsignal后等待OS向supervisord返回SIGCHILD 的时间。若超时则supervisord将
使用SIGKILL杀进程
user=root ; 设置启动该程序的用户
log_stdout=true ; 如果为True,则记录程序日志
log_stderr=false ; 如果为True,则记录程序错误日志
logfile=/var/log/cat.log ; 程序日志路径
logfile_maxbytes=1MB ; 日志文件最大大小
logfile_backups=10 ; 日志文件最大数量
复制代码
启动

systemctl start supervisord.service
公司正式上线流程

复制代码
公司中的部署步骤及负责人:

  • 开发提交代码
  • 测试人员开始测试
  • 运维人员进行上线
    使用软件:jenkins+自己写脚本,运维人员点点点。
    • 从git上啦代码到一个服务器,在该服务器上对代码进行编译(c/vue/java)
    • 通过以下工具 将代码同步到每台服务器上
      • saltstack
      • ansible
    • 执行命令启动程序

猜你喜欢

转载自blog.51cto.com/13871370/2144003