如何部署Django并实现运行
nginx+uwsgi+Django安装1.介绍linux版本Centos7.5uwsgi-2.0.20Django-3.2.9python3.9.0nginx-1.16.02.安装nginx安装nginx的连接可以参考这个:https://blog.csdn.net/weixin_44217786/article/details/1216088133.安装uwsgi下载官网:https://uw
nginx+uwsgi+Django安装
1.介绍
linux版本Centos7.5
uwsgi-2.0.20
Django-3.2.9
python3.9.0
nginx-1.16.0
2.安装nginx
安装nginx的连接可以参考这个:https://blog.csdn.net/weixin_44217786/article/details/121608813
3.安装uwsgi
下载官网:https://uwsgi-docs.readthedocs.io/en/latest/Download.html
注意这里面就选择最近发布的稳定版本。之前的版本可能会出现问题,这里懂得都懂。不懂的前面有一个坑等着你呢!
然后直接安装:
python3 setup.py install
注意!注意!一定要注意!如果你使用了虚拟环境,那么你必须使用虚拟环境的Python解释器安装uWSGI!!!
安装uWSGI可以参考:https://www.runoob.com/python3/python-uwsgi.html
安装完后尝试一下运行 uwsgi
出现这个说明离成功不远了。
如果出现:
[uwsgi: command not found]
需要建立一个软连接
ln -s /usr/local/python3.7.0/bin/uwsgi /usr/bin/uwsgi
`/usr/local/python3.7.0/bin/uwsgi ---这个是安装python的路径,根据自己的实际目录来创`
建这时候进入目录,自己创建一个foobar.py的一个文件
添加下面几行代码就可以了
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
然后直接启动:
uwsgi --http :9090 --wsgi-file foobar.py
这时候使用ip+端口访问打印出Hello World则uwsgi安装成功。
4.安装Django
首先安装python这里使用的是python3.9.0的版本,
安装连接可以参考:https://blog.csdn.net/weixin_44217786/article/details/121614825
下载源码包: https://www.djangoproject.com/download/
tar xzvf Django-3.2.9.tar.gz # 解压下载包
cd Django-3.2.9 # 进入 Django 目录
python setup.py install # 执行安装命令
然后使用python查看django是否安装成功
到这一步是不是很激动,准备好部署我们的Django项目了,然后我们开始创建一个项目
Django-admin startproject apptest
然后呢?报错了如下:
DjangoTraceback (most recent call last):
File "/usr/local/python3/lib/python3.9/site-packages/django/bin/django-admin.py", line 2, in <module>
from django.core import management
ImportError: No module named django.core
这时候回想明明我已经安装了Django,用python也能查看为什么会报错呢?这里的问题可能只会有刚学习部署的才会出现吧!我就是刚接触配置的。然后推断一下那肯定是找不到我们安装django的命令,那就给他加上一个软连接吧。
ln -s /usr/local/python3/bin/django-admin /usr/local/bin/django-admin
ln -s /usr/local/python3/bin/django-admin.py /usr/local/bin/django-admin.py
提示一下,特别注意软连接的添加,不然后面遇到的问题会很多。然后继续使用Django创建app,这里又出现问题了。真的是一波未过一波又来。当时是崩溃的。
python manage.py startapp apptest
报错了????
Django-django.core.exceptions.ImproperlyConfigured: SQLite 3.9.0 or later is required (found 3.7.17)
说明我们的版本太低升级一下就可以了。
下载源码:wget https://www.sqlite.org/2021/sqlite-autoconf-3370000.tar.gz
#解压编译
Tar -zxvf sqlite-autoconf-3290000.tar.gz
./configure --prefix=/usr/local
Make && make install
#替换之前的旧版本
mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
#配置环境
vim ~/.bashrc
export LD_LIBRARY_PATH="/usr/local/lib"
source ~/.bashrc #立即生效
查看版本是否更换成最新安装的版本。
然后创建好了,然后我们试一下
python manage.py runserver 0.0.0.0:8000
然后又出现了这个问题确实挺无语了,然后继续解决吧!!
可以参考这个连接去处理:https://www.jianshu.com/p/e81d59ccb80d
这里有一个问题,不知有人遇到没有,虽然会出现这个错误,但是并不影响项目的部署。然后这个地方我直接是忽略了,没有处理这个问题。
5.配置nginx和上传项目包
配置nginx
http {
server {
listen 80;
listen [::]:80;
server_name #填写自己的外网访问ip;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
}
这里我们用uwsgi启动的是8000端口,我们将他映射在80端口上访问
这里注意一下里面的标点符号是分号结尾,然后配置完一下最好使用
./nginx -t
测试一下配置文件是否有问题
[root@VM-0-17-centos sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
出现这个成功的标识,就可以放心的启动nginx了。
接下来上传项目包到你定义的文件夹下,然后进去项目根目录创建一个.ini
的启动文件
[uwsgi]
chdir=/root/django-project/apptest #项目所在文件位置
module=apptest.wsgi:application #启动需要指向的application
socket=127.0.0.1:8000 #本机的地址和端口
master=true
daemonize = /root/django-project/apptest/run.log #项目运行的日志
disable-logging = true
然后保存启动
uwsgi uwsgi.ini
然后访问ip和自己设定的路径
到这就算成功了。
6.总结:
1.安装Python的时候要注意更换掉系统自带的Python版本。
2.django的安装一定要创建软连接,不然无法使用django-admin
3.最重要的是就版本之间的问题,遇到了只能算自己倒霉了。
更多推荐
所有评论(0)