nginx + uwsgi + 项目部署笔记
1.单机本地测试运行方式,调用django第三方的wsgifef单机模块,性能很低
python3 manage.py runserver 0.0.0.0:9000
2.使用uwsgi 去启动django项目,支持并发更多
3.准备前后端代码
路径 /opt/s16luffy 下
07-luffy_project_01 前端代码
luffy_boy 后端代码
代码在s16luffy项目里面
如果还是zip文件要先解压
解压命令:
unzip 文件名
4.先从vue前端搞起
1.解决node环境
如果电脑里面没有安装node要先安装(安装在opt目录下)
2.更改vue发送请求的接口地址,
这个vue发送的地址,应该是发送给 nginx代理,然后代理再转发请求给 drf后台
用以下命令,更改vue发送的接口地址(把原本的计算机会换地址改成虚拟机地址,全局配置,更改完成后打包给dist文件夹生 效,见下面第三步(打包编译vue静态文件)
这里更改IP地址是为了后面django后端给前端返回数据时前端能连接上虚拟机地址而不是连接本机回环地址,否则前端vue页 面连接的就是回环地址就算拿到了数据也显示不了正 确的vue页面
输入命令:
sed -i "s/127.0.0.1/192.168.15.84/g" /opt/s16luffy/07-luffy_project_01/src/restful/api.js
待会要准备nginx的代理地址,如下
待会要准备nginx的代理地址,如下
待会要准备nginx的代理地址,如下
192.168.15.71:8000
192.168.15.71:8000
192.168.15.71:8000
3.打包编译vue静态文件
npm install
npm run build
打包完成后会在/opt/s16luffy/07-luffy_project_01路径下产生一个dist文件夹,如果原本就有dist文件先把原有的dist文 件删除
#如果你打包不成功
1.更换4G网络,开始打包
2.在windows中打包,生成dist文件夹后,发送给linux
3.在同桌机器上打包,生成dist后,发送给自己
4.更换淘宝的 npm源,加速下载
4.生成的dist文件夹,就是路飞学成的静态页面,丢给nginx去返回页面即可
5.配置nginx.conf找到vue的静态页面
路径 vim /opt/nginx112/conf/nginx.conf
nginx.conf修改第一个server标签如下
#第一个虚拟主机
server {
listen 80;
server_name
s16chiji.com;
#当请求域名是
s16chiji.com的时候就进入这个locaton路径匹配,返回磁盘数据
location / {
root /opt/s16luffy/07-luffy_project_01/dist;
index index.html;
}
#通过这个参数,定义错误页面的文件 ,当状态码是 404 400 401 时,返回40x.html页面
error_page 404 401 400 403 /40x.html;
}
#第二个虚拟主机
server {
listen 8000;
server_name
s16chiji.com;
location / {
uwsgi_pass 192.168.15.71:9000;
include /opt/nginx112/conf/uwsgi_params;
}
}
6.配置后端代码,用uwsgi启动luffy学诚
创建一个虚拟环境(下面第一行代码,然后在虚拟环境下操作)
mkvirtualenv uwsgi_luffycity
pip3 list
pip3 install -r requirements.txt
如果没有requirement.txt文件,在opt目录下手动创建一个这个文件
touch requirements.txt
给requirements.txt文件添加内容如下
certifi==2018.11.29
chardet==3.0.4
crypto==1.4.1
Django==2.1.4
django-redis==4.10.0
django-rest-framework==0.1.0
djangorestframework==3.9.0
idna==2.8
Naked==0.1.31
pycrypto==2.6.1
pytz==2018.7
PyYAML==3.13
redis==3.0.1
requests==2.21.0
shellescape==3.4.1
urllib3==1.24.1
uWSGI==2.0.17.1
7.准备uwsgi,以及uwsgi.ini
uwsgi.ini配置参数如下
路径 vim /opt/s16luffy/luffy_boy/uwsgi.ini
(uwsgi_luffycity) [root@s16ds luffy_boy]# cat uwsgi.ini (参数如下,本行不要复制)
[uwsgi]
# Django-related settings
# the base directory (full path)
#指定django的项目目录,第一层
chdir = /opt/s16luffy/luffy_boy/
# Django's wsgi file
#找到django的wsgi文件
#这里需要写项目的第二层目录Alibab_crm
module = luffy_boy.wsgi
# the virtualenv (full path)
#填写虚拟环境的绝对路径
home =/root/Envs/uwsgi_luffycity
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 5
# the socket (use the full path to be safe
#指定socket协议,运行django,只能与nginx结合时使用
#指定socket协议,运行django,只能与nginx结合时使用
#指定socket协议,运行django,只能与nginx结合时使用
socket = 0.0.0.0:9000
#如果你没用nginx,只想自己启动一个http界面,用这个
#http = 0.0.0.0:8000
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
8.更改django后台的redis数据库连接(输入下面路径进入settings.py文件进行修改)
路径:
vim /opt/s16luffy/luffy_boy/luffy_boy/settings.py
1.更改redis连接
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "
redis://192.168.15.71:6666",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {"max_connections": 100},
# "PASSWORD": "密码",
"DECODE_RESPONSES":True
}
},
}
2.更改redis数据库连接的驱动,用django的驱动
路径:
vim /opt/s16luffy/luffy_boy/api/views/shoppingcart.py
修改如下
import redis
#REDIS_CONN = redis.Redis(decode_responses=True)
REDIS_CONN = get_redis_connection()
3.启动redis数据库,注意更改redis的安全模式,
redis-6666.conf配置如下
(uwsgi_luffycity) [root@s16ds redis-4.0.10]# cat redis-6666.conf
port 6666
daemonize yes
pidfile /data/6666/redis.pid
loglevel notice
logfile "/data/6666/redis.log"
dir /data/6666
appendonly yes
appendfsync everysec
protected-mode no
bind 192.168.15.84
4.虚拟环境下启动redis服务端
(uwsgi_luffycity) [root@localhost redis-4.0.10]# redis-server redis-6666.conf
虚拟环境下启动后台uwsgi
(uwsgi_luffycity) [root@localhost luffy_boy]# uwsgi --ini uwsgi.ini
物理环境下启动nginx
[root@localhost 07-luffy_project_01]# nginx
9.确保vue和nginx,以及uwsgi都启动了,测试再浏览器访问,是否可以课程添加,alex alex3714登陆
本章常用命令
重启后端
uwsgi --ini uwsgi.ini
重启nginx
nginx -s reload
重启redis
redis-server redis-6666.conf # 6666 自己设置的端口号
其他小知识点
virtualenv
virtualevnwrapper
pyenv
都是虚拟化出的多个python解释器的分身