本文要点Centos7 部署 Django
、Django的静态文件static
、Python的虚拟环境virtualenv
从网络上可以访问你的图片或者是你在写文件等等能够引用到这个图片(或其他文件)
当然是在本地你没有这个图片的前提下,比如你的电脑重装系统了或是是在手机上图片不小心删除了、手机刷机了等,总之你那不到这个图片
下文是以图片为例而作的,本文所有安装的模块均是在虚拟环境下安装的!!!
我是把图片存放在云服务器上,通过网络地址访问
过程可能比较麻烦😜😜😜
步骤一
在服务器上建一个Git裸仓库👈
在之前的文章中讲过 👆
步骤二
①克隆刚刚创建的裸仓库
举个例子:比如我在gitcode
用户下创建的myproject.git
裸仓库 ,
1 | git clone gitcode@IP:~/myproject.git # IP指 gitcode用户IP地址 |
②然后在文件中写Django
项目
克隆到本地,克隆下来应该是一个里面包含.git
文件的文件夹
创建Django项目(我这个用的是Django==2.0.4)
你创建完Django项目后,settings中的部分设置
1 | INSTALLED_APPS = [ |
众所周知Django
的static
是存放项目的一些类似于css、js、*.jpg
等静态文件
而你创建Django项目
时却没有static目录
settings中加入
1 | STATICFILES_DIRS = [os.path.join(BASE_DIR,"static")] # 指定静态文件存储位置在static文件夹下 但是这个 static 文件夹需要手动创建 |
这个static文件夹下的静态文件
的运行依靠于INSTALLED_APPS
中的'django.contrib.staticfiles'
③加入图片
我在static文件夹下创建了images文件夹
在images文件夹下加入了几张图片
运行Django项目
项目url默认是
1 | http://127.0.0.1:8000/ |
加入图片路径
1 | http://127.0.0.1:8000/static/图片名字 |
这样就可以访问你的图片了
因为django把static文件配置了公开权限,所以你才能访问,不需要过多的修改。
如果你想自己展示你的图片不用static,就要配置你那文件的公开权限
1 | # 比如我在Django项目下创建一个upload文件夹,在文件夹内添加几张图片 |
1 | # 主应用 urls.py |
运行程序
要访问你upload文件下的图片,输入url
1 | http://127.0.0.1:8000/upload/图片名字 |
步骤三
使用git提交文件(上传文件)
我使用的Sourcetree
管理的git仓库,有兴趣的可以了解一下。
步骤四
在服务器上克隆你写的代码
比如我是在roc用户
下克隆我的代码
1 | git clone gitcode@IP:~/myproject.git # 跟上面一样 克隆成功就可以看到你的Django项目 |
步骤五
①配置解释器
我个人推荐这里使用虚拟环境,我使用python3.7
的virtualenv
包
你你首先要下载virtualenv
1 | pip3 install virtualenv |
查找virtualenv
所在目录
1 | find / -name "virtualenv " |
创建软链接
1 | ln -s /usr/local/python3/bin/virtualenv /usr/local/bin/virtualenv |
创建虚拟环境
1 | virtualenv env # 我在/home/roc/ 文件夹下操作的 env——>虚拟环境的名字 |
在不报错的情况下,这时会在/home/roc/
文件夹下有一个env
文件夹
激活虚拟环境
1 | source env/bin/activate |
你会发现每行代码前面多了 (env)
说明你已将成功了
②Centos7服务器部署Django项目
在你激活虚拟环境的情况下
安装Django
1 | pip install Django # 这是会默认安装Django3.0 |
运行
1 | python manage.py runserver 0.0.0.0:8000 |
我运行Django3.0 报了一个这样的错
1 | You have provided a value for the LANGUAGE_CODE setting that is not in the LANGUAGES setting. |
我在国内网站外找了半天的时间都没解决
最后我指定版本安装了Django
1 | pip install Django == 2.2.4 |
因为我提交Django项目数据库修改为MySQL
,我服务器上用的是MySQL
8.0.5
这是会报一个这样的错
1 | django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 。。。 |
你要去打开虚拟环境 Python解释器路径下的
1 | vi /home/roc/env/lib/python3.7/site-packages/django/db/backends/mysql/base.py |
在文件中把下面俩行注释
1 | #if version < (1, 3, 3): |
再次运行,又会报下一个错
1 | AttributeError: 'str' object has no attribute 'decode' |
包括这个报错在那个文件报的错都会显示 去相应的文件下修改
1 | vi /home/roc/env/lib/python3.7/site-packages/django/db/backends/mysql/operations.py # 以你的地址为准 |
在operations.py
在 146行
1 | query = query.decode(errors='replace') # 报错的地方 |
再次运行即可
打开浏览器输入如下地址
1 | http://IP:8000/static/images/nv.jpg |
python -m pip install uwsgi
步骤六
实现能够随时访问你的图片
过一段时间后你会发现你的Django项目会自动停止!!!😱😱😱
当你Django项目停止后,你就不能访问
下载uwsgi
1 | Python -m pip install uwsgi |
测试是否下载完成
1 | uwsgi --version # 他会返回一个版本号 说明安装成功 |
运行uwsgi
进入项目目录
1 | nohup python manage.py runserver 0.0.0.0:8000 & |
运行后这是后台会返回
1 | nohup: ignoring input and appending output to ‘nohup.out’ |
你需要输入exit
重启服务器即可
1 | 因为在nohup执行成功后直接点击关闭程序按钮关闭终端,会断掉该命令对应的session,导致nohup对应的进程被通知一起shutdown。所以在使用nohup命令后台运行命令之后,需要使用exit正常退出当前账户,这样才能保证命令一直在后台运行。 |