Nginx+Uwsgi+Django 项目部署到服务器的思路详解

作者:赵先鑫 时间:2021-05-20 20:23:10 

首先先说一下思路:

1.本地django项目打包 主要用到的是 python自带的distutils.core 下的 setup,具体代码在下面,主要讲的两个问题是package主要打包为和目录同级的代码,例如:TCMS如果还有一个子文件夹,那就不能自动打包了。这个时候需要用到data_files。glob(*filename)文件名模式匹配,不用遍历整个目录判断每个文件是不是符合。


from distutils.core import setup
import glob

setup(
name = "demo",
version = "0.1",
packages = ['author_zxx','TCMS','static'],
data_files= glob.glob('templates/*.html')
)

2.打包用到的木块,也就是python的库,pip freeze >> requirement.txt (requirement.txt 问文件名,随便起)


pip freeze > requeirement.txt

3.服务器安装虚拟环境(非常重要,这一步一定要在开始。)


yum install virtualenv

yum install cirtualenvwrapper

4.创建虚拟环境 并且 指定虚拟换 用到的python 解释器版本


# 创建一个项目目录
cd my_project

# 创建虚拟环境 my_project_env 为虚拟环境的名称
virtualenv my_project_env

# 指定虚拟环境所用到的python解释器版本 -p后面为python解释器存放的路径, my_project_env 为虚拟环境的名称
virtualenv -p /usr/bin/python2.7 my_project_env

# 创建完成虚拟环境之后会生成一个文件夹,之后在bin文件夹中会有一个activate,我们在使用虚拟环境需要激活虚拟环境,source activate。
source my_project_env/bin/activate

#退出虚拟环境
deactivate

5.在虚拟环境中安装django 和 uwsgi 。要指定安装版本和开发环境要一样


pip install django==3.0.4

pip install uwsgi

6.创建django中的项目


# . 表示在当前目录下创建,如果不加,会在project_name 下创建一个同名的目录。
django-admin startproject 'project_name' .

7. 将项目通过FileZilla 或者其他交互软件,传入到刚刚所创建的目录中。

8.项目上传完毕之后,需要安装我们所需要的包。


# 刚刚 pip freeze > requirement.txt 所得
pip install -r requirement.txt

9.完成之后,可以通过 python manage.pu runserver 进行测试,是否成功。显示出下面得内容,即为成功。


May 08, 2020 - 10:53:33
Django version 3.0.4, using settings 'TsmWeb.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

10.之后我们需要安装uwsgi替我们代替 python manage.py runserver. 因为在生产环境中我们不可能一直手动得去开启服务器,这个时候就需要uwsgi,刚刚已经安装过uwsgi。我们在服务器项目目录下创建一个test.py 文件。


# test.py

def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello World"

11. 之后在linux 命令行输入


uwsgi --http :8001 --wsgi-file /‘路径,从跟开始'/test.py

如果出现下面得代码,则表示成功:


*** Starting uWSGI 2.0.18 (64bit) on [Fri May 8 11:00:36 2020] ***
compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-39) on 07 May 2020 02:26:03
os: Linux-3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020

12.之后我们需要安装Nginx


yum install -y pcre pcre-devel

yum install -y zlib zlib-devel

yum install gcc-c++
yum install -y openssl openssl-devel

wget -c https://nginx.org/download/nginx-1.14.0.tar.gz

tar -zxvf nginx-1.14.0.tar.gz

cd nginx-1.14.0
./configure

make
make install

13.之后测试nginx是否可以正常使用,我们需要进到nginx文件下得sbin/ 目录,运行  ./nginx ,之后在浏览器访问我们地址即可。如果出现 Welcome to Nginx! 即表示成功

14.现在是nginx和uwsgi配置,这个也是最头疼的。


# uwsgi 官网
https://uwsgi-docs.readthedocs.io/en/latest/

# nginx主要问题在 nginx.conf,下面附上详解
https://www.jb51.net/article/131362.htm

来源:http://www.cnblogs.com/zhaoxianxin/p/12849331.html

标签:nginx,uwsgi,django,部署
0
投稿

猜你喜欢

  • 如何使用SQL Server中的客户端配置工具

    2009-01-13 14:05:00
  • php实现的微信分享到朋友圈并记录分享次数功能

    2023-10-17 04:32:14
  • 有关缓存 Cache 的随想

    2008-06-09 14:25:00
  • 解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码

    2011-06-06 10:29:00
  • Python pymongo模块用法示例

    2022-05-23 20:00:21
  • Python中scatter散点图及颜色整理大全

    2022-10-06 02:17:51
  • python接口测试对修改密码接口进行压测

    2022-05-16 04:26:15
  • 2009年五一劳动节logo欣赏

    2009-05-02 18:26:00
  • 从绘画语言的发展,看视觉设计风格

    2008-08-03 17:11:00
  • python用函数创造字典的实例讲解

    2021-04-20 13:55:11
  • 从MySQL4.0向MySQL5迁移数据

    2007-11-19 13:11:00
  • python 实现体质指数BMI计算

    2023-01-25 12:44:56
  • python实现学生信息管理系统

    2021-11-27 11:46:42
  • Python画图常用命令大全(详解)

    2023-04-17 15:20:16
  • Python高级特性——详解多维数组切片(Slice)

    2023-01-20 17:04:13
  • Python错误的处理方法

    2021-08-01 05:38:15
  • 微信小程序顶部导航栏可滑动并选中放大

    2023-08-23 18:49:59
  • Python数据分析之 Pandas Dataframe合并和去重操作

    2022-12-31 07:11:59
  • Oracle 存储过程总结(一、基本应用)

    2009-07-07 10:21:00
  • SQL语句练习实例之三——平均销售等待时间

    2011-10-24 20:11:47
  • asp之家 网络编程 m.aspxhome.com