Django项目部署在服务器(配置Django+Mysql8.0+Python+Nginx+uWsgi)

news2024/12/27 15:55:07

Django项目部署在服务器(配置Django+Mysql8.0+Python+Nginx+uWsgi)

项目配置版本
服务器阿里云CentOS 7.6
数据库Mysql8.0
Python3.7.1

一、更新yum并设置自动更新

1、手动更新yum

yum update -y

2、安装自动更新的插件

yum install -y yum-cron

3、设置自动更新yum

vim /etc/yum/yum-cron.conf

找到 apply_updates = nono改为yes,然后保存
4、启动yum-cron和设置开机自动启动

systemctl start yum-cron
systemctl enable yum-cron

二、防火墙

1、安装启动防火墙

yum install -y firewalld
systemctl start firewalld
systemctl enable firewalld

2、开放80 端⼝

firewall-cmd --zone=public --add-port=80/tcp --permanent

3、重启防火墙

systemctl restart firewalld

三、安装mysql8.0

1、使用rpm 命令查找出要删除的mariadb文件

rpm -pa | grep mariadb

2、将mysql文件下载到Centos/usr/local/mysql文件夹下

cd /usr/local
mkdir mysql
cd mysql
wget  https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm

3、安装 yum repo文件并更新 yum 缓存

rpm -ivh mysql80-community-release-el7-1.noarch.rpm 

4、更新 yum 命令

yum clean all
yum makecache

5、使用 yum安装mysql

yum install mysql-community-server

会出现GPG验证检查
在这里插入图片描述

解决办法:

yum -y install mysql-community-server --nogpgcheck

6、开启mysql 服务

systemctl start mysqld.service

7、获取初始密码登录mysql

cat /var/log/mysqld.log | grep password

8、使用初始密码并修改密码

mysql -u root -p  #会提示输入密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'ZHANGsan2!';#注意位数和种类至少大+写+小写+符号+数字

9、在防火墙中开启3306端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload  # 重启防火墙

四、安装Python

1、安装环境依赖

yum install -y openssl-devel bzip2-devel expatdevel gdbm-devel readline-devel sqlite-devel zlib-devel libffi-devel MySQL-python mysql-devel

2、在主目录建一个文件夹放python安装包

wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
tar -zxvf Python-3.7.1.tgz # 解压
mkdir /usr/local/python3

3、进入解压的文件夹安装python3

cd ~/python3/Python-3.7.1
./configure --prefix=/usr/local/python3  # 修改安装路径
make
make install
ln -s /usr/local/python3/bin/python3 /usr/bin  # 创建链接
python3 --version  # 是否安装成功
ln -s /usr/local/python3/bin/pip3 /usr/bin # 创建pip3的链接

4、安装数据库插件问题

pip3 install mysqlclient   # 安装数据库插件

安装失败
查找到 mysql_config配置文件,命令行输入:

find / -name mysql_config  #没有任何回应,说明并没有查找到 mysql_config 配置文件,该问题为缺少mysql源所导致的

5、下载安装mysql配置源:

 wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm  # 根据自己mysql版本下载相对应的mysql配置源

6、安装mysql-devel依赖包:

yum install mysql-devel --nogpgcheck

再次安装就成功了

五、安装 Django、Nginx 和 uWsgi

pip3 install Django
ln -s /usr/local/python3/bin/django-admin /usr/bin  # 给 Django 创建链接
pip3 install uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/bin
yum install -y nginx  # 安装 Nginx

六、设置 Django 项⽬

1、⾸先创建⼀个 Django 项⽬, cd /home 先进⼊ home ⽬录
2、使⽤ django-admin startproject mysite 创建⼀个项⽬, mysite 是项⽬名, 可以⾃⼰定义
3、接着 cd mysite/mysite 进⼊ mysite ⽬录下的 mysite ⽂件夹
4、找到 setting.py ⽂件打开并修改
5、如果需要的话, 关闭调试模式 Debug = False
6、允许的主机 Allow_host = [‘这⾥填写本机的 IP’, ‘localhost’]
7、移植静态⽂件, 在最末尾添加 STATIC_ROOT = os.path.join(BASE_DIR, ‘collected_static’)
第⼆个路径为移植后的路径, 然后继续添加 STATICFILES_DIRS = (os.path.join(BASE_DIR, ‘static’),)
8、如果需要的话, 继续在 settings.py 中设置模板和 MySQL 数据库
9、进⾏静态移植, 退出设置⽂件, 在项⽬⽬录下创建⼀个 static ⽂件夹, 在 /home 下创建⼀个 collected_static ⽂件夹. 然后运⾏ python3 manage.py collectstatic
测试代码:
urls.py
在这里插入图片描述
views.py
在这里插入图片描述

