django3.0.3+uwsgi+nginx+MySql在CentOS7上环境部署

django3.0.3+uwsgi+nginx+MySql在CentOS7上环境部署

一、软件版本

python 3.8.1

nginx 1.18.0

django 3.0.3

uwsgi 2.0.18

MySql 8.0.19

CentOS 7

二、实验工具

VMware Workstation

Xshell 6

XFTP 6

三、软件安装

1. python3.8.1安装(源码编译)

  1. 下载依赖软件

    yum -y install libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make wget
    
  2. 在/home下新建python文件夹,将安装包下载到此文件夹下

    mkdir /home/python
    cd /home/python
    wget  https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
    
  3. 下载好后发现python文件夹下多了一个Python-3.8.1.tgz文件,如下图
    在这里插入图片描述

  4. 解压该文件

    tar -xzvf Python-3.8.1.tgz
    
  5. 进入解压后的文件夹,配置安装目录

    cd Python-3.8.1
    ./configure --prefix=/usr/local/python3
    
  6. 安装python并设置软连接

    make && make install
    ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
    ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
    

    注意切勿删掉系统自带的的python

  7. 测试是否安装成功

    python3 -V
    pip3 -V
    

    在这里插入图片描述

  8. 下载virtualenv (-i 参数后面的网址为国内的镜源),并添加软连接

    pip3 install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
    ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
    

2. nginx安装

  1. 添加nginx源

    sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    
  2. 用yum命令下载安装nginx

    yum install nginx
    

3. 安装MySql8.0

  1. 配置安装源

    rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    
  2. 安装MySql8.0

    yum --enablerepo=mysql80-community install mysql-community-server
    
  3. 启动MySql服务

    systemctl start mysqld.service
    

四、环境准备

1. 创建python虚拟环境

  • 在/home下创建文件夹web,并进入 (此文件夹作为网站文件存放的文件夹)

    mkdir /home/web
    cd /home/web
    
  • 创建python虚拟环境,名为env,并激活环境

    virtualenv env
    source env/bin/activate
    

    在这里插入图片描述

2. 下载uwsgi,django

  • 下载uwsgi2.0.18,django3.0.3

    pip3 install uwsgi==2.0.18 -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
    pip3 install django==3.0.3 -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
    
  • 下载mysqlclient

    yum install mysql-devel gcc-devel python-devel
    pip3 install mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
    

3. 在MySql创建数据库以及完成用户授权

  • 在安装好MySql之后,系统会生成默认的root用户密码,输入下面命令查看

    grep 'temporary password' /var/log/mysqld.log
    

    在这里插入图片描述

  • 登录root用户,输入如上最后的密码(我这里生成的临时密码是c6ZD%2bRGlmm)

    mysql -u root -p
    
  • 修改root密码为Hadoop@123(这里密码可以自由发挥)

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'Hadoop@123';
    
  • 创建数据库helloworld,创建新用户manger,密码是HelloWorld@123

    CREATE DATABASE helloworld;
    CREATE USER 'manger'@'localhost' IDENTIFIED BY 'HelloWorld@123;
    
  • 查看数据库是否建立成功

    SHOW DATABASES;
    

    在这里插入图片描述

  • 为manger用户授权

    GRANT ALL PRIVILEGES ON helloworld.* TO 'manger'@'localhost';
    FLUSH PRIVILEGES;
    
  • 使用组合键Ctrl+D退出数据库

五、开始我们的第一个django项目吧

1. 新建一个django项目

  • 输入命令,运行之后可以看到生成一个MyFirstWeb文件夹

    django-admin startproject MyFirstWeb
    

    在这里插入图片描述

  • 进入该文件夹,可以看到如下的文件结构,其中settings.py和urls.py是重点编辑文件

    cd MyFirstWeb
    

    在这里插入图片描述

  • 首先编辑settings.py

    vi MyFirstWeb/settings.py
    
  • 找到如下图所示的代码段

    在这里插入图片描述

  • 更改该代码段

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'helloworld',# 你的数据库名字
            'USER': 'manger',# 你的数据库用户名
            'PASSWORD': 'HelloWorld@123',# 你的对应的用户密码
            'HOST': '',# 留空默认为localhost,也可以写远程mysql的ip
            'PORT': '3306'# 端口号
        }
    }
    
  • 编辑manage.py

    vi manage.py 
    
  • 将第一行改为

    #!/home/web/env/bin/env python
    

