记一次uwsgi+django的采坑

先把运行环境列一下吧:
1.python3.7.4
2.腾讯云centos7.6 64位服务器
3.django 2.1.7
4.virtualenv 20.0.30 
5.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.tgz
tar Python-3.7.4.tgz

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

cd Python-3.7.4
./configure 
make && 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 -V
pip3 -V

如果安装成功并成功建立软连接,显示
pip和python安装成功
顺便更新一下pip3吧。。。`

pip3 install --upgrade pip

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


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

pip3 install virtualenv
ln -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/bin
ls

ls显示当前目录的文件夹和文件,大概是这样的一个界面:
env
这是我的界面,django-admin.py、django-admin、uwsgi是后面装上去的,NewPhone则是我的项目。
到达这个界面就能开始建立自己的项目了,执行

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

p1
多了一个p1文件夹,cd p1 看看里面有什么?
p1_1
这是新建的项目根目录,在设置好各种配置之后,在项目根目录启动服务器:

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值