七、配置 uWsgi

1、在 mysite 项⽬下新建 uwsgi.ini ⽂件 (⽂件与 manage.py 同级) 填写

[uwsgi] 
 socket = 127.0.0.1:8000 
 chdir = /home/mysite 
 module = mysite.wsgi 
 master = true 
 processes = 1 
 threads = 2 
 max-requests = 2000 
 chmod-socket = 664 
 vacuum = true 
 stats = %(chdir)/uwsgi/uwsgi.status 
 pidfile = %(chdir)/uwsgi/uwsgi.pid 
 daemonize = %(chdir)/uwsgi/uwsgi.log 

2、然后在当前路径下创建 uwsgi ⽂件夹

八、配置 Nginx

1、打开 vim /etc/nginx/nginx.conf 把 http{} 内部的 server{} 改为

server { 
	 listen 80; 
	 server_name localhost; 
	 charset utf-8; 
	 access_log off; 
	 location / { 
	 uwsgi_pass 127.0.0.1:8000; 
	 include /etc/nginx/uwsgi_params; 
	 } 
	 location /static { 
	 alias /home/collected_static/; 
	 } 
 } 

2、以上没有的设置补充上去, 多余的设置都注释掉
3、注意, 在此配置⽂件中不管何处, ⼀旦出现以下配置都直接注释掉

include /etc/nginx/conf.d/*.conf; 
include /etc/nginx/sites-enabled/*; 

九、启动项目

1、⾸先 systemctl start nginx 启动 Nginx
2、然后到项⽬路径下执⾏ uwsgi --ini uwsgi.ini

页面展示
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/437431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试官:项目中如何解决跨域问题(HttpClient、注解、网关)

为什么会有跨域问题 因为浏览器的同源政策,就会产生跨域。比如说发送的异步请求是不同的两个源,就比如是不同的的两个端口或者不同的两个协议或者不同的域名。由于浏览器为了安全考虑,就会产生一个同源政策,不是同一个地方出来的…

kafka安装及配置过程

kafka安装及配置过程 kafka 依赖于 zookeeper,zookeeper的安装可看:ZooKeeper的安装和配置过程 先说明一下,集群主机分别是:192.168.127.129,192.168.127.130,192.168.127.131 安装 kafka可以通过官网下…

Polardb 如何替换MYSQL 之 IMCI 列式(2)系统的核心与关键

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群。 本期继续上…

如何docker安装es和kibana以及ik分词器

推荐用portainer进行可视化 1.创建网络--让es和kibana容器互联 docker network create es-net 2.部署单点es docker run -d \ --name es \ -e "ES_JAVA_OPTS-Xms512m -Xmx512m" \ -e "discovery.typesingle-node" \ -v es-data:/usr/sha…

Java垃圾回收机制

Java垃圾回收机制 垃圾回收算法为什么垃圾回收回收哪些内存如何回收Marking-Sweep(标记-清除法)Marking-Compat(标记-整理法) 内存分代年轻代 Minor gc和Major gc的区别常见回收器Serial Garbage CollectorParallel Garbage Colle…

InnoDB的表空间

独立表空间结构 区概念 连续的64个页就是一个区,也就是说一个区默认用1MB空间大小。表空间由若干个连续的区(物理位置上的连续)组成的,256的区被划分成一组。 其中,extent0~extent256个区算是第一组,exten…

基于微信小程序的家政服务预约系统的设计与实现

基于微信小程序的家政预约系统,有效解决了人们网上随时预约家政服务的问题。依托于新的小程序开发环境,解决了"跨系统开发"这个难题,在一个"类操作底层"开发基于微信小程序的家政服务应用。功能模块包括:家政服务项目展示模块,服务报价模块,用户留言评价模…

零门槛,手把手教你玩转ChatGPT,顺滑般国内使用chatGPT

国内是可以玩ChatGPT的,只需要去官网注册一个OpenAI帐号,然后使用第三方接码平台获取短信验证码,就可以成功注册帐号,注册成功之后国内就可以随意使用chatGPT啦。 国内怎么玩chatGPT如下: 官方原版 一、注册OpenAI账…

ansible——编写循环和条件任务

环境:RH294 1. 以student用户的身份并使用student作为密码登录workstation ssh studentworkstation 在workstation上,运行lab control-flow start命令,此命令会创建control-flow工作目录 lab control-flow start 2. 切换到/home/studen…

Python中PIL库的常用用法示例

Python中的PIL(Python Imaging Library,已更名为Pillow)是一个功能强大的图像处理库。以下是一些常用的PIL功能及相应的代码示例: 1. 打开和保存图像: from PIL import Image# 打开图像 image Image.open("exam…

B+G双轮驱动,税友股份迎来数字化东风

配图来自Canva可画 不知不觉之间,国内的数字经济已经蔚然成潮。据相关部门的统计数据显示,去年国内数字经济规模已经达到了50万亿,占到了国内GDP总量的40%以上,增速更是持续领先于GDP增速。与此同时,随着数字中国战略…

权限提升:网站漏洞(提权思路.)

权限提升:网站漏洞 权限提升简称提权,由于操作系统都是多用户操作系统,用户之间都有权限控制,比如通过 Web 漏洞拿到的是 Web 进程的权限,往往 Web 服务都是以一个权限很低的账号启动的,因此通过 Webshell …

The Foundry Modo 16 for Mac v16.1v3 含历史版本

The Foundry MODO是一个功能强大的3D建模、动画和渲染软件,被广泛应用于游戏开发、电影制作、产品设计和建筑可视化等领域。 以下是一些MODO的优点: 1. 强大的建模工具:MODO提供了一系列丰富的建模工具,包括多边形建模、NURBS建…

mysql索引失效的坑

目录 前言 博客文章分享 对索引字段做函数操作 隐式类型转换 隐式字符编码转换 原因分析 解决方法: 前言 在MySQL中,有时候会因为语句使用不当导致sql不走索引,从而使数据库的压力变大。本篇分享一下sql不走索引的坑,让大家…

Nginx 和Rewrite

系列文章目录 文章目录 系列文章目录一、常规的nginx正则表达式1.location和rewrite的区别2.常用的nginx的正则表达式3.nginx里面的优先级 二、rewrite1.Rewrite2.实验 总结 一、常规的nginx正则表达式 1.location和rewrite的区别 从功能看 rewrite 和 location 似乎有点像&a…

GPT-2隐私泄露论文阅读:Extracting Training Data from Large Language Models

文章目录 论文地址:原文阐释:渔樵问对:原理梗概预防策略隐私策略这个新颖的攻击方式是什么?三种典型采样策略:隐私风险文章第5页第二段中提到的 memorized training exam ple 是什么意思 ThreatModel &Ethics什么是文本的zlib…

【Apache 网页与安全优化】

1.网页压缩 检查是否安装 mod_deflate 模块 apachectl -t -D DUMP_MODULES | grep "deflate"如果没有安装mod_deflate 模块,重新编译安装 Apache 添加 mod_deflate 模块 systemctl stop httpd.service cd /usr/local/httpd/conf mv httpd.conf httpd.c…

数字硬件建模SystemVerilog-通信总线建模 --Interface端口的概念

来到了SV最后一部分,预计三篇文章,两周更完,所有的思维导图如下: 概述 SystemVerilog Interface是modport的一种,但比简单的输入、输出或输入输出端口的功能更多。在其最简单的形式中,Interface端口将相关的…

关于户外旋转LED显示屏的核心技术

户外旋转LED显示屏因可视范围达360的新颖结构,并且成本低廉,而得到了迅速的发展。虽然看着外观与普通LED显示屏没有什么大的异样,但为使设计的户外旋转LED显示屏具有较好的显示效果,背后也是需要通过众多工程技术人员克服技术难点…

git lfs简易使用教程

参考资料: https://zzz.buzz/zh/2016/04/19/the-guide-to-git-lfs/ 这篇随笔简单记录一下git lfs的使用教程,只记录最为常用的部分,并阐述原理,方便后面查阅。 首先说明一下git lfs的原理,看名称:git lfs。…