本人第一次进行项目部署,前前后后花了大约一周多时间,遇到了各种错误,才部署成功,特此记录,一是后来再部署可以减少许多错误,而是朋友们也可以借鉴,不足之处,多多包涵。
首先我们要大致弄懂nginx与uwsgi的原理和作用,否则非常抽象,配起来也是糊里糊涂。简单来说就是nginx接收http请求 nginx访问静态资源,把访问动态资源的要求转发给uwsgi服务器。具体点的讲解博客如下
nginx与uwsig
安装操作软件Xshell
1 查看阿里云安全组
把应该打开的端口打开,否则浏览器不能访问,常用的端口有8000 8001 6379 80 8002
2 安装必要软件
Mysql sudo apt-get install mysql-server mysql-client
安装后建立root用户 建立新数据库
由于我的新项目没有历史数据,所以不需要把历史数据上传
Redis 下载压缩包 解压后安装
启动redis redis-server redis.conf(在redis目录下)
3 安装nginx
安装博客如下
nginx安装
安装完毕一定要看是否安装成功,安装路径
命令 nginx -t
如果不出现这个 就是安装失败 需要看看自己哪里出现了错误
如果安装失败,删除nginx比较麻烦,可以查看下面的博客来进行删除
彻底删除nginx
4 安装虚拟环境
可以参考下列博客,简单有效
安装虚拟环境
启动虚拟环境 source /root/虚拟环境目录/bin/activate
安装pip3 django 以及项目所用的包
Pip install -r requirement
安装uwsgi,pip安装 安装在虚拟环境中
Sudo pip3 install uwsgi
5 配置好项目的setting文件,修改必要的ip地址,数据库配置等,把新建列的数据库连接上
数据库迁移(视自己的情况而定 ,我的数据库不需要任何数据现在) 删除文件下除了__init__.py之外的所有迁移记录的文件
执行命令 python manage.py makemigrations
python mangae.py migrate 建表
6 启动项目试一下,在虚拟环境下启动
注意启动项目命令
python manage.py runserver 0.0.0.0:8002(端口自行设置)
~~
7配置nginx
在etc/nginx/conf.d路径下新建test1.conf文件
文件内容:
前端入库配置
静态文件位置:网址栏输入ip就是访问这里面的index.html文件
配置完输入命令 nginx -t 查看是否配置成功
8配置uwsgi
在项目目录下,也就是有manage.py文件的目录下,新建一个uwsgi.ini文件和一个run.log文件,然后编辑uwsgi.ini文件如下:
配置完启动uwsgi : uwsgi --ini uwsgi.ini
如果前面都成功,(当然那不太可能),重启nginx 启动虚拟环境 进入项目根目录,启动项目 应该就可以了
启动项目后 关闭与阿里云的连接后 项目保持运行的命令是
nohup python manage.py runserver 0.0.0.0:8002 &
以下是部署常用命令
mkvirtualenv:创建虚拟环境
mkdir: 创建文件夹
deactivate:退出虚拟环境
rmvirtualenv:删除虚拟环境
启动redis redis-server redis.conf
redis-cli -p 6379
查看redis是否启动 ps aux | grep redis-server
查看端口占用情况 netstat -apn | grep 端口号
杀死进程 kill -9 进程号
netstat -nultp #查看所有端口
启动 nginx
cd /usr/local/nginx/sbin
./nginx
#启动虚拟环境
source /root/qilunjilast/bin/activate
启动:uwsgi --ini uwsgi.ini
停止:uwsgi --stop uwsgi.pid
重启:uwsgi --reload uwsgi.pid
启动项目
1启动nginx nginx
2启动uwsgi 需要在服务器启动uwsgi服务 到uwsgi.ini的文件夹 用命令uwsgi --ini uwsgi.ini
3启动redis redis-server redis.conf
4启动项目 python manage.py runserver 0.0.0.0:8002