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.最重要的是就版本之间的问题,遇到了只能算自己倒霉了。

Logo

更多推荐