centos7下部署django服务

网址参考:https://www.cnblogs.com/djangocn/p/9538551.html

一、python虚拟环境中安装uwsgi:

  workon mypython3

  pip install uwsgi  或者 pip install  -i https://pypi.tuna.tsinghua.edu.cn/simple  uwsgi

  安装uwsgi注意事项:

从yum源上下载安装对应python版本的python-devel,如果不清楚的话先用 python --version 命令查看python版本,然后yum search python3,Tab键搜索出来下载。

[root@VM_0_13_centos ~]# yum install python36u-devel

 解决uwsgi安装失败问题:

1./mnt/udisk/project/myenv/myfirstenv/bin/python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip    #升级pip到最新
2.centos8安装依赖命令:
  yum -y install python3-devel libevent-devel libjpeg-devel
centos7安装依赖命令:
  yum -y install python-devel libevent-devel libjpeg-devel
3.重新安装uwsgi:
  pip install  -i https://pypi.tuna.tsinghua.edu.cn/simple  uwsgi

二、安装完成后,为uwsgi建立软连接

  cd //

  find . -name mypython3  :找到虚拟环境所在目录

  ln -s /root/.virtualenvs/mypython3/bin/uwsgi /usr/bin/uwsgi   :建立软连接

三、在django项目的根目录下创建项目的创建文件:wanwenyc.xml,用于uwsgi连接nginx

  cd  /usr/local/mydjangoweb/wanwenyc

  touch wanwenyc.xml   #wanwenyc.xml中的“wanwenyc”对应django项目的名字,例如django项目名为"mysite",则此处应该为mysite.xml

  vim wanwenyc.xml:

  wanwenyc.xml内容如下:

<uwsgi>    
   <socket>127.0.0.1:8997</socket><!-- 内部端口,自定义 -->
   <chdir>/usr/local/mydjangoweb/wanwenyc</chdir><!-- 项目路径 -->           
   <module>wanwenyc.wsgi</module>
   <processes>4</processes> <!-- 进程数 -->    
   <daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>

  :wq! :保存

  uwsgi -x wanwenyc.xml     #运行wanwenyc.xml文件

  

四、将所有静态文件整合到一个目录下

  进入项目的settings.py文件中,将所需所有的静态文件整合到一个静态目录中

  1.在项目中创建文件夹“staticall”;

  2.在settings中配置静态文件路径

  

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticall')   #将"staticall"文件夹作为总的静态文件的根目录,需要运行python manage.py collectstatic才能使用
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),
                    os.path.join(BASE_DIR,'extra_apps/xadmin', 'static'),  #将xadmin下的静态文件加到总的静态文件路径下
                    ]   #将static加入python根搜索路径,总的静态文件路径

  其中STATIC_URL与STATIC_ROOT不同,不能用同一个文件夹,否则会混乱

  STATIC_ROOT:运行manage.py collectstatic后静态文件将复制到的目录。注意:不要把你项目的静态文件放到这个目录。

          这个目录只有在运行collectstatic时才会用到。我最开始想当然的以为这个目录和MEDIA_ROOT的作用是相同的,

          致使在开发环境下一直无法找到静态文件。
  STATIC_URL:设置的static file的起始url,这个只可以在template里面引用到。这个参数和MEDIA_URL的含义差不多。
  STATICFILES_DIRS:除了各个app的static目录以外还需要管理的静态文件位置,比如项目公共的静态文件差不多。和TEMPLATE_DIRS的含义差不多。

  3. 运行python manage.py collectstatic,将所有静态文件收集到“staticall”文件夹中,以便nginx静态文件配置使用

  

五、安装nginx并配置:

  1. wget http://nginx.org/download/nginx-1.13.7.tar.gz      #下载nginx-1.13.7.tar.gz

  2. tar -zxvf nginx-1.13.7.tar.gz   #解压nginx-1.13.7.tar.gz

  3. mv nginx-1.13.7  /opt/nginx     #将解压后的文件移动到/opt/nginx的路径下

  4.cd  /opt/nginx   #进入/opt/nginx路径下

  5.  依次执行以下命令:

      ./configure

      make

      make install

   或者  ./configure  &&  make  && make install

