安装uwsgi(linux)
下载tar安装uwsgi
下载地址http://uwsgi-docs.readthedocs.org/en/latest/Download.html
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

/usr/local/uwsgi-2.0.11.2/uwsgi --version ln -s /usr/local/uwsgi-2.0.11.2/uwsgi /usr/bin/

使用pip命令安装
pip3 install uwsgi /usr/local/python3/bin/uwsgi --version ln -s /usr/local/python3/bin/uwsgi /usr/bin/

常用命令
uwsgi --ini uwsgi.ini # 启动 uwsgi --reload uwsgi.pid # 重启 uwsgi --stop uwsgi.pid # 关闭
验证
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安装
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
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模块
pip3 install Django

安装django-bootstrap3
pip install django-bootstrap3
创建django工程
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
cd pythonWeb/ django-admin.py startapp app

更新数据库
python manage.py makemigrations python manage.py migrate
创建超级用户
python manage.py createsuperuser
修改文件
# 修改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地址
启动
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
部署
killall -9 uwsgi #先杀死现有的uwsgi进程 uwsgi -x socket.xml #xml进行uwsgi启动 uwsgi --ini socket.ini #ini进行uwsgi启动 service nginx reload #重启nginx
uwsgi配置
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
uwsgi --ini /root/pythonWeb/uwsgi.ini

nginx配置
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
/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.安装pymyql pip install pymysql 2.在_init_.py文件中添加以下代码 import pymysql pymysql.install_as_MySQLdb()
错误:Watching for file changes with StatReloader Performing system checks.

命令如下: pip install django==2.1.7 #django==版本号 或者 pip install --upgrade xxxx #来升级包xxx 或者先删除包 再安装 pip uninstall xxx pip install xxx
错误:Nginx访问不了Django中的静态文件
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
浙公网安备 33010602011771号