一、安装sqlite
[root@web01 ]# yum -y install sqlite sqlite-devel
[root@web01 ]# wget --no-check-certificate https://www.sqlite.org/2017/sqlite-autoconf-3170000.tar.gz --no-check-certificate
[root@web01 sqlite]# ./configure --prefix=/usr/local/sqlite3 --disable-static --enable-fts5 --enable-json1 CFLAGS="-g -O2 -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_RTREE=1"
[root@web01 sqlite]# make && make install
二、重新编译安装python3.6
[root@web01 ]# cd Python-3.6.0 #python3.6默认编译安装的路径为/usr/local/bin
[root@web01 Python-3.6.0]# LD_RUN_PATH=/usr/local/sqlite3/lib ./configure LDFLAGS="-L/usr/local/sqlite3/lib" CPPFLAGS="-I /usr/local/sqlite3/include"
[root@web01 Python-3.6.0]# LD_RUN_PATH=/usr/local/sqlite3/lib make
[root@web01 Python-3.6.0]# LD_RUN_PATH=/usr/local/sqlite3/lib make install
[root@web01 ]# python3
>>> import sqlite3 #验证sqlite是否正确安装
三、安装配置uwsgi
(env) [root@web01 ~]#
pip install uwsgi #进入虚拟环境安装uwsgi模块
[root@web01 ~]# pip3 install uwsgi #也可直接安装到python3目录
使用上面的安装方法启动uwsgi的方式需要改为
[root@web01 ~]# /usr/local/bin/uwsgi --ini uwsgi.ini
uwsgi使用参数方式运行django项目,测试uwsgi模块是否能正常工作
[root@web01 ]# /root/python3-env/env/bin/uwsgi --http 10.47.39.8:8080 --chdir /root/project --home=/root/python3-env/env/ --module project.wsgi
说明:--home:指定python3虚拟环境路径,如果不使用虚拟环境运行可以去掉。--chdir:指的是django项目文件实际路径,project.wsgi:指的是project中的wsgi.py文件
uwsgi使用配置文件方式运行django项目
[root@web01 ~]# /root/python3-env/env/bin/uwsgi --ini uwsgi.ini #把uwsgi模块安装到python3虚拟环境的启动方式
[root@web01 ~]# vim uwsgi.ini #创建uwsgi.ini文件
# myweb_uwsgi.ini file [uwsgi] #配置uwsgi以nginx用户运行 uid = nginx # Django-related settings #如果你想临时使用http访问uwsgi服务。那么需要把之前的uwsgi服务停止,并使用下面命令来启动 #uwsgi --http :8000 --wsgi-file application.py #如果是使用uwsgi.ini配置文件,那么修改里面内容把socket=:8000替换成http=:8000。 #然后再次启动uwsgi --ini /patch/to/uwsgi.ini #注意:以上两种方式启动不能混用,例如使用uwsgi --http :8000 --ini /path/to/uwsgi.ini会造成端口已经被占用的错误 #http = 10.47.39.8:8080 socket = /root/project/uwsgi.sock #配置socket的连接IP和端口 socket = 127.0.0.1:7000 # the base directory (full path)(指定项目文件的绝对路径) chdir = /root/project # 指定django项目中静态文件的路径(一般不配置可使用nginx处理静态文件效率更高) static-map = /static/=/root/project/statics # Django s wsgi file module = project.wsgi #或指定wsgi.py文件在项目中的路径 #wsgi-file = project/wsgi.py #home:指定python3虚拟环境的绝对路径(使用虚拟环境运行时则开启该项) home = /root/python3-env/env/ max-requests = 5000 #让uWSGI在后台运行并将日志打到 /var/log/uwsgi/uwsgi.log文件中 daemonize = /var/log/uwsgi/uwsgi.log #使uWSGI在后台运行,并且将日志消息发送给监听192.168.0.100:4000这个地址的udp服务器 #daemonize = 192.168.0.100:4000 #buffer-size:设置用于uwsgi包解析的内部缓存区大小(默认是4k),如果要接受一个拥有很多请求头的大请求,你可以增加这个值到64k buffer-size = 32768 # process-related settings # master(启动主进程) master = true # 指定进程和线程数 processes = 2 threads = 2 #指定pid文件路径 pidfile = /opt/proj/script/uwsgi.pid # ... with appropriate permissions - may be needed #默认权限为666,设置socket文件的权限为664 # chmod-socket = 664 #设置socket文件运行用户和属组(用户:组) #chown-socket = nginx:nginx # vacuum:自动移除unix Socket和pid文件当服务停止的时候 vacuum = true
uwsgi.ini文件参考配置
# myweb_uwsgi.ini file [uwsgi] # Django-related settings uid = nginx socket = 127.0.0.1:7000 #socket = /root/project/script/uwsgi.sock #http = 10.47.39.8:8080 # the base directory (full path) chdir = /root/project # Django s wsgi file #module = project.wsgi wsgi-file = project/wsgi.py home = /root/python3-env/env/ max-requests = 5000 daemonize = /var/log/uwsgi/project.log pidfile = /root/project/script/uwsgi.pid # 指定静态文件 #static-map = /static/=/root/project/car/statics #buffer-size = 65536 # process-related settings # master master = true # maximum number of worker processes processes = 2 threads = 4 chown-socket = nginx:nginx #chmod-socket = 666 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit vacuum = true
四、nginx配置
server { listen 80; # 要监听的端口 server_name localhost; # 配置域名 access_log /var/log/nginx/access.log main; # Nginx日志配置 charset utf-8; # Nginx编码 gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; # 支持压缩的类型 error_page 404 /404.html; # 错误页面 error_page 500 502 503 504 /50x.html; # 错误页面 # 指定uwsgi路径 # 这个location和咱们Django的url(r'^admin/', admin.site.urls)作用是一样的 location / { include uwsgi_params; # 导入一个Nginx模块它是用来和uWSGI进行通讯的 uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间 uwsgi_pass unix:/root/project/script/uwsgi.sock; # 指定uwsgi的sock文件所有动态请求就会直接丢给他 #uwsgi_pass 127.0.0.1:7000; #指定sock地址和端口(指定sock文件和sock地址加端口这两种方式二选一) } # 指定静态文件路径,使用sock文件连接可使用以下配置方式(需要使用root用户运行nginx) location /static/ { alias /opt/proj/teacher/static/; index index.html index.htm; } #当配置为使用sock地址和端口连接uwsgi时使用下面的配置方式,需要把静态文件copy到nginx的html目录(使用非root用户配置方式) #[root@web01 nginx]# ls html/ #50x.html index.html static location /static/ { root html; index index.html index.htm; }
注:
nginx以非root用户运行时uwsgi_pass选项不能使用sock文件的方式连接,否则会报以下错误
connect() to unix:/root/scienbizip/script/uwsgi.sock failed (13: Permission denied)
参考链接:
https://www.cnblogs.com/chenice/p/6921727.html
http://www.cnblogs.com/zhouej/archive/2012/03/25/2379646.html #uwsgi参数详解