uwsgi概述:
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。
nginx+uwsgi+django之间的通信关系
实现步骤:
安装python3
git clone项目
部署uwsgi
部署nginx
admin后台静态文件搜集
一、安装python3(python3.9)
1、安装python3所需依赖包
yum install libffi-devel wget sqlite-devel xz gcc atuomake zlib-devel libxml* openssl-devel epel-release git -y
2、下载安装包
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tar.xz
3、编译安装
xz -d Python-3.9.0.tar.xztar -xf Python-3.9.0.tarcd Python-3.9.0./configure --prefix=/usr/local/python39make && make install
4、简历软连接并验证
ln -s /usr/local/python39/bin/python3.9 /usr/local/bin/python3ln -s /usr/local/python39/bin/pip3.9 /usr/local/bin/python3
二、将项目git到本地任意目录,并注意修改数据库配置(略)
三、部署uwsgi
1、使用pip安装uwsgi
pip install uwsgi
2、测试uwsgi,编写测试文件
def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"hello world"]
3、启动uwsgi,并通过浏览器访问
uwsgi -http :8000 -wsgi-file test.py
4、在django项目目录编写uwsgi配置文件
vim uwsgi.xml<uwsgi> <socket>127.0.0.1:8001socket> <chdir>/root/django_blog/Mysite/chdir> <module>mysite.wsgimodule> <processes>4processes> <daemonize>uwsgi.logdaemonize>uwsgi
5、执行如下命令,如果没报错进行下一步
uwsgi -x uwsgi.xml
四、部署nginx
1、安装nginx,安装脚本如下
echo -e "\033[31m====================注意====================\033[0m"echo "#安装包放在/data/soft/下"echo "#安装路径在/data/app/nginx/下"mkdir -p /data/appmkdir -p /data/softuseradd -M -s /sbin/nologin nginxsleep 2echo "安装nginx所需插件......"yum -y install pcre pcre-devel openssl openssl-devel gcc gcc-c++echo "检查是否有wget命令,并通过wget下载nginx包到/data/soft/"if [ `rpm -qa | grep wget | wc -l` -eq 1 ];thenread -p "请输入需要下载的版本号(x.x.x格式):" versioncd /data/soft/wget wget http://nginx.org/download/nginx-${version}.tar.gzelseyum -y install wgetread -p "请输入需要下载的版本号(x.x.x格式):" versioncd /data/soft/wget wget http://nginx.org/download/nginx-${version}.tar.gzfitar xvf nginx-${version}.tar.gzcd nginx-${version}./configure --user=nginx --group=nginx --prefix=/data/app/nginx --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-stream && make && make installln -s /data/app/nginx/sbin/nginx /usr/local/sbin/ln -s /data/app/nginx/bin/nginx /usr/local/bin/nginx
2、修改nginx配置文件备份原有nginx.conf,添加新的nginx.conf如下内容
user root root; #一定要写 不然加载静态文件403worker_processes 1;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 80; server_name 192.168.229.141; #改为自己的域名 charset utf-8; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8001; #端口要和uwsgi里配置的一样 uwsgi_param UWSGI_SCRIPT Mysite.wsgi; #wsgi.py所在的目录名+.wsgi uwsgi_param UWSGI_CHDIR /root/django_blog/Mysite; #项目路径,设置为自己的 } location /static/ { alias /root/django_blog/Mysite/myapp/static/; #静态资源路径,设置为自己的 } }}
3、启动nginx并通过web页面访问
发现并未加载出静态文件,通过nginx日志查看是因为权限问题
给静态文件目录添加权限,再次访问正常显示
chmod 777 -R 静态文件目录
五、配置线上admin后台静态文件
默认情况下线上admin后台访问是没有加载到静态文件的 访问如下
需要通过配置使admin后台静态文件生效
1、在项目的setting.py文件尾部增加如下内容
STATIC_ROOT = '/root/django_blog/Mysite/static'#设置改目录的目的是为了搜集admin后台静态文件时放到该目录
2、通过如下命令搜集,会将admin的所有静态文件搜集到/root/django_blog/Mysite/static该目录
python manage.py collectstatic
3、在setting.py文件中将STATIC_ROOT = '/root/django_blog/Mysite/static'删除,否则项目无法启动
4、最后将搜集到的静态文件复制到项目配置的静态文件目录当中即可