安装uwsgi(linux)
下载tar安装uwsgi
下载地址http://uwsgi-docs.readthedocs.org/en/latest/Download.html
1 2 3 4 5 6 7 | wget http: / / projects.unbit.it / downloads / uwsgi - 2.0 . 11.2 .tar.gz tar - zxvf uwsgi - 2.0 . 11.2 .tar.gz - C / usr / local / cd / usr / local / uwsgi - 2.0 . 11.2 make |
1 2 | / usr / local / uwsgi - 2.0 . 11.2 / uwsgi - - version ln - s / usr / local / uwsgi - 2.0 . 11.2 / uwsgi / usr / bin / |
使用pip命令安装
1 2 3 | pip3 install uwsgi / usr / local / python3 / bin / uwsgi - - version ln - s / usr / local / python3 / bin / uwsgi / usr / bin / |
常用命令
1 2 3 | uwsgi - - ini uwsgi.ini # 启动 uwsgi - - reload uwsgi.pid # 重启 uwsgi - - stop uwsgi.pid # 关闭 |
验证
1 2 3 4 5 6 | vi / root / test / test.py def application(env, start_response): start_response( '200 OK' , [( 'Content-Type' , 'text/html' )]) return [b "Hello World" ] 执行命令: uwsgi - - http : 9000 - - chdir / root / test / - - wsgi - file test.py - - daemonize / var / log / uwsgi.log |
nginx安装
1 2 3 4 5 6 7 8 9 10 11 | yum install - y gcc - c + + pcre pcre - devel zlib zlib - devel openssl openssl - devel wget http: / / nginx.org / download / nginx - 1.16 . 0.tar .gz tar - zxvf nginx - 1.16 . 0.tar .gz cd nginx - 1.16 . 0 . / configure - - prefix = / usr / local / nginx make && make install / usr / local / nginx / sbin / nginx 启动 / usr / local / nginx / sbin / nginx - s stop 快速退出 / usr / local / nginx / sbin / nginx - s quit 优雅退出 / usr / local / nginx / sbin / nginx - s reload 变换配置,重新启动新的工作进程 / usr / local / nginx / sbin / nginx - s reopen 重新打开日志文件 |
注:启动完成后,在外网访问不到的情况下,必须关掉防火墙或设置防火墙
端口白名单,否则外网不能访问
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/etc/init.d/iptables save
/etc/init.d/iptables restart
安装python3
1 2 3 4 5 6 7 8 9 | yum - y install zlib - devel bzip2 - devel openssl - devel ncurses - devel sqlite - devel readline - devel tk - devel gdbm - devel db4 - devel libpcap - devel xz - devel wget https: / / www.python.org / ftp / python / 3.6 . 3 / Python - 3.6 . 3.tgz mkdir / usr / local / python3 tar - zxvf Python - 3.6 . 3.tgz cd Python - 3.6 . 3 . / configure - - prefix = / usr / local / python3 make && make install ln - s / usr / local / python3 / bin / python3 / usr / bin / python3 ln - s / usr / local / python3 / bin / pip3 / usr / bin / pip3 |
安装python Django模块
1 | pip3 install Django |
安装django-bootstrap3
1 | pip install django - bootstrap3 |
创建django工程
1 2 3 4 5 6 7 | django - admin.py startproject pythonWeb 若出现错误: - bash: / usr / bin / django - admin.py: 没有那个文件或目录, 则执行命令: ln - s / usr / local / python3 / lib / python3. 6 / site - packages / django / bin / django - admin.py / usr / bin #ln -s /usr/local/python3/bin/django-admin.py /usr/bin/ |
若出现错误:
执行命令:
rm /bin/python
ln -s /bin/python3 /bin/python
创建app
1 2 | cd pythonWeb / django - admin.py startapp app |
更新数据库
1 2 | python manage.py makemigrations python manage.py migrate |
创建超级用户
1 | python manage.py createsuperuser |
修改文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # 修改pythonWeb/urls.py from django.contrib import admin from django.urls import path,include urlpatterns = [ path( 'admin/' , admin.site.urls), path(r 'app/' ,include( 'app.urls' )), ] #修改app/views.py # -*- coding: utf-8 -*- from django.shortcuts import render # Create your views here. from django.http import HttpResponse def index(request): return HttpResponse(u "欢迎!" ) # 新建app/urls.py from app import views from django.urls import path,include urlpatterns = [ path(r 'index' ,views.index), ] # 修改settings.py ALLOWED_HOSTS = [ '192.168.28.131' ] 注:ALLOWED_HOSTS = [ "*" ], “ * ”表示的就是任意的ip地址 |
启动
1 2 3 4 5 6 | python3 manage.py runserver 0.0 . 0.0 : 8888 uwsgi - - http 192.168 . 28.131 : 8080 - - file pythonWeb / wsgi.py - - static - map = / static = static 参数说明: - - http 这个就和runserver一样指定IP 端口 - - file 这个文件就里有一个反射,如果你在调用他的时候没有指定Web Server就使用默认的 - - static 做一个映射,指定静态文件 |
这是因为centos 默认的版本为3.7.17,并没有更新,我们只需要安装新的SQLite代替老版本就可以了。可以去搜索sqlite官网去下载源码。
解决方法:
wget https://www.sqlite.org/2019/sqlite-autoconf-3280000.tar.gz
tar -zxvf sqlite-autoconf-3280000.tar.gz
cd sqlite-autoconf-3280000
./configure --prefix=/usr/local
make && make install
find /usr/ -name sqlite3
rm -rf sqlite-autoconf-3280000* #删除不必要的文件
mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
vim ~/.bashrc
export LD_LIBRARY_PATH="/usr/local/lib"
source ~/.bashrc
python
import sqlite3
sqlite3.sqlite_version
部署
1 2 3 4 | killall - 9 uwsgi #先杀死现有的uwsgi进程 uwsgi - x socket.xml #xml进行uwsgi启动 uwsgi - - ini socket.ini #ini进行uwsgi启动 service nginx reload #重启nginx |
uwsgi配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | vim / root / pythonWeb / uwsgi.ini [uwsgi] # 使用nginx连接时 使用 socket = 127.0 . 0.1 : 9000 # 直接作为web服务器使用 #http=127.0.0.1:9000 # 配置工程目录 chdir = / root / pythonWeb # 配置项目的wsgi目录,相对于工程目录 #module=pythonWeb.wsgi wsgi - file = pythonWeb / wsgi.py #配置进程,线程信息 processes = 4 threads = 2 enable - threads = True master = True pidfile = uwsgi.pid daemonize = uwsgi.log |
启动uwsgi
1 | uwsgi - - ini / root / pythonWeb / uwsgi.ini |
nginx配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | server { listen 80 ; server_name localhost; charset utf - 8 ; # Nginx编码 client_max_body_size 75M ; #root /root/pythonWeb; location / { include uwsgi_params; uwsgi_pass localhost: 9000 ; } location / static / { #项目中静态文件的路径 alias / root / pythonWeb / static / ; #项目的静态文件 } } |
启动nginx
1 2 3 4 5 | / usr / local / nginx / sbin / nginx 启动 / usr / local / nginx / sbin / nginx - c / usr / local / nginx / conf / nginx.conf 启动nginx,并指定配置文件 / usr / local / nginx / sbin / nginx - s stop 快速退出 / usr / local / nginx / sbin / nginx - s quit 优雅退出 / usr / local / nginx / sbin / nginx - s reload 变换配置,重新启动新的工作进程 |
错误
错误:django.core.exceptions.ImproperlyConfigured:Error loading MySQLdb module: No module named 'MySQLdb
1 2 3 4 5 6 | 解决方法: 1. 安装pymyql pip install pymysql 2. 在_init_.py文件中添加以下代码 import pymysql pymysql.install_as_MySQLdb() |
错误:Watching for file changes with StatReloader Performing system checks.
1 2 3 4 5 6 7 | 命令如下: pip install django = = 2.1 . 7 #django==版本号 或者 pip install - - upgrade xxxx #来升级包xxx 或者先删除包 再安装 pip uninstall xxx pip install xxx |
错误:Nginx访问不了Django中的静态文件
1 | manage.py同级目录下执行python manage.py collectstatic,用这条命令来收集Django项目中所有的静态文件(包括Django自带的样式文件)到setting.py中STATIC_ROOT = '/你的路径/static' 你配置的指定路径下 |
uwsgi --ini uwsgi.ini # 启动
uwsgi --reload uwsgi.pid # 重启
uwsgi --stop uwsgi.pid # 关闭
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统