centos8安装nginx:yum install nginx
  配置文件路径:/etc/nginx

  6.执行完成后,nginx一般默认安装好的路径为/usr/local/nginx

    在/usr/local/nginx/conf/中先备份一下nginx.conf文件,以防意外。

      cp nginx.conf nginx.conf.bak

    然后打开nginx.conf,把原来的内容删除,直接加入以下内容:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen       62061;    #服务器启动的端口
        server_name  www.django.cn;   #服务器的名字,没有则用127.0.0.1
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8997;
           uwsgi_param UWSGI_SCRIPT wanwenyc.wsgi;
           uwsgi_param UWSGI_CHDIR /usr/local/mydjangoweb/wanwenyc;  #djang项目的根路径
           
        }
        location /static/ {
        alias /usr/local/mydjangoweb/wanwenyc/staticall/;  #django项目的静态文件路径,alias为别名的意思,即指定/static/路径为/usr/local/mydjangoweb/wanwenyc/staticall/
        }
    }
}

  注意:

    1. 此处 uwsgi_pass 后的内容“127.0.0.1:8997”一定要与wanwenyc.xml中的<socket>127.0.0.1:8997</socket>中的内容一致。

    2.    location /static/ {
        alias /usr/local/mydjangoweb/wanwenyc/staticall/;  #django项目的静态文件路径,alias为别名的意思,即指定/static/路径为/usr/local/mydjangoweb/wanwenyc/staticall/
        }   中配置的静态目录“/usr/local/mydjangoweb/wanwenyc/staticall/”一定不要是root用户下的路径,因为nginx访问不到(如果django项目的路径在root用户的用户目录下,即“/root/”目录下,要把django的项目移动到非root目录下,如此处将djang项目由“/root/PycharmProjects/wanwenyc”移动到“/usr/local/mydjangoweb/wanwenyc/”)

六、运行nginx:

  1.cd  /usr/local/nginx/sbin/   #进入/usr/local/nginx/sbin/路径

  2. ./nginx  -t   #运行nginx,查看/usr/local/nginx/conf/中的配置文件(nginx.conf文件)是否有错

  3. 无错后, ./nginx  运行nginx

  4.如果有修改内容,需要重新运行uwsgi和nginx:

    运行uwsgi:

      cd  /usr/local/mydjangoweb/wanwenyc/    #进入项目根目录

      uwsgi -x wanwenyc.xml

    云心nginx:

      cd  /usr/local/nginx/sbin/

      ./nginx -s reload     #重新加载运行nginx

七、访问网址:http://192.168.100.198:62061/ (本机IP+端口号),也可以为:http://127.0.0.1:62061/

八、root用户下的django项目也可以,但是要把静态文件放到一个nginx能访问的目录,例如:/ usr/local/djangostatefile/路径下:

    cd  /usr/local

    mkdir djangostatefile

    cd /root/PycharmProjects/wanwenyc    #/root/PycharmProjects/wanwenyc为root根目录下的django项目根路径

    cp -r staticall  /usr/local/djangostatefile/    #将staticall文件复制放到 /usr/local/djangostatefile/路径下

    然后在/usr/local/nginx/conf/下的nginx.conf文件的配置如下:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen       62061;
        server_name  www.django.cn;
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8997;
           uwsgi_param UWSGI_SCRIPT wanwenyc.wsgi;
           uwsgi_param UWSGI_CHDIR /root/PycharmProjects/wanwenyc;  #root目录下的项目
           
        }
        location /static/ {
        alias /usr/local/djangostatefile/staticall/;    #非root目录下的django静态文件目录
        }
    }
}

  

      cd  /usr/local/nginx/sbin/

      ./nginx -s reload     #重新加载运行nginx

九、nginx设置开机启动:https://www.cnblogs.com/gimin/p/8893559.html

十、nginx 使用使用memcached:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    upstream memcacheds {
        server 127.0.0.1:11211;
    }  #使用memcached

    server {
        listen       62060;
        server_name  www.django.cn;
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8997;
           uwsgi_param UWSGI_SCRIPT wanwenyc.wsgi;
           uwsgi_param UWSGI_CHDIR /root/PycharmProjects/wanwenyc;  #root目录下的项目
           
        }
        location /static/ {
        alias /usr/local/djangostatefile/staticall/;    #非root目录下的django静态文件目录
        }
    }
}

 十一、不使用/usr/local/nginx/ 下的ngixn配置,使用 /usr/sbin/nginx (配置文件在/etc/nginx/路径下)部署:

    cp -r staticall /mydjango/    :把staticall路径下的文件放到 /mydjango路径下

原文地址:https://www.cnblogs.com/jingzaixin/p/13375719.html