Django Nginx+uWSGI 安装配置
链接:??
https://www.runoob.com/django/django-nginx-uwsgi.html
yum update
yum install gcc
pip install uwsgi
查看uwsgi动态链接库是否有问题: which uwsgi ldd /root/anaconda3/bin/uwsgi 发现:libicui18n.so.58 => not found libicuuc.so.58 => not found libicudata.so.58 => not found 通过 LDD 发现 uwsgi 找不到三个包(具体就是 not found 的三个) 于是就把anaconda3/lib 下相应的包软链到/lib64下去(64bit 机器,如果时32bit 机器则软链到/lib下) [[email protected] ~]# ln -s /root/anaconda3/lib/libicui18n.so.58 /lib64/libicui18n.so.58 [[email protected] ~]# ln -s /root/anaconda3/lib/libicuuc.so.58 /lib64/libicuuc.so.58 [[email protected] ~]# ln -s /root/anaconda3/lib/libicudata.so.58 /lib64/libicudata.so.58 运行uwsgi:发现还有问题 于是: 把libstdc++.so.6.0.24拷贝到/lib64目录下。 cp /root/anaconda3/lib/libstdc++.so.6.0.25 /lib64/ 删除原来的libstdc++.so.6符号连接。 rm -fr /lib64/libstdc++.so.6 新建新符号连接。 ln -s /lib64/libstdc++.so.6.0.25 /lib64/libstdc++.so.6 再次执行uwsgi查看结果符合就哦了。
测试:创建index.pydef application(env, start_response): start_response(‘200 OK‘, [(‘Content-Type‘,‘text/html‘)]) return [b"Hello World"]?uwsgi --http :9090 --wsgi-file index.py浏览器访问9090端口
添加并发
uwsgi --http :9090 --wsgi-file index.py --processes 4 --threads 2
部署 Django
#在项目中创建djangospider.ini[uwsgi]# 使用Nginx做反向代理时使用socket#socket=0.0.0.0:8000 # 不通过Nginx反向代理,直接做web服务器时使用httphttp = 0.0.0.0:8000#项目目录chdir = /usr/www/DjangoSpider/wsgi-file = DjangoSpider/wsgi.pyprocesses = 4threads = 2?#django项目setting中ALLOWED_HOSTS = [] 改为ALLOWED_HOSTS = [‘*‘]?启动:uwsji --ini djangospider.ini
?在www中创建uwsgi文件夹,用来存放uwsgi相关文件#### 启动: uwsgi --ini xxx.ini#### 重启:uwsgi --reload xxx.pid#### 停止:uwsgi --stop xxx.pid
配置Nginx
nginx服务器安装:
下载对应当前系统版本的nginx包(package) # wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 建立nginx的yum仓库 # rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm 下载并安装nginx # yum install -y nginx 启动nginx服务 systemctl start/restart nginx 验证:直接请求IP,可见nginx 配置 默认的配置文件在 /etc/nginx 路径下,使用该配置已经可以正确地运行nginx;如需要自定义,修改其下的 nginx.conf 等文件即可。 查看是否启动:(如果有master和worker两个进程证明启动成功) ps -ef | grep nginx 停止(建议用quit,不建议用stop) nginx -s quit 重新加载配置文件 nginx -s reload 默认配置文件位置 /etc/nginx/conf.d/default.conf 备份默认配置文件 cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak welcome所在位置(默认值:/usr/share/nginx/html/)
修改nginx配置文件:
# 负载均衡 upstream upstream1 { server linux——ip:8000; # 处理相同业务的多个服务器 (负载均衡) } server { listen 80; server_name localhost; # 对外部用户提供的统一域名 # 将动态请求转发给uwsgi服务器 location / { # 包含uwsgi请求的参数 include uwsgi_params; # 转交请求给uwsgi服务器 (uwsgi服务器的ip和端口号) #uwsgi_pass 127.0.0.1:8000; # 单个uwsgi服务器(不需要负载均衡) uwsgi_pass upstream1; } # 如果是静态资源请求就直接响应资源。 location /static { # 指定静态文件存放的目录 (需要修改/usr/...目录的操作权限。 $ chmod 777 /usr) alias /usr/www/项目名/static/; } }
验证:
nginx -s reload
请求80端口,可能出现permission 问题(办法:先关掉selinux,setenforce 0 )
收集Django中的静态资源:
项目名/settings.py(项目配置,STATIC_ROOT设置收集静态资源的路径): STATIC_URL = ‘/static/‘ STATICFILES_DIRS = [os.path.join(BASE_DIR, ‘static‘)] # 指定收集静态文件的路径 (需要修改/var/...目录的操作权限) STATIC_ROOT=‘./static‘ # 收集资源 $ python manage.py collectstatic
原文地址:https://www.cnblogs.com/canhun/p/11056411.html
时间: 2024-08-29 22:48:25