2. 开始我们的第一个app

  • 新建app名字为FirstApp,如下图

    python manage.py startapp FirstApp
    

    在这里插入图片描述

  • 在setting.py注册FirstApp这个应用,顺便更改访问ip,首先编辑settings.py,找到如下代码块

    vi MyFirstWeb/settings.py
    

    在这里插入图片描述

  • 更改为

    ALLOWED_HOSTS = ['*']
    
    
    # Application definition
    
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'FirstApp',
    ]
    
  • 迁移数据库

    python manage.py migrate
    
  • 运行我们第一个django项目

    python manage.py runserver 0:80
    
  • 在浏览器中输入CentOS的ip地址访问,出现以下界面表示成功(如果网页打不开请打开防火墙的80端口)

    在这里插入图片描述

  • 使用组合键Ctrl+C中止程序

六、配置django+nginx+uwsgi

1. 配置django

  • 修改setting文件

    vi MyFirstWeb/settings.py
    

    在这里插入图片描述

  • 修改为

    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',
                ],
            },
        },
    ]
    
    
  • 在文件末尾添加

    STATICFILES_DIRS = (os.path.join(BASE_DIR,'static'),)
    

    在这里插入图片描述

  • 新建templates和static文件夹

    mkdir templates
    mkdir static
    

    在这里插入图片描述

  • 编辑首页文件

    cd templates
    vi index.html
    
    <html>
    <body>
     <table width=100% height=100%>
    <tr>
    	<td>
    	<center>
    		<font face="times">
    			<span style="font-size:100px;color:pink;font-family:century">
    				<a>I Love You</a>
    			</span>
    		</font>
    	</center>
    	</td>
    </tr>
     </table>
    </body>
    </html>
    
  • 配置url.py文件,将文件替换成如下代码,展示效果如下

    from django.contrib import admin
    from django.urls import path
    from FirstApp import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('',views.index),
    ]
    
  • 配置FirstApp的views.py文件

    • vi FirstApp/views.py
      
    • 添加如下代码

      def index(request):
          return render(request,'index.html')
      

2. 配置uwsgi

  • 创建config_uwsgi.xml文件,并写入如下内容

    • vi config_uwsgi.xml
      
    • <uwsgi> 
      	<socket>127.0.0.1:8080</socket><!--如果是服务器,这里的ip为云服务器内网ip--> 
      	<chdir>/home/web/MyFirstWeb</chdir><!--django存放的路径--> 
      	<module>MyFirstWeb.wsgi</module> 
      	<processes>4</processes> <!--进程的数量--> 
      	<daemonize>uwsgi.log</daemonize><!--存放日志文件的路径-->
      </uwsgi>
      

      在这里插入图片描述

3. 配置nginx

  • 输入如下命令,打开进入conf.d文件夹

    cd /etc/nginx/conf.d/
    

    在这里插入图片描述

  • 备份原有的default.conf

    mv default.conf default.conf.bak
    
  • 新建my.conf文件输入以下内容

    server {
            listen 80;
            server_name _;
                    charset utf-8;
            location / {
               include uwsgi_params;
               uwsgi_pass 127.0.0.1:8080;
               uwsgi_param UWSGI_SCRIPT MyFirstWeb.wsgi;
               uwsgi_param UWSGI_CHDIR /home/web/MyFirstWeb;
            }
            location /static/ {
            alias /home/web/MyFirstWeb/static; #你的用于存放静态文件的目录
            }
        }
    

    在这里插入图片描述

    在这里插入图片描述

  • 输入nginx -t 检查是否有语法错误,successful则表示没有语法错误

    在这里插入图片描述

4.联合调试

  • 进入/home/web/MyFirstWeb/目录,启动uwsgi

    uwsgi -x config_uwsgi.xml 
    
  • 启动nginx

    nginx
    
  • 在浏览器中输入虚拟机ip,大功告成!

    在这里插入图片描述

  • 关闭django的调试模式,将DEBUG设为False

    vi MyFirstWeb/settings.py
    

    在这里插入图片描述

  • 关闭nginx和uwsgi进程并重新启动

    pkill -9 uwsgi
    pkill -9 nginx
    uwsgi -x config_uwsgi.xml
    nginx
    
  • 现在找不到页面会返回标准404界面
    在这里插入图片描述

七、开始属于你的django项目吧

  • 玩的开心
  • 如果网页打不开请打开对应端口,如果是云服务器请配置相应安全组
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值