CentOs Linux 对于Django uwsgi + Nginx 的安装与部署

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下)

[root@localhost ~]# ln -s /root/anaconda3/lib/libicui18n.so.58 /lib64/libicui18n.so.58
[root@localhost ~]# ln -s /root/anaconda3/lib/libicuuc.so.58 /lib64/libicuuc.so.58
[root@localhost ~]# 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.py
def 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服务器时使用http
http = 0.0.0.0:8000
#项目目录
chdir = /usr/www/DjangoSpider/
wsgi-file = DjangoSpider/wsgi.py
processes = 4
threads = 2

#django项目setting中
ALLOWED_HOSTS = [] 改为
ALLOWED_HOSTS = ['*']

启动:uwsgi --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


 

posted @ 2019-06-20 07:58  老凯—RGZN  阅读(542)  评论(0编辑  收藏  举报