centos + anaconda + django + uwsgi + nginx 部署

# info
# centos 7
# anaconda 2019.03
# python 3.6
# django 2.1
# uwsgi 2.0.18
# nginx 1.16.1

1. 安装基础包

# yum groupinstall "Development tools"
# yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
# yum install  pcre pcre-devel pcre-static
# yum install python3-devel
# yum install uwsgi-plugin-python36*

2. 项目目录

  1. linux下创建新用户,用户名为cjc
    # useradd cjc
    
  2. 修改用户密码
    # passwd cjc
    
  3. 用户家目录下创建目录DownloadsProject
    $ mkdir ~/Downloads/
    $ mkdir ~/Project/
    

3. Anaconda

  1. 安装wget
    # yum install wget
    
  2. 使用wgetAnaconda下载至~/Downloads/
    $ wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2019.03-Linux-x86_64.sh
    
  3. 安装Anaconda
    $ bash ~/Downloads/Anaconda3-2019.03-Linux-x86_64.sh
    
  4. 刷新环境
    $ source ~/.bashrc
    

4. 项目环境

  1. 使用conda创建虚拟环境My_Django,指定python版本为3.6
    $ conda create -n My_Django python==3.6
    

5. django

  1. 激活虚拟环境My_Django
    $ conda activate My_Django
    
  2. 安装django
    $ pip install django==2.1
    
  3. ~/Project/目录下生成项目Myweb
    $ django-admin startproject Myweb
    
  4. 生成应用Myapp
    $ python manage.py startapp Myapp
    
  5. django的简单配置Myweb/Myweb/settings.py
    ALLOWED_HOSTS = ['*',]
    INSTALLED_APPS = [    
    'django.contrib.admin',    
    'django.contrib.auth',    
    'django.contrib.contenttypes',    
    'django.contrib.sessions',    
    'django.contrib.messages',    
    'django.contrib.staticfiles',    
    'Myapp',]
    TEMPLATES = [    
    {        
    'BACKEND': 'django.template.backends.django.DjangoTemplates',        
    'DIRS': [os.path.join(BASE_DIR, 'templates'),],        
    'APP_DIRS': True,        
    'OPTIONS': {            
    'context_processors': [
    'django.template.context_processors.debug',
    'django.template.context_processors.request',
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',            
    ],       
    },   
    },
    ]
    LANGUAGE_CODE = 'zh-hans'
    TIME_ZONE = 'Asia/Shanghai'
    STATIC_URL = '/static/'
    STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
    STATIC_ROOT = '/home/cjc/static/'
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    

6. django 首页

  1. Bootstrap下载并将下载后的文件解压到Myweb/static/

    https://v3.bootcss.com/getting-started/#download

  2. Myweb/templates/Myapp/index.html
  3. Myweb/Myapp/views.py
    def index(request):    
        return render(request, 'Myapp/index.html')
    
  4. Myweb/Myweb/urls.py
    from django.contrib import adminfrom 
    from django.urls import pathfrom 
    from Myapp.views import index as Myapp_index
    urlpatterns = [
    path('admin/', admin.site.urls),    
    path('', Myapp_index),]
    

7. uwsgi

  1. 安装uwsgi
    $ pip install uwsgi
    
  2. ~/Project/Myweb/创建uwsgi.ini文件

    How to use Django with uWSGI

    [uwsgi]
    socket = :8000
    chdir = /home/cjc/Project/Myweb
    module = Myweb.wsgi
    master = true
    processes = 5
    threads = 5
    vacuum = true
    pidfile = /tmp/Myweb-master.pid
    daemonize = /var/log/uwsgi/Myweb.log
    
    socket使用套接字连接
    chdir项目路径,即包含mysite软件包的目录
    module要使用的wsgi模块
    master启动主线程
    processes启动进程数
    threads启动线程数
    vacuum服务器退出时自动删除pid
    pidfile指定启动时的pid
    daemonizeuwsgi日志路径
  3. 启动uwsgi
    $ uwsgi --ini uwsgi.ini
    
  4. 其他
    # 重新启动
    $ uwsgi --reload /tmp/Myweb-master.pid
    # 关闭
    $ uwsgi --stop /tmp/Myweb-master.pid
    

8. Nginx

  1. 安装nginx
    # yum install nginx
    
  2. 配置nginx/etc/nginx/nginx.conf
    user cjc;
       
           server {
            listen  80;
            server_name  127.0.0.1;
    
            location / {
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:8000;
                uwsgi_param UWSGI_SCRIPT Myweb.wsgi;
                uwsgi_param UWSGI_CHDIR /home/cjc/Project/Myweb;
                client_max_body_size 35m;
            }
    
            location /static {
                alias /home/cjc/static;
            }
    
        }
    
  3. 开启nginx服务
    # systemctl start nginx
    
  4. 其他
    # 重新启动
    # systemctl restart nginx
    # 关闭
    # systemctl stop nginx
    

9. 可能遇到的问题

  1. uwsgi安装需要gccpcre
    # log
    !!! no internal routing support, rebuild with pcre support !!!
    
  2. nginx报错502
    关闭firewall
    # systemctl stop firewalld
    
    关闭selinux
    # 临时关闭
    setenforce 0
    # 查看selinux状态
    getenforce
    # 永久关闭(需要重新启动)
    vim /etc/selinux/config
    SELINUX=disabled
    
  3. 静态文件访问
    配置STATIC_ROOT,并使用python manage.py collectstatic收集静态文件,配置nginx/static,配置nginx中的user
发布了80 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/C_abua/article/details/104391695
今日推荐