AI智能
改变未来

记一次uwsgi+django的采坑

先把运行环境列一下吧:1.python3.7.42.腾讯云centos7.6 64位服务器3.django 2.1.74.virtualenv 20.0.305.pip3 20.2.1注:1.为了避免权限问题我用root用户操作,不需要sudo命令,如果用普通用户操作出现了权限问题请自行百度解决,因为我也不会哈哈哈。。。。2.系统内置的 python2.7 版本太老,所以我自己装了个比较新版的 python3.7.4,

公司要求搭一个 “需求订单-解决订单” 的简单服务器,不要求多大的并发,但是支持多用户操作和权限赋予。我想了想,这不正好用得着我最近学习的Django嘛,而且只用它自带的后台系统可以胜任!说做就做,进入正题。

进入终端,先把 yum 更新,执行:

yum update

然后你就看见一堆要下载的文件…

文件更新完了,在根目录下创建一个文件夹 py ,名字随便起,用来存放 python 的,在根目录下执行

mkdir py

你会发现多了一个文件夹 py ,执行

cd py

进入py 文件夹,接着开始下载 python并解压 ,我用的是 python3.7.4(你想下哪个版本改一下3.7.4就行),执行

wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgztar Python-3.7.4.tgz

解压成功了还得安装,进入Python-3.7.4文件夹,执行安装命令

cd Python-3.7.4./configuremake && make install

这3步顺利的话,python就安装成功了,下一步是建立软连接(大概就是windows系统的桌面快捷方式吧。。。)

ln -s /usr/local/bin/python3 /usr/bin/python3

python3.7.4下的时候打包了pip3,所以也建立一个软连接(pip3的路径自己检查好啊)

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

验证一下python3和pip3是否安装成功,执行

python3 -Vpip3 -V

如果安装成功并成功建立软连接,显示

顺便更新一下pip3吧。。。`

pip3 install --upgrade pip

到这一步我已经成功安装python和pip并建立好软连接。下一步安装虚拟环境(为啥要安装虚拟环境,其实很好理解,你在pycharm上面建立的项目也是在虚拟环境 virtualenv 里运行的,不是吗?)

安装 virtualenv,安装完同样要建立软连接(桌面快捷方式。。。)执行

pip3 install virtualenvln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

安装结果验证完后,创建一个存放项目虚拟环境的目录,我直接在跟目录创建一个吧,cd+回车 回到根目录,执行

virtualenv --python=/usr/bin/python3 pyenv

在根目录创建一个名为pyenv的虚拟环境,创建完成后进入此虚拟环境,执行

source /root/pyenv/bin/activate

如果进入成功,在命令行 [root@VM-0-7-centos ~]# 之前会有一个(pyenv),也就是(pyenv)[root@VM-0-7-centos ~]# ,到此我们就成功安装好虚拟环境了。

执行此命令进入虚拟环境的根目录,

cd /root/pyenv/binls

ls显示当前目录的文件夹和文件,大概是这样的一个界面:

这是我的界面,django-admin.py、django-admin、uwsgi是后面装上去的,NewPhone则是我的项目。
到达这个界面就能开始建立自己的项目了,执行

python3 django-admin.py startproject p1 #建立一个名为p1的项目


多了一个p1文件夹,cd p1 看看里面有什么?

这是新建的项目根目录,在设置好各种配置之后,在项目根目录启动服务器:

python3 manage.py runserver 0.0.0.0:8000

打开浏览器输入:服务器外网IP:8000,即可访问服务器。如果访问失败,试着打开8000端口。

到这项目能跑起来了,根据需求还要安装 uwsgi,在虚拟环境下执行

pip3 install uwsgi

安装完成后,直接在项目根目录执行

uwsgi --http :8000 --module p1.wsgi --master --processes 4 --threads 2

使用4个进程,每个进程启动2条线程来处理动态请求。浏览器打开后台,完美运行!

其实后续应该再部署一个nginx来处理静态文件,但是项目需求没有那么高我就不用了。

这过程中遇到一个比较头疼的问题,就是当DEBUG设置为False后,静态文件没法加载的问题,在网上查了很多资料后,有一篇博文很完美解决了这个问题 django设置debug=false后无法加载静态文件问题解决

还有一个问题就是用 uwsgi.ini 启动uwsgi服务器的问题,由于没有设置好参数导致启动失败,无奈只能用上面的方式启动服务器,后续再来填这个坑吧。

自学不易,希望大家多多指教,大家共勉。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 记一次uwsgi+django的采坑