Django 上线部署 nginx +uswgi
Posted 青春叛逆者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 上线部署 nginx +uswgi相关的知识,希望对你有一定的参考价值。
使用上传文件软件连接阿里云服务器公网IP
在root根目录下找到var在里面新建一个www文件目录,把自己的项目传进去,本次传的是博客项目
先更新一下:apt-get update 安装git:apt-get install(不安装无法下载虚拟环境的pyenv)
安装编辑器:apt-get install vim
安装数据库:apt-get install mysql-server (需要输入数据库密码)
apt-get install libmysqlclient-dev
安装redis : sudo apt-get install redis-server
安装nginx:apt-get install nginx
安装虚拟开发环境
pyenv是一个Python版本管理工具,它能够进行全局的Python版本切换,也可以为单个项目提供对应的Python版本。使用pyenv以后,可以在服务器上安装多个不同的Python版本,也可以安装不同的Python实现。不同Python版本之间的切换也非常简单。pyenv官方地址https://github.com/pyenv/pyenv-installer 安装pyenv,在命令行下键入:
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
#默认安装到当前用户的工作目录下的.pyenv,我们可以查看一下 cd ~ ls -la 将安装路径写入~/.bashrc 将以下三条语句写入 ~/.bashrc (每个人的都不一样,上面安装后最后出现的三句话就是)
sudo vim .bashrc
跳到文件末端
shift+G
按o
export PATH="/home/zhu/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
按esc
按 :x
source ~/.bashrc #配置立刻生效 $echo $PATH #如果路径第一个结尾是shims则表示成功 /home/python/.pyenv/plugins/pyenv-virtualenv/shims:/home/python/.pyenv/shims :/home/python/.pyenv/bin:/home/python/bin:/home/python/.local/bin:/usr/local/sbin :/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin 更新一下 pyenv update 列出pyenv中所有可用的python版本 pyenv versions
可以看到系统没有任何编译工具,我们需要下载python
安装python ```shell #1.在安装python之前,我们必须要安装python所需要的依赖包,这个必须要安装,安装会失败的: $ sudo apt-get install libc6-dev gcc $ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm #2. 安装python $ pyenv install 3.6.6 -v #-v 以日志模式显示安装过程 #因为pyenv会自动到github上下载,速度超慢,所以一般会选择使用curl或者wget下载到~/.pyenv/cache下,然后再用pyenv安装,下面是可选的安装模式 $ cd ~/.pyenv $ sudo mkdir cache $ wget -c http://mirrors.sohu.com/python/3.6.6/Python-3.6.6.tar.xz -P ~/.pyenv/cache/ $ pyenv install 3.6.6 -v(一定要用这个安装python) #3.更新pyenv数据库 $ pyenv rehash #4.列出所安装的python版本 $ pyenv versions #5.切换python版本 $ pyenv global 3.6.6 #6.验证版本 $ python ```
安装virtualenv(可选) 如果是python3以上,安装完pyth就已经安装了virtualenv,就不用安装了 ~~~ #安装 $ pip install virtualenv #或者,如果提示版本不匹配,可以使用--upgrade参数 $ sudo pip install --upgrade virtualenv ~~~ - 使用virtualenv创建项目的虚拟环境 **一个项目创建一个virtualenv的虚拟环境**,在这个环境中,可以用pip安装项目所需的库,不会影响其他项目。切记一个项目一个虚拟环境,否则可能会发生莫名的错误。 ~~~ #1.首先创建项目目录 $ sudo mkdir -p myproject/blog cd myproject/blog #2.创建项目的虚拟环境 #用法:pyenv virtualenv python版本号 虚拟环境名 $ pyenv virtualenv 3.6.6 env3.6.6 #注意版本号必须是已经安装的,否则会报错 #3.切换到虚拟环境 python@ubuntu:/myproject/blog$ pyenv activate env3.6.6 (env3.6.6) python@ubuntu:/myproject/blog$ # (env3.6.6)表示该项目处于虚拟环境中 #验证 (env3.6.6) python@ubuntu:/myproject/blog$ python Python 3.6.6 (default, Mar 29 2018, 10:33:37) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. #4. 切出虚拟环境 (env3.6.6) python@ubuntu:/myproject/blog$ pyenv deactivate env3.6.6 ~~~
切换到你上传的项目目录
cd /var/www/django_blog
如果你没有退出虚拟环境就不用切换了,如果退出了就重新激活
pyenv activate env3.6.6
pip install django==1.11.16
pip install pymysql pip install pillow pip install django-tinymce 插入你所有需要的包,不然最后会有报错
这些是我需要的包
pip install uwsgi
编辑uwsgi配置文件
sudo vim uswgiconf.ini
[uwsgi] socket = 0.0.0.0:8000 # uwsgi的监听端口 # 指向项目根目录 chdir = /var/www/django_blog # wsgi.py所在位置 wsgi-file = django_blog/wsgi.py module = django_blog.wsgi # 虚拟开发环境位置(一定要改成你自己的虚拟环境目录) virtualenv = /root/.pyenv/versions/env3.6.6 master = true #处理器数 processes = 1 # 线程数 threads = 4
#启动一下看看有没有报错
uwsgi uswgiconf.ini
可以看一下下面是没有报错的
然后ctrl +c结束程序配置nginx
新建并配置 sudo vim /etc/nginx/sites-available/myblog 配置内容 server { listen 80; server_name www.olnyou.cn;(你自己的域名) location / { uwsgi_pass 127.0.0.1:8000; include uwsgi_params; uwsgi_param UWSGI_SCRIPT django_blog.wsgi; uwsgi_param UWSGI_CHDIR /var/www/django_blog; } location /static { alias /var/www/django_blog/static/;(静态文件位置) } }
cd /etc/nginx/sites-enabled/ ln -s ../sites-available/myblog myblog#建立软连接 ll 如下图没有飙红证明没有问题
#重启nginx
service nginx restart
最好把你的数据库也上传上来,后面要用到
上传阿里云短信验证,先给他建一个文件目录,如下图
cd cd duanxinyanzheng/dysms_python ls python setup.py install
mysql -uroot -p
输入密码
创建你自己的数据库
create database blog;
exit
找到你的数据。进行数据恢复
mysql -uroot -p blog2 <blog2.sql
切换到你的项目目录
cd /var/www/django_blog/
启动uwsgi
uwsgi uswgiconf.ini
现在登录你的网址就可以访问了,有不懂的欢迎交流。
以上是关于Django 上线部署 nginx +uswgi的主要内容,如果未能解决你的问题,请参考以下文章
Plasm部署智能合约——nginx反代转发plasm节点服务——2021.6.2