博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
测试格式
阅读量:6803 次
发布时间:2019-06-26

本文共 7930 字,大约阅读时间需要 26 分钟。

1.

2.

3.

4.

1. virtualvenv

virtualvenv install

首先要安装python3

因为系统已经装了 python3.6 所以接下来直接装虚拟环境 virtualvenv

mkdir yourwebproject foldercd yourwebproject/usr/python3.6/bin/python3.6 -m venv venv   #建立一个独立于系统的虚拟环境 不会跟系统环境混淆source venv/bin/activate                    #运行环境deactivate                                  #退出环境

2. django

  • 运行虚拟环境,在环境中安装django
pip install django
  • 新建项目
1). django-admin startproject proName           2). cd proName   3). python manage.py runserver    # run
  • 新建app

不用也可以进行接下来的操作

3. uWSGI

官网:

安装

在虚拟环境中

pip install uwsgi

检测 uwsgi 是否正常工作

  • 在与venv同目录下写一个模拟站点文件 test.py
# test.pydef application(env, start_response):    start_response('200 OK', [('Content-Type','text/html')])    return [b"Hello World"]     # python3
  • 运行
uwsgi --http :8080 --wsgi-file test.py  # 假设访问端口号8080
  • 浏览器访问
http://serverIP:8080

若显示站点文件中的输出,说明uwsgi生效

路径 web client <-> uwsgi <-> python

部署 django

  • 首先运行django确保django能正常工作
python manage.py runserver 0.0.0.0:8000
  • 在manage.py同级目录下运行
uwsgi --http :8080 --module djangoProName.wsgi

--module djangoProName.wsgi 代表 djangoProName 目录下的 wsgi.py 文件

  • 浏览器访问
http://serverIP:8080

4. nginx

官网:

不在虚拟环境中安装

由于服务器上已经安装了 nginx 所以安装步骤省略,只需要在 nginx.conf 中添加配置即可。

  • 配置 nginx

nginx.conf 结构:

