前言: 本文主要的目的是在REHL8的中搭建一个简易的 Django的web应用步骤记录,如果只是想学习Django使用的话,那么直接安装Django就可以了,它有自带的web服务可以直接测试使用。之所以后面又安装 uwsgi 2.0.20 +nginx1.22 主要是进一步深入学习理解。他们之间的各种关系如果想进一步了解的话可以阅读这篇文章:
uWSGI、uwsgi、WSGI、之间的关系,为什么要用nginx加uWSGI部署

Django介绍
Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。
使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web。

前置软件安装

python
Python 3.7.3安装学习
nginx
nginx的两种安装流程
uwsgi
uwsgi2.0.2 安装

工程项目部分目录

djgo
|->djgo
|----|—>init.py
|----|—>asgi.py
|----|—>settings.py #配置文件
|----|—>urls.py #路由系统:url路径对应的执行函数之间的关系,该文件内写路径和函数
|----|—>wsgi.py #用于定义Django用socket实现,测试环境用python下的wsgiref模块,生产环境我们用python下的uwsgi模块

|->learning_logs
|----|—>view.py #初始页面
|->uwsgi_conf
|----|—>uwsgi.ini
|-> manage.py #当前Django程序,操作指令集合

Django 安装

django的官网 https://www.djangoproject.com/download/
目前最新的版本是4.0.6 直接pip安装

pip install Django==4.0.6

完成后测试

python3
import django
django.get_version()

没有报错提示即为安装正确完成

创建文件

选定文件路径

cd /home/pj #这是我选定的工程存放目录

创建工程 djgo

django-admin startproject djgo

vim djgo/settings.py

--snip--
ALLOWED_HOSTS = ['*']
--snip--
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','learning_logs',
]
--snip--

如果是使用 Mariadb与django来进行配套的话还需进行以下的修改:

--snip--
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'test','USER': 'root','PASSWORD': 'root','HOST': '','PORT': '3306','OPTIONS':{'autocommit':True}}
}
--snip--

vim djgo/urls.py

--snip--
from django.urls import re_path as url
from learning_logs import views as lg_viewsurlpatterns = [path('admin/', admin.site.urls),#url(r'^app/', lg_views.index)path('', lg_views.index),
]

创建数据库

python3 manage.py migrate


mariadb可能遇到的bug

问题:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb
module. Did you install mysqlclient?
解析:没有安装 mysqlclient
解决:pip install mysqlclient

问题:Using cached mysqlclient-2.1.1.tar.gz (88 kB) Preparing metadata
(setup.py) ... error error: subprocess-exited-with-error
解析:缺乏部分环境
解决:选择安装下列
dnf -y install mysql-devel
dnf -y install python-devel
pip install mysqlclient

如果没有用mariadb的而使用 默认的sqlite则可能遇到下面的bug

如果敲下命令后遇到问题 No module named '_sqlite3'
原因:python3编译的时候没有安装sqlite3,sqlite3提供了_sqlite3.so供python3使用连接sqlite库
解决: 1、安装库包 dnf -y install sqlite*
2、重新编译python(路径根据环境自己定义)
cd python-3.9.9
./configure --prefix=/usr/local/python3
make && make install
测试:
python3
> import sqlite3

进入工程创建项目 learning_logs

cd djgo
python3 mannage.py startapp learning_logs

部分配置以下代码基于 manage.py所处文件夹

vim learning_logs/urls.py

#from django.shortcuts import render# Create your views here.from django.http import HttpResponse
#coding:utf-8
def index(request):return HttpResponse('welcome!Django~~~')

修改完成后测试

systemctl stop firewalld #先关闭防火墙
systemctl disable firewalld #永久关闭防火墙
python3 manage.py runserver 0.0.0.0:8000 #运行

保持不动,再另打开一个Linux窗口

curl http://127.0.0.1:8000

成功会显示
root@hapood01 ~]# curl http://127.0.0.1:8000
welcome!Django~~~

uWsig配置

建立专门放置uwsgi.ini的文件夹。

mkdir uwsgi_conf
cd uwsgi_conf
vim uwsgi.ini

按照自己建立的项目调整下方的个数据:

#添加配置选择
[uwsgi]
#配置和nginx连接的socket连接
socket=127.0.0.1:9090
#http = :9090
#配置项目路径,项目的所在目录
chdir=/home/pj/djgo/
# 指定项目的application
module=djgo.wsgi:application
#配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录名
wsgi-file=djgo/wsgi.py
#配置启动的进程数
processes=4
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号文件
pidfile=uwsgi.pid
#配置dump日志记录
daemonize=uwsgi.log

启动uWSGI

uwsgi --ini uwsgi.ini


如果只是单纯的想用 Django+uwsgi的话可以注释掉 socket=127.0.0.1:9090 使用 http = :9090 将,然后重启 uwsgi --reload uwsgi.pid 然后测试 :curl 127.0.0.1:9090 成功 :welcome!Django~~~ ,这证明已经是可以使用了。

nginx配置

进入nginx.conf的位置:

cd /etc/nginx/conf.d
vim djgo.conf

配置 djgo对接的uwsgi的内容:

server {listen 80;server_name  www.djgo.com; #改为自己的域名,没域名修改为127.0.0.1:80charset utf-8;location / {include uwsgi_params;uwsgi_pass 127.0.0.1:9090;  #端口要和uwsgi里配置的一样uwsgi_param UWSGI_SCRIPT djgo.wsgi;  #wsgi.py所在的目录名+.wsgiuwsgi_param UWSGI_CHDIR /home/pj/djgo/; #项目路径}location /static/ {alias /home/pj/djgo/static/; #静态资源路径}
}

完成后重启nginx

systemctl restart nginx

修改自己电脑的host
打开 C:\Windows\System32\drivers\etc\hosts
添加:

xxx.xx.xx.xx www.djgo.com
xxx.xx.xx.xx VM的ip
打开谷歌浏览器 输入 http://www.djgo.com/

如果出现 502 请检查nginx的 error_log 。出现如下报错的话 *14 connect() to 127.0.0.1:9090 failed (13: Permission denied)
解决方法:
1.条件不允许的情况下(不能随意重启计算机)执行下列代码: setsebool -P httpd_can_network_connect 1

2.其他情况下获取root权限 vim /etc/selinux/config 找到 SELINUX=enforcing 改为 SELINUX=disabled

VMware workstation虚拟机REHL8下配置安装Django 4.0.6 +uwsgi 2.0.20 +nginx1.22+Mariadb10.9.1相关推荐

  1. VMware workstation虚拟机的网络配置

    VMware workstation虚拟机的网络配置 1. 进入虚拟机网络编辑器 2. 开启网络配置修改权限 3. 修改网络配置 3.1 选择一个NAT模式的虚拟网卡,为什么选择NAT,相信聪明的你已 ...

  2. VMware Workstation虚拟机网络相关配置

    1.网络配置 1.1.方式一:配置文件 配置文件:网络参数之IP地址与子网掩码.网关地址.DNS 1.1.1.删除旧网卡配置文件 rm -rf /etc/sysconfig/network-scrip ...

  3. 新手如何安装及配置VMware Workstation虚拟机及Xshell远程管理软件

    新手如何安装及配置虚拟机及远程管理软件     VMware Workstation Pro & Xshell 下载并安装VMware Workstation Pro及Xshell. 访问mi ...

  4. 配置VMware Workstation 主机模式下让虚拟机上网设置详细

    配置VMware Workstation 主机模式下让虚拟机上网设置详细 1.在本地连接中,把网络共享给虚拟机的VMware Network Adapter VMnet1这个网口 2.设置好VMwar ...

  5. Vmware Workstation虚拟机下安装Windows系统教程

      Vmware Workstation是一款功能强大.非常好用的虚拟机软件,可以在你的电脑上创建出虚拟磁盘,以供实现在电脑中安装电脑的操作.详细的介绍愚者这里就不赘述了,毕竟这期讲的是在Vmware ...

  6. 大数据基础系列 1:Windows 安装 VMware Workstation 虚拟机完整步骤及需要注意的问题

    文章目录 前言 一.下载正版虚拟机不同版本 1.1.通过官网进行下载 VM 虚拟机 1.1.1.选择所需版本下载 1.1.2.VM 15.1.0 Pro for Windows 下载 1.2.免注册账 ...

  7. VMware Workstation虚拟机安装Windows_server_2012_r2镜像文件

    文章目录 一.VMware Workstation虚拟机下载与安装 二.VMware Workstation虚拟机安装Windows server 2012 r2镜像文件 1.打开虚拟机--创建新虚拟 ...

  8. macos支持exfat吗_在Windows上使用VMware Workstation虚拟机安装macOS

    本文转载自本人的博客: 在Windows上使用VMware Workstation虚拟机安装macOS - LittleModesty​www.littlemodesty.com 一.Why macO ...

  9. vmware workstation虚拟机安装Debian系统教程

    手把手的教程:vmware workstation虚拟机安装Debian系统教程(图文教程) 安装前请准备好: 1.vmware workstation虚拟机: 如果不会安装请参考我的上一篇文章:链接 ...

最新文章

  1. datanode 不能连接master
  2. 汇编程序.c到a.out的生命历程
  3. web前端入门必知的10个技术
  4. 修改已经创建的docker容器的端口映射
  5. 基于FPGA实现ADS1675数据采集
  6. 通达信手机版分时图指标大全_通达信手机版指标源码大全,响应大家要求今日直接附上,快来收藏...
  7. Word批量转PDF,宏批量转PDF
  8. Java之将GB2312编码转化为汉字
  9. sql如何查询某天的所有数据
  10. 致信息安全专业同学的一封信
  11. 个推消息推送SDK通知栏铃声功能解析及使用攻略
  12. Ps简单的墨笔画制作
  13. 杀戮空间2服务器修改地图,《杀戮空间2》新地图全任务完成方法图文详解
  14. 年薪35万女网管的故事
  15. 微信3.7版本后,个人数据文件夹的乱码文件夹怎么找文件?
  16. 迭代回顾会议咨询记录
  17. ❤ CSDN榜一博主,半年文章汇总【答谢粉丝、文末送书4本】❤
  18. PowerPoint文档“大减肥”(downmoon)
  19. linux 修改微秒时间,Linux系统下精确到微秒级的时间操作函数
  20. 理解和使用工具(二)-文件系统Heirarchy

热门文章

  1. arcgis显示后台错误_ArcGIS后台服务器抛出异常的解决方法
  2. 使用树莓派连接笔记本热点
  3. ResNet50是什么
  4. 怎么把动图放到word里_word文档如何插入动图?
  5. 【计算机图形学 】扫描线多边形填充算法 | OpenGL+鼠标交互
  6. java.sql.SQLException: ORA-00600: 内部错误代码解决
  7. android中bitmap压缩的几种方法详解
  8. 第10章 对象和类 -1
  9. 好用的Linux数据库管理工具推荐!
  10. qt window release 打包的方法及常见问题,不同路径的差异