Django+nginx+uwsgi上线阿里云
- 前言
之前在阿里云上线过一次django项目,时间长了都快忘记了,今天没事做就再温习了一遍,跟着我的步骤做,一定可以上线成功!废话不多说,开整~
- 第一步,搭建环境
1.在root用户下更新软件列表(不更新可能装不上东西)
apt update
2.安装常用软件
apt install nginx
apt install mysql-server #安装过程会弹出一个输入密码的框,这是你进入数据库的密码
apt install git
apt install vim
3.安装虚拟开发环境pyenv
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
然后输入命令进入 .bashrc 进去后把刚复制的三句话放置到文件最后,wq保存退出后执行命令让它生效,此时就可以生效
1.vim .bashrcda #打开末尾添加三句话
2.source .bashrc
cd .pyenv #进入这个文件
mkdir cache #创建cache文件
cd cache/ #进入此目录
这时需要安装python
#在安装python之前,我们必须要安装python所需要的依赖包,这个必须要安装,安装会失败的:我安装的是3.7.1版本
wget -c http://mirrors.sohu.com/python/3.7.1/Python-3.7.1.tar.xz -P ~/.pyenv/cache/
做安装
pyenv install 3.7.1 -v
pyenv rehash
pyenv versions
pyenv global 3.7.1
-
第二步,上传项目文件
使用winscp将项目上传到/var/www
下建的文件夹里
cd blog #进入你自己项目
接着创建一个自己的虚拟环境。用法如下:pyenv virtualenv python版本号 虚拟环境名pyenv virtualenv 3.7.1 blog
#注意版本号必须是已经安装的,否则会报错
切换到你创建的虚拟环境pyenv activate blog
切换后在命令行的最前面出现一个括号里写着你的虚拟环境
然后在这个虚拟环境下安装项目所需要的包
在这里我使用了导出的requirements.txt文件
具体方法如下:
进入你项目的虚拟环境:
命令:pip freeze >requirements.txt
注意:导出的路径为绝对路径
可切换到其他环境中,再把上面文件中的包一次安装
将文件上传到服务器上
workon 新环境名
然后在阿里云上的虚拟环境开始安装
pip install -r requirements.txt
然后等他安装完结束,如果有个别没有安装好的,可以单独安装一次
好了,安装完成后可以检查一下如自己的生产环境的是否一致
然后别忘了安装uwsgi
pip install uwsgi
-
第三部分,配置nginx和uwsgi
进入自己项目根目录vim uwsgiconf.ini
后把下方的配置文件放到里面
#头部
[uwsgi]
#外部访问地址,可以指定多种协议,现在用http便于调试,之后用socket
socket = 0.0.0.0:8000 # uwsgi的监听端口
#指向项目根目录
chdir = /var/www/blog
#wsgi.py所在位置
wsgi-file = /var/www/blog/my_blog/wsgi.py
module = my_blog.wsgi
#虚拟开发环境位置(一定要改成你自己的虚拟环境目录)
#virtualenv = /root/python/.pyenv/versions/3.7.1
home = /root/.pyenv/versions/blog
plugins = python
master = true
#处理器数
processes = 1
#线程数
threads = 2
然后再配置nginx
最后的blog是自己创建的一个文件名
vim /etc/nginx/sites-available/blog
server {
listen 80;
server_name www.xiejianxiong.top; #这里写自己的域名
location / {
# 转发端口必须和uwsgiconf.ini中socket端口一致
uwsgi_pass 127.0.0.1:8000;
include uwsgi_params;
uwsgi_param UWSGI_SCRIPT blog.wsgi;
# 项目的根目录
uwsgi_param UWSGI_CHDIR /var/www/blog;
}
# 静态资源所在位置
location /static {
alias /var/www/blog/static/;
}
}
然后配置nginx的软链接
进入这个目录里
ln -s 目标地址 源地址
ln -s ../../../web-admin/etc/nginx-location.conf web-admin.conf
我是这样配置的 这里有个空格不要忘了
ln -s /etc/nginx/sites-available/blog blog
ll
#查看结果里没有报红颜色,就成功
然后重启服务,如果不报错,就ok,如果报错,可能是语法问题
service nginx restart
然后最后一步,启动uwsgi服务器
激动人心的时候到了!!!
uwsgi uwsgiconf.ini
公网*问一下,记得写对路径,参照一下自己django的url是如何配置的
如果成功了的话,记得点个赞!蟹蟹