阿里云,CentOS安装Django并配置uwsgi和nginx

CentOS安装Django环境

本文采用的服务器为阿里云轻量级应用服务器,所使用的系统是CentOS 7.3,所搭建的环境为python3.7,Django 2.2。

阿里云CentOS系统

  • 将阿里云服务器重置为CentOS系统

    登录阿里云后台服务器,选择重置系统,选择CentOS 7.3,填写短信验证码重置系统。

  • 升级yum

    sudo yum update
    
  • 防火墙设置,开放端口

    由于重置系统为CentOS后,防火墙只会开启22端口,所以其他端口要使用需要自己开启,而CentOS 7后都使用防火墙,而不是使用iptables了,开启后同时需要确认阿里云服务器后台是否开启次端口。

    # 开启防火墙
    sudo systemctl start firewalld.service 
    # 开放80端口
    sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
    # 重启防火墙
    sudo systemctl restart firewalld.service
    # 重置防火墙配置
    sudo firewall-cmd --reload
    
  • 安装数据库mariadb

    # 安装mariadb
    yum -y install mariadb mariadb-server
    # 启动数据库
    sudo systemctl start mariadb
    # 设置数据库开机启动
    sudo systemctl enable mariadb
    # 设置数据库密码等
    mysql_secure_installation
    

CentOS安装python 3.7

我们可以使用python --version来查看当前系统的python版本,我当前的python版本为2.7.5

  • 安装python 3.7

    # 返回主目录,并新建python3文件夹
    cd ~
    mkdir python3
    cd python3
    # 安装python 3 依赖环境
    sudo yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel zlib-devel libffi-devel MySQL-python mysql-devel
    # 下载python 3.7
    wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
    # 解压python
    tar -zxvf Python-3.7.3.tgz
    # 配置python3安装目录
    cd /usr/local
    sudo mkdir python3
    cd ~/Python-3.7.3
    ./configure --prefix=/usr/local/python3/
    # 编译python,make命令可能需要时间很长
    make
    # 安装
    sudo make install
    

    至此python 3.7已经安装成功了,可以cd /usr/local/python3/目录下查看是否安装成功,但是此时在控制台输入python3是没有该命令的,还需要做以下操作:

      sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3
      sudo ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
    

    此时python3和pip3都可以在命令中找到了,最后安装一个mysqlclient

    sudo pip3 install mysqlclient
    

安装Django

  • 安装Django以及测试

    # 安装django
    sudo pip3 install django
    sudo ln -s /usr/local/python3/bin/django-admin /usr/bin
    cd ~
    sudo mkdir Test
    cd Test
    # 创建Django测试工程
    sudo django-admin startproject MyTest
    cd MyTest
    # 启动Django
    sudo python3 manage.py runserver 0.0.0.0:80
    

    此时启动Django应该会报错,需要修改settings.py里面的一些配置,settings.py修改数据库配置

    ALLOWED_HOSTS = []  ->> ALLOWED_HOSTS = ['*']
    # 数据库修改
    DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '自己新建的数据名',
        'USER': 'root',
        'PASSWORD': '配置数据库时的密码',
        'HOST': 'localhost',
        'PORT': '3306',
        }
    }
    

    再次启动Django sudo python3 manage.py runserver 0.0.0.0:80,本机访问服务器地址,可以看到Django的图标等,表明Django的环境已经搭建成功了

配置uwsgi和nginx

  • 安装uwsgi和nginx

    sudo pip3 install uwsgi
    sudo yum -y install nginx
    sudo ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi3
    
  • 配置uwsgi和nginx
    修改项目中的settings.py文件,关闭DEBUG模式,修改静态文件链接,在settings.py中STATIC_URL下添加静态链接文件位置,并在项目中建立静态文件夹static

    # 添加静态链接文件位置,该文件夹需要在服务器上创建
    STATIC_ROOT = os.path.join(BASE_DIR, '../collected_static')
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'static'),
    )
    

    在项目中新建uwsgi配置文件uwsgi.ini并填入以下内容,并根据自身项目修改,在项目目录新建uwsgi文件夹

    [uwsgi]
    socket = 127.0.0.1:8000 # uwsgi监听端口
    chdir = ***** # 自身项目在服务器上地址
    module = *****.wsgi #自身项目中的wsgi
    master = true 
    processes = 1 
    threads = 2  # 线程数
    max-requests = 2000 # 最大请求
    chmod-socket = 664
    vacuum = true 
    # uwsgi文件存放地址
    stats = %(chdir)/uwsgi/uwsgi.status
    pidfile = %(chdir)/uwsgi/uwsgi.pid 
    daemonize = %(chdir)/uwsgi/uwsgi.log
    

    在服务器中链接静态文件,如果看到多少文件链接成功则配置成功

    sudo python3 manage.py collectstatic
    

    修改nginx配置,sudo vim /etc/nginx/nginx.conf,修改server配置

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    
    server {
        listen 80;
        server_name localhost;
        charset utf-8;
    
        location / {
          # 监听端口和uwsgi相同
          uwsgi_pass 127.0.0.1:8000;
          include /etc/nginx/uwsgi_params;
        }
    
        location /static {
          #uwsgi配置的静态链接的地址
          alias ******/collected_static/; 
        }
    
        error_page 404 /404.html;
            location = /40x.html {
        }
    
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
    

    上面已经配置完成了,下面启动项目

    # 到项目目录下
    sudo uwsgi3 --ini uwsgi.ini
    # 启动nginx
    sudo systemctl start nginx 
    

    如果以上两个都没有报错表面已经配置成功了,可以到本地机器上通过IP访问看下是否成功 .
    如果更改了代码,需要重新启动uwsgi3

      # 到项目目录下
      cd uwsgi
      sudo uwsgi3 --reload uwsgi.pid 
    

你可能感兴趣的:(阿里云,CentOS安装Django并配置uwsgi和nginx)