user www-data;worker_processes auto;pid /run/nginx.pid;events {    worker_connections 768;}http {   # server{ ... }}

添加 server

server {        listen       98 default_server;   # 访问时输入的端口 本地和外部浏览器后面都要加这个端口号        server_name  10.41.95.85;          # 自己网站的域名        # Load configuration files for the default server block.        include /etc/nginx/default.d/*.conf;                location / {                      # location : 文件系统配置 去应答一些要服务器资源的请求            include uwsgi_params;            uwsgi_pass 127.0.0.1:9898;    # 与ini文件对接端口 与上面的 93 端口没有关系        }    }

配置完了之后记得重启nginx

  • 配置 uwsgi

将配置项全部写入ini文件

在venv同目录下自己新建uwsgi的ini文件

[uwsgi]socket = 127.0.0.1:9898                               ; 与 nginx 对接 IP; django pro dirchdir = /root/Odin/TrackManagement/TrackManagement/   ; django project dirwsgi-file = TrackManagement/wsgi.py                   ; 代表 TrackManagement 目录下的 wsgi.py 文件; module = TrackManagement.wsgi                       ; 有上面的wsgi配置这个就不用写了processes = 2                                         ; 进程threads = 1                                           ; 线程stats = 127.0.0.1:9696                                ; 内部配置访问ip 与socket区别开
  • 浏览器访问
http://10.41.95.85:98

若显示django画面 则 uwsgi+nginx生效

路径 web client <-> nginx <-> uwsgi <-> django


接下来是过程中踩的坑

<details>

<summary>uwsgi: unrecognized option '--http:8089'</summary>

uwsgi: unrecognized option '--http:8089'getopt_long() error

原因:

参数格式不对 :8089前面要加空格 uwsgi还在开启

</details>

<details>

<summary>uwsgi: unrecognized option '--http'</summary>

(venv) [root@localhost TrackManagement]# uwsgi --http:8089 --module TrackManagement.wsgiuwsgi: unrecognized option '--http'getopt_long() error

原因:

uwsgi还在开启 先杀了进程再重启

</details>

<details><summary>uwsgi trkMngm_uwsgi.ini -> invalid request block size: 21573 (max 4096)...skip</summary>

启动了之后每次访问

*** Stats server enabled on 127.0.0.1:9295 fd: 12 ***invalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skipinvalid request block size: 21573 (max 4096)...skip

原因:

trkMngm_uwsgi.ini 文件中有设置nginx的socket

如果这时候nginx没有对应的配置或者配置了但是nginx没有重启
就会产生这个错误

</details>

<details>

<summary>ModuleNotFoundError: No module named 'TrackManagement/TrackManagement/wsgi'</summary>

(venv) [root@localhost TrackManagement]# uwsgi --http :8089 --module TrackManagement/TrackManagement/wsgi.py*** Starting uWSGI 2.0.18 (64bit) on [Tue Feb 19 11:33:20 2019] ***compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-36) on 18 February 2019 05:28:03os: Linux-3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UTC 2018nodename: localhost.localdomainmachine: x86_64clock source: unixpcre jit disableddetected number of CPU cores: 4current working directory: /root/Odin/TrackManagementdetected binary path: /root/Odin/TrackManagement/venv/bin/uwsgiuWSGI running as root, you can use --uid/--gid/--chroot options*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ****** WARNING: you are running uWSGI without its master process manager ***your processes number limit is 63229your memory page size is 4096 bytesdetected max file descriptor number: 1024lock engine: pthread robust mutexesthunder lock: disabled (you can enable it with --thunder-lock)uWSGI http bound on :8089 fd 4spawned uWSGI http 1 (pid: 33181)uwsgi socket 0 bound to TCP address 127.0.0.1:33454 (port auto-assigned) fd 3uWSGI running as root, you can use --uid/--gid/--chroot options*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***Python version: 3.6.4 (default, Mar  6 2018, 13:19:57)  [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]*** Python threads support is disabled. You can enable it with --enable-threads ***Python main interpreter initialized at 0x12acbf0uWSGI running as root, you can use --uid/--gid/--chroot options*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***your server socket listen backlog is limited to 100 connectionsyour mercy for graceful operations on workers is 60 secondsmapped 72920 bytes (71 KB) for 1 cores*** Operational MODE: single process ***ModuleNotFoundError: No module named 'TrackManagement/TrackManagement/wsgi'unable to load app 0 (mountpoint='') (callable not found or import error)*** no app loaded. going in full dynamic mode ***uWSGI running as root, you can use --uid/--gid/--chroot options*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ****** uWSGI is running in multiple interpreter mode ***spawned uWSGI worker 1 (and the only) (pid: 33180, cores: 1)

原因: 应该在TrackManagement项目里面运行 即这个目录下面

(venv) [root@localhost TrackManagement]# lsdb.sqlite3  manage.py  testUwsgi.py  TrackManagement

</details>

<details>

<summary>runserver运行django error : Bad Request</summary>

(venv) [root@localhost TrackManagement]# python manage.py runserver 0.0.0.0:8080Performing system checks...System check identified no issues (0 silenced).You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.Run 'python manage.py migrate' to apply them.February 18, 2019 - 07:47:25Django version 2.1.7, using settings 'TrackManagement.settings'Starting development server at http://0.0.0.0:8080/Quit the server with CONTROL-C.Invalid HTTP_HOST header: '10.41.95.85:8080'. You may need to add '10.41.95.85' to ALLOWED_HOSTS.Bad Request: /[18/Feb/2019 07:47:51] "GET / HTTP/1.1" 400 60826Invalid HTTP_HOST header: '10.41.95.85:8080'. You may need to add '10.41.95.85' to ALLOWED_HOSTS.Bad Request: /favicon.ico[18/Feb/2019 07:47:54] "GET /favicon.ico HTTP/1.1" 400 60906

solution

django setting.py

ALLOWED_HOSTS = ['*'] -> ALLOWED_HOSTS = ['*']

</details>

<details>

<summary>manage.py语法错误</summary>

SyntaxError: invalid syntax[root@localhost TrackManagement]# python manage.py runserver 0.0.0.0:8080  File "manage.py", line 14    ) from exc

solution

没有运行虚拟环境 外面的环境是python 虚拟环境才是python3 所以会有语法错误

</details>

转载地址:http://runwl.baihongyu.com/

你可能感兴趣的文章
linux的rsync工具的常用选项及ssh同步介绍
查看>>
oracle内存体系(二)
查看>>
ReflectASM的使用
查看>>
智能家居监控移动手机组态现实生活中的应用
查看>>
笔试题、面试题
查看>>
shell 数组
查看>>
Linux操作系统的安装
查看>>
服务器RAID
查看>>
python函数是引用传递(对可变对象而言)
查看>>
Cisco ASA防火墙简易配置与调试手册
查看>>
Node.js搭建聊天室
查看>>
Rob Pike的5个编程原则
查看>>
Expression Blend实例中文教程(7) - 动画基础快速入门Animation
查看>>
《第一行代码》1day~了解全貌
查看>>
复习javaIO 之File类
查看>>
How to install snmpwalk snmpget on CentOS 6.4 6.3 5.9 Redhat RHEL Fedora
查看>>
最小生成树
查看>>
Mybatis中配置Mapper的方法
查看>>
Java基础学习总结(19)——Java环境变量配置
查看>>
Mvc5+Entity Framework6 之二----在MVC中用Entity Framework实现基本的CRUD
查看>>