随笔- 310  文章- 1  评论- 0  阅读- 86066 

安装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.ImproperlyConfiguredError 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            # 关闭

 

 posted on   boye169  阅读(181)  评论(0编辑  收藏  举报
编辑推荐:
· .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 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示