很是抱歉的是,由于突如其来的疫情,个人hadoop系列断更了,很难受,由于个人分布式环境在学校,个人笔记本配置带不起来,代码跑不起来我是不敢写博客的,而后寒假在家写代码也没啥意思,看了很是多的书,把计网和操做系统从新学了一遍。由于实习的须要,将来我更多的技术可能在Python这块,可是java相关的内容我也会努力保持更新,同时也会出更多的入门教程给你们谢谢你们。php
最近在学习django的过程当中,用django作了一个小demo,因此试试看能不能部署到服务器上,本身顺便也熟悉一下Django整个部署的流程,由于以前学习flask的时候,就使用的uwsgi来做为python web服务器来部署的,因此此次也就选择了nginx+uwsgi这样的一个组合。css
当时买完云服务器以后,就顺手把宝塔装上了,以前用宝塔部署php项目是真的很容易,因此就偷懒试试宝塔能不能部署django,苦试一个小时,无果,遂放弃,仍是老老实实用原生的uwsgi配合Nginx来部署吧。而后下面的流程我会争取把有多是坑的地方重点标注出来,未来若是发博客或者本身须要再次部署的时候,也能够少写不少配置文件。java
系统版本
:centos7.5python
python
版本:3.6.5linux
nginx
版本:1.16.1nginx
uwsgi
版本:2.0.18web
如环境不一样,还请查阅其余资料另行配置。sql
在部署以前,请确保你的linux服务器正确安装了对应的python版本,若是须要python3版本,请自行查阅资料进行升级安装。django
首先为了更好的独立部署,避免对其余的项目产生干扰,咱们须要安装python 虚拟环境:json
sudo pip install virtualenv
sudo pip install virtualenvwrapper
复制代码
virtualenvwrapper 是virtualenv的扩展管理包,能够将全部的虚拟环境整合在一个目录下。
配置虚拟环境:
mkdir ~/.virtualenvs
复制代码
打开.bashrc:
sudo vim ~/.bashrc
复制代码
在.bashrc的末尾增长下面内容:
export WORKON_HOME=$HOME/.virtualenvs # 全部虚拟环境存储的目录
source /usr/local/python3/bin/virtualenvwrapper.sh
复制代码
注意!:这里的/usr/local/bin/virtualenvwrapper.sh只是针对于我当前系统环境的一个位置,并非全部的服务器都是在这个位置,若是本身不知道virtualenvwrapper.sh在哪里,能够搜索文件来找到它在系统中的位置,而且修改.bashrc。
启用配置文件:
source ~/.bashrc
复制代码
这个时候若是不报错,就表明咱们的虚拟环境配置成功了,通常常见的报错就是virtualenvwrapper.sh文件找不对。
建立虚拟环境:
找一个你本身以为能记住的地方,新建一个env 文件夹:
cd /www
mkdir env
cd env #进入env目录
复制代码
新建一个虚拟环境:
mkvirtualenv -p /usr/bin/python3 orange_env # my_env是虚拟环境的名称
复制代码
注意:若是你的软链接/usr/bin/python3没有的话,会报错误,找不到/usr/bin/python3,这个时候就须要你本身新建一个软链接:
若是报错:
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 # 路径要改为本身的python安装路径
复制代码
以后即可以进入咱们的虚拟环境了:
source /www/env/orange_env/bin/activate
复制代码
进去虚拟环境以后,前面会出现一个括号,里面是你虚拟环境的名字:
(orange_env) [root@iz2ze1cvux96riiwfh05qqz ~]#
复制代码
在虚拟环境中安装uwsgi:
pip install uwsgi
复制代码
退出虚拟环境:
deactivate
复制代码
再次在主环境中安装uwsgi:
pip install uwsgi
复制代码
注意:若是你有其余的依赖,好比django,msqlclient这些,记得必定要在虚拟环境里pip安装一下。
找一个你认为比较合适的地方,新建一个文件夹,将你的Django项目上传进去:
以我为例:
cd /www
mkdir orange
复制代码
上传解压操做略,记得是上传项目根目录,就是直接带manage.py的那个目录。
新建一个uswgi配置文件,uswgi支持多种配置文件类型,好比yaml,xml,json,ini,这里我选的是xml。
vim mysite.xml #记得mysite.xml 要和你项目的manage.py 在一个目录下。
复制代码
mysite.xml内容以下:
<uwsgi>
<socket>127.0.0.1:8080</socket><!-- 内部端口,自定义 -->
<chdir>/www/orange/</chdir><!-- 项目路径 -->
<module>orangeproject.wsgi</module> <!-- 通常模块名 项目名+wsgi -->
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>
复制代码
安装Nginx:
Nginx 我以前有写过一系列的基础入门教程,若是对安装启动重启这些不是很熟练的能够看下面这篇文章:
查看nginx 配置文件路径:
nginx -t
复制代码
记得备份nginx以前的配置文件,而后把以前的配置所有删了,直接加入下面内容:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 8000;
server_name 你的域名;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080;
uwsgi_param UWSGI_SCRIPT orangeproject.wsgi;
uwsgi_param UWSGI_CHDIR /www/orange/;
}
location /static/ {
alias /www/orange/transfer/static/;
}
}
}
复制代码
注意模块名要保持一致,并且你nginx监听的端口不能和你django启动的端口同样,要不uswgi会由于nginx占用端口启动失败。alias /www/orange/transfer/static/; 这个是你的静态文件地址,css,img这些。
检查nginx是否配置成功:
nginx -t
复制代码
重启nginx:
nginx -s reload
复制代码
以后,再次进入咱们的虚拟环境orange_env中,启动咱们的uwsgi服务器:
cd /www/orange
uwsgi -x mysite.xml
复制代码
而后打开咱们的本地浏览器,输入:域名:8000,备案过的能够改nginx配置文件成80。
大功告成: