Centos环境部署django项目的全过程(永久复用)
作者:心软且酷丶 发布时间:2021-06-17 00:37:28
标签:centos,环境部署,Django
一:基础环境介绍:
Centos:7.8(cat /etc/redhat-release查看版本号)
Python:3.9.5(python -V查看版本号)
Django:2.2.6(django-admin --version查看版本号)
Uwsgi:2.0.20(uwsgi --version查看版本号)
Nginx:1.20.1 (nginx -v查看版本号)
二:部署环境安装配置:
1.基础依赖环境安装
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
2.安装wegt,vim,unzip等必须命令
yum -y install wget vim unzip
3.安装python与pip(或者python多版本管理工具pyenv等)
## 1.下载自己需要版本的python版本包
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tar.xz
## 2.新建python3目录
mkdir /usr/local/python3
## 3.安装Python3压缩包,进入解压目录,指定安装目录,安装Python3
tar -xvf Python-3.9.5.tar.xz
cd Python-3.9.5
./configure --prefix=/usr/local/python3
make && make install
## 4.安装Python3时,会自动安装pip,如果没有就手动安装
yum -y install python-pip
## 5.pip配置(更换pip的源)
(1)找到pip.conf并编辑
[root@devops ~]# cd ~
[root@devops ~]# mkdir .pip
[root@devops ~]# vim pip.conf
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
:wq!保存退出即可
(2) 安装依赖安装好pip
[root@devops ~]# yum -y install epel-release
[root@devops ~]# yum install python-pip
[root@devops ~]# pip install --upgrade pip
## 6.升级下pip
pip install --upgrade pip
## 7.创建软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
## 输入python3测试是否安装成功
python -V
4.安装nginx
## 1.yum方式安装nginx
yum -y install nginx
## 2.查看nginx版本
nginx -v
## 3.启动nginx
systemctl status nginx ## 查看nginx状态
systemctl start nginx ## 开启nginx服务
systemctl stp nginx ## 关闭nginx服务
5.安装uwsgi
## 1.安装uwsgi
pip3 install uwsgi
## 2.建立软链接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
## 3.查看uwsgi版本
uwsgi --version
三:部署django项目:
1.上传项目并安装项目模块并启动测试
## 1.上传文件到服务器
## 2.解压项目
unzaip devops.zip
## 3.pip安装项目依赖模块
pip3 install -r requirements.txt
## 4.通过python3 manage.py runserver运行一下项目,如果能正常启动则进行下一步,不能正常运行往上检查。
这里需要注意使用python3来执行manage.py,否则会出现报错情况!
2.在项目里配置uwsgi.ini配置文件
(1)在settings.py所在目录vim新文件 项目名称.ini
(2)配置 项目名称.ini文件
[uwsgi]
master=true
chdir=/data(服务器实际目录)/项目名称
module=项目名称.wsgi
py-autoreload=1
lazy-apps=true
socket=127.0.0.1:8000
processes=4
buffer-size=32768
daemonize=uwsgi.log
log-maxsize = 5000000
vacuum = true
disable-logging = true
(3)检查settings.py配置并收集项目静态文件
一般都是这个配置:
settings.py配置:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, '/static/')
STATICFILES_DIRS = [
os.path.join(BASE_DIR, '../bitmain_cmdb/static'), ## 实际静态文件所在项目路径,亲测好使
]
url.py配置:
from django.conf.urls import *
from django.contrib import admin
from django.conf.urls import url,include
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
url(r'^cmdb_admin/', admin.site.urls),
] + static(settings.STATIC_URL,document_root = settings.STATIC_ROOT)
执行收集静态文件命令:
python manage.py collectstatic
(4)启动测试,并查看日志
## 在当前目录启动
uwsgi -i 项目名称.ini
## 启动之后查看进程
ps -ef | grep uwsgi
启动:uwsgi -i 项目名称.ini
查看进程
查看日志,服务启动正常
3.配置nginx
vim /etc/nginx/nginx.conf
nginx.conf配置
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
charset utf-8;
location /static {
alias /项目所在目录/static/;
}
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
}
}
(4)启动nginx
## 1.配置完nginx.conf,执行 nginx -t /etc/nginx.conf 启用nginx配置文件
## 2.软加载nginx nginx -s reload
(5)访问django项目http://服务器ip/login/
四:备注
之后项目重启只需要重启uwsgi之后再重启nginx即可,切记正式环境要关掉django的debug模式,防止报错源码被看到。
## 项目重启
killall -9 uwsgi
uwsgi -i 项目名称.ini
nginx -s reload
## 关闭项目debug模式
vim settings.py
debug = Fasle
来源:https://blog.csdn.net/qq_41905051/article/details/125181364


猜你喜欢
- 在python列表中,如果我们想要删除一个或者连续几个元素,可以使用del()方法,在numpy数组,如果想要删除元素,可以使用numpy.
- 以前跟同事开玩笑时说过,我们遇到的用户在访谈测试过程中的表现基本上就三种类型,发泄型,赞美型和实话实说型。发泄型用户通常是在产品的使用过程中
- 【flask-socektio】之前不知道在哪个场合下提到过如何从web后台向前台推送消息。听闻了反向ajax技术这种模式之后,大呼神奇,试
- 如题,解决Python中用PyQt时中文乱码问题的解决方法:在中文字符串前面加上u,如u'你好,世界',其他网上的方法没有多
- 1.创建虚拟环境首先创建一个新文件夹在PyCharm终端中切换到这个文件夹,输入 python -m venv 环境名 创建虚拟环境&nbs
- 在开发测试平台的时候,虽然对某些关键功能做了权限设置,但毕竟是公司多人使用,有些数据的配置可能不小心被他人修改但未告知其他使用者,造成了诸多
- 关于python写邮件各种功能我们已经介绍过很多,大家有兴趣可以参考:python自动化发送邮件实例讲解python实现发送QQ邮件(可加附
- 目录一、前言二、Json.loads与eval 性能对比1. eval2. json.loads一、前言最近发现一些小伙伴使用eval来处理
- 前言光流flow特征中包含了一个视频当中运动相关的信息,在视频动作定位当中光流特征使用的比较多,所以记录一下提取光流特征的方法。使用的方法是
- 昨天在W3C看到,6月10日发布了新的 HTML 5 草案(Working Draft)。粗略的读了一下它提供的 新版本说明文档 ,作了一点
- 前言在一个分布式环境中,每台机器上可能需要启动和停止多个进程,使用命令行方式一个一个手动启动和停止非常麻烦,而且查看每个进程的状态也很不方便
- 分页:/*分页查找数据*/ CREATE PROCEDURE [dbo].[GetRecordSet] @strSql varchar(80
- 文章主要描述的是SQL Server到DB2连接服务器的正确实现过程,以及对其在实际操作中所要用到的实际操作环境的描述,以下就是对SQL S
- 本文实例分析了Python操作Access数据库基本步骤。分享给大家供大家参考,具体如下:Python编程语言的出现,带给开发人员非常大的好
- 二级联动在一般的网页中随处可见,一般是地址,比如点击浙江省,随后出现的是杭州市,嘉兴市;点击北京省出现的是朝阳,海淀,而不是出现杭州,嘉兴。
- 一、前言在开展接口测试或者是接口面试的过程中,我们会发现很多接口需要依赖前面的接口,需要我们动态从前面的接口返回中提取数据,也就是我们通常说
- 获得list中最大元素的索引aa = [1,2,3,4,5]aa.index(max(aa)) 相应的最小值使用aa = [1,2,3,4,
- 导语泡泡王国 欢乐多多咕噜噜,吹泡泡,七彩泡泡满天飘。大的好像彩气球,小的就像紫葡萄。当泡泡漫天飞舞时,大朋友、小朋友都会情不自禁地被它吸引
- 本文实例讲述了Python利用前序和中序遍历结果重建二叉树的方法。分享给大家供大家参考,具体如下:题目:输入某二叉树的前序遍历和中序遍历的结
- 本文介绍了vscode 远程调试python的方法,分享给大家,具有如下:实验环境远程服务器:京东云,1核2G,centos7.3 64bi