小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本文同时参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金
项目部署
- 环境搭建
不使用 Anaconda 可直接跳到创建虚拟环境
1.1 Anaconda 下载
- anaconda + virtualenv
- anaconda下载: 清华大学开源软件镜像 or 官网
1.2 Anaconda 安装
- 下载好后传到Linux
- 安装
1 | ruby复制代码 root@iZwz9ijwralw5z37wd16xsZ:~# bash ~/Downloads/Anaconda3-5.3.1-Linux-x86_64.sh |
- 回车安装到默认路径即可
- 建议输入yes,输入No的话还需要自己手动添加路径,否则conda将无法正常运行
- 是否安装VSCode,随便,我这里不安装
- 启动服务
1 | ruby复制代码root@iZwz9ijwralw5z37wd16xsZ:~# source ~/.bashrc |
- 输入
conda list
, 安装成功会显示包名
1.3 环境配置
- 创建 anaconda 环境
+ conda create -n name python版本号
1
ruby复制代码root@iZwz9ijwralw5z37wd16xsZ:~# conda create -n MyDjango python=3.6.2
1.4 创建虚拟环境
- 下载虚拟环境pip包
- pip install virtualenv
- pip install virtualenvwrapper
- 修改 .bashrc 文件
1 | bash复制代码vim ~/.bashrc |
- 使用 anaconda环境/python环境 创建新虚拟环境
+ mkvirtualenv --python='指定路径' 环境名称
+ eg:
1 | ini复制代码mkvirtualenv --python='/root/anaconda3/envs/MyDjango/bin/python' MyDjango |
默认情况下,新创建的环境将会被保存在/Users/<user_name>/anaconda3/env目录下,其中,<user_name>为当前用户的用户名。
不指定python环境的话,默认会选择本地的python版本
- 进入虚拟环境
+ workon MyDjango
- 项目拉到服务器
2.1 项目迁移
2.1.1 方法一(Xftp)
- 通过 Xftp 将项目文件从本机直接拉到服务器
2.2.2 方法二(git)
- 服务器安装git
- apt-get install git
- 通过
git clone
命令将仓库克隆到服务器- git clone gitee.com/ruochenchen…
2.2 安装项目依赖包
- 在本机项目中通过
pip freeze > requirement.txt
命令将项目所需包输出到 requirement.txt 文件中 - 服务器端项目中。通过
pip install -r requirements.txt
命令安装包
- uwsgi
- 遵循 wsgi 协议的 web 服务器
3.1 uwsgi 的安装
- pip install uwsgi
3.2 uwsgi 的配置
- 项目部署时,需要修改
settings.py
文件
1 | ini复制代码DEBUG=FALSE |
- 在项目中新建一个文件
uwsgi.ini
,方便启动/终止 uwsgi 服务
1 | ini复制代码[uwsgi] |
下面是我的
uwsgi.ini
文件配置,可以参考一下。
1 | ini复制代码[uwsgi] |
3.3 uwsgi 的启动和停止
- 启动: uwsgi –ini 配置文件路径
- 例如: uwsgi –ini uwsgi.ini
- 启动后,
ps aux | grep uwsgi
命令可以查看uwsgi 进程
- 停止: uwsgi –stop uwsgi.pid 路径
- 例如: uwsgi –stop uwsgi.pid
这里有一个小问题,如果遇到可以看一下解决方法
问题:
执行启动后,报错信息 uwsgi: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
解决方法:
sudo apt-get install libpcre3 libpcre3-dev # 安装需要的包
find / -name libpcre.so.3 # 找到libpcre.so.3(一般在根目录/lib/x86_64-linux-gnu下)
找到 /lib/x86_64-linux-gnu/libpcre.so.3
sudo ln -s /lib/x86_64-linux-gnu/libpcre.so.3 /usr/lib/libpcre.so.1 # 做软链接即可
仅仅使用uwsgi,首页的静态文件不能显示
解决方法:
在uwsgi前面在加一个nginx服务器
nginx中进行配置
- 如果是动态请求,转交请求给uwsgi
- 如果是静态请求,提前把项目用到的静态文件放到nginx所在电脑的某个目录中
根据配置,nginx就会去目录下方找到静态文件,直接返回给用户
- nginx
4.1 nginx 配置转发请求给 uwsgi
- uwsgi 需要更改配置文件
1 | ini复制代码[uwsgi] |
- nginx配置转发请求给 uwsgi,配置路径为
/etc/nginx/sites-available/default
1 | ini复制代码http{ |
- 下面是我的
default
配置信息,加了静态文件处理【静态文件处理请继续往下看】,可以参考一下
1 | ini复制代码upstream MyDjango { |
ps aux | grep nginx # 查看是否有nginx进程
- 启动nginx
- /etc/init.d/nginx start 【终止命令为: /etc/init.d/nginx stop】
也可以用如下命令
service nginx start
service nginx stop
service nginx restart
service nginx reload
- 启动uwsgi
- uwsgi –ini uwsgi.ini
4.2 nginx配置处理静态文件
1 | csharp复制代码http{ |
- django settings.py 中配置收集静态文件路径
1 | csharp复制代码# settings.py 中设置 |
- 创建文件夹
sudo mkdir -p /var/www/MyDjango/static
普通用户没有权限,需要修改文件权限
sudo chmod 777 /var/xxx/static/
- django 收集静态文件的命令
+ python manage.py collectstatic
+ 执行上面的命令会把项目中所使用的静态文件收集到 STATIC\_ROOT 指定的目录下
- 重启nginx服务
/etc/init.d/nginx reload
到这里,项目就部署完成了,还有其他需求可以继续往下看。
4.3 nginx转发请求给另外地址
- 在 location 对应的配置项中增加 proxy_pass 转发的服务器地址,
如当用户访问 127.0.0.1 时,在nginx 中配置把这个请求转发给 172.10.179.115:80(nginx)服务器,让这台服务器提供静态页面
- nginx配置如下:
1 | ini复制代码http{ |
4.4 nginx 配置 upstream 实现负载均衡
- nginx 配置负载均衡时,在 server 配置的前面增加 upstream 配置项
1 | ini复制代码http{ |
最后,欢迎大家关注我的个人微信公众号 『小小猿若尘』,获取更多IT技术、干货知识、热点资讯
本文转载自: 掘金