记录一次Django部署的文章,不是很熟悉Linux系统,踩了不少坑,本篇文章相当于是一个总结,我会在本文中详细介绍,部署单个Django项目和多个Django的方法,如读者有更好的方法,欢迎留言一起探讨~
长话短说,满满干货,先介绍部署单个Django项目的方法,本文是使用的服务器基于腾讯云的centos7,使用的python3版本,Django2.2
部署前的准备工作
1、更新系统
yum update -y
2、安装软件包和可能出现的依赖
yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel
3、下载python3
cd /usr/local # 我们将python3下载到这里
wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
tar -zxvf Python-3.7.4.tgz # 解压
cd Python-3.7.4 # 进入python3.7.4路径
./configure --prefix=/usr/local/python3 # 编译安装到制定的目录,这样做是为了跟系统默认的python2.7的做有效的隔离
make
make install # 安装python3
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3 # 安装完成之后 建立软链接 添加变量 方便在终端中直接用python3进的是python3的版本
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3 # Python3安装完成之后pip3也一块安装完成,不需要再单独安装同样给pip3建立软链接
4、安装Django+uwsgi(强烈建议在虚拟环境安装,这样有利于版本隔离,由于本项目是练手项目未安装虚拟环境,直接在系统里安装)
pip3 install django # 安装Django
pip3 install uwsgi # 安装uwsgi
单个Django项目部署
切换到根目录创建www文件,这里面用于存放Django项目(根据个人习惯,你想在哪个目录存放都可以,毕竟服务器是你自己的嘛,爱咋玩儿咋玩儿~)
django-admin.py startproject demo # 创建一个名为demo的Django
cd demo # 进入到demo项目
python3 manage.py startapp blog # 创建一个名为blog的应用
mkdir static # 创建一个存放静态文件的文件夹
mkdir templates # 创建一个存放模板的文件夹
vim /www/demo/demo/settings.py # 编辑Django的设置文件
修改3个地方,因为项目将部署上线,所以DEBUG模式改为False,ALLOWEDHOSTS修改加‘*’,表示任何ip都可访问,最后在INSTALLED_APPS里面引入我们的应用,这里填写的是Django刚刚创建的APP的名称。
os.path.join(BASE_DIR, 'templates') # TEMPLATES的DIRS里添加模板路径
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'), # 在setting的尾部添加,然后 ZZ保存退出
)
vi /www/demo/templates/index.html # 创建index.html文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>我的网站</title>
</head>
<body>
<h1>欢迎erha光临我的网站!</h1>
</body>
</html>
写入html文件
vi /www/demo/demo/urls.py # 配置路由
from blog import views #导入views
urlpatterns = [
...
path('', views.index), #添加这行
....
]
vi /www/demo/blog/views.py
def index(request):
return render(request, 'index.html')
python3 manage.py runserver 0.0.0.0:8000 # 启动项目并查看
此时访问你的ip + 8000端口就能看到效果了
vi /www/demo/demo.xml # 创建一个demo.xml 文件并填写以下内容
<uwsgi>
<socket>127.0.0.1:8000</socket> <!-- 内部端口,自定义 -->
<chdir>/data/www/demo/</chdir> <!-- 项目路径 -->
<module>demo.wsgi</module> <!-- demo为wsgi.py所在目录名-->
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
</uwsgi>
安装Nginx与配置Nginx
1.进入home目录并执行以下命令
wget http://nginx.org/download/nginx-1.13.7.tar.gz # 下载Nginx安装包
2.解压
tar -zxvf nginx-1.13.7.tar.gz
3. 进入解压后的路径并编译
cd nginx-1.13.7
./configure
make
make install
nginx一般默认安装好的路径为/usr/local/nginx 在/usr/local/nginx/conf/中先备份一下nginx.conf文件
cp nginx.conf nginx.conf.bak
然后打开nginx.conf,把原来的内容删除,直接加入以下内容:
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name www.bingpython.com; #改为自己的域名,没域名修改成ip
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000; #端口要和uwsgi里配置的一样
uwsgi_param UWSGI_SCRIPT demo.wsgi; #wsgi.py所在的目录名+.wsgi
uwsgi_param UWSGI_CHDIR /www/demo/; #项目路径
}
location /static/ {
alias /www/static/; #静态资源路径
}
}
}
进入 /www/demo/ 目录,启动uwsgi
uwsgi -x demo.xml
进入/usr/local/nginx/sbin/目录
先执行./nginx -t 测试一下Nginx是否配置正确
命令先检查配置文件是否有错,没有错就继续执行:
./nginx
终端没有任何提示就证明nginx启动成功。可以使用你的服务器地址查看,成功之后就会看到一个nginx欢迎页面。
进入到网站根目录,对应本项目的:
cd /www/demo
uwsgi -x demo.xml # 运行uwsgi文件
cd /usr/local/nginx/sbin/
执行:
./nginx -s reload # 重启Nginx
然后去访问你的域名,我的测试项目,这就部署单个项目成功了!下面这个测试项目我准备写一个Django教程,里面包含Django开发的个人博客教程&Django开发电商教程,现在还在优化之中,预计今年年中能够上新,欢迎广大程序猿小伙伴儿来撩呀~
我的网站www.bingpython.com关于Nginx部署多个项目教程我过几天抽时间了再来写,年底了有些忙啊~~~
部署Django项目的文章出炉啦,点击这里https://zhuanlan.zhihu.com/p/102154526
冰先生:CentOs7下Nginx+UWSGI部署Django项目(超详细)部署多个站点,建议先赞后收藏zhuanlan.zhihu.com建议先赞后收藏!!!避免以后找不到喽!!!