nginx 部署_nginx+uwsgi部署django项目

uwsgi概述:

    uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

nginx+uwsgi+django之间的通信关系

08c39b3031338304816bd1c7e11deee6.png

c84d32e19d623dbf184bdab7f113f151.png

实现步骤:

  • 安装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

f90f467b8dba7bd35c92c07dd90e9188.png

二、将项目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

6cff45d5d5e61096b3e9e8dbc49a9ecf.png

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页面访问

97544bfd88bf413aa0690f038449c02b.png

发现并未加载出静态文件,通过nginx日志查看是因为权限问题

54e40b6a0d26a6d26ab1d5ddf87e059a.png

给静态文件目录添加权限,再次访问正常显示

chmod  777  -R 静态文件目录

五、配置线上admin后台静态文件

默认情况下线上admin后台访问是没有加载到静态文件的 访问如下

711a1ca74bf71174f7d3687ee7705b6b.png

需要通过配置使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、最后将搜集到的静态文件复制到项目配置的静态文件目录当中即可

d80bd7d02923c93446dc755c47cf3809.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值