项目部署
nginx部署supercrm的笔记
1.先后后端搞起,用supervisor进程管理工具,指定uwsgi启动supercrm
2.安装uwsgi
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple uwsgi
3.使用uwsgi.ini配置文件,启动supercrm
touch uwsgi.ini ,写入如下内容
#####################
# mysite_uwsgi.ini file
[uwsgi]
# Django-related settings
# the base directory (full path)
#填写项目的第一层路径
chdir = /opt/supercrm/
# Django's wsgi file
#填写django的wsgi.py文件路径,填写第二层项目
module = supercrm.wsgi
# the virtualenv (full path)
#填写虚拟环境的绝对路径
home = /root/Envs/s22venv1
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 4
# the socket (use the full path to be safe
#指定uwsgi的启动协议 ,是unix-socket协议,必须通过nginx去反代才能访问到
socket = 0.0.0.0:8000
#还可以指定http协议 ,启动uwsgi
#http = 0.0.0.0:8000
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
4.指定uwsgi.ini配置文件,启动项目
uwsgi --ini uwsgi.ini # --ini代表指定配置文件启动
5.uwsgi默认不解析django的静态文件,需要收集起来丢给nginx
修改django的静态文件 settings.py
添加如下参数
STATIC_ROOT='/opt/s22static' #代表收集django所有静态文件,以及admin后台的静态文件(css js img)
执行命令,开始收集
python3 manage.py collectstatic
6.配置nginx,进行反向代理,以及处理静态文件
-编译安装淘宝的nginx,然后使用
下载淘宝nginx
wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz
-解压缩
tar -zxvf tengine-2.3.2.tar.gz
-进入淘宝nginx源码目录,开始编译三部曲
第一曲:指定安装路径
./configure --prefix=/opt/tngx232/
第二曲:开始编
make
第三曲:
make install
7.配置淘宝nginx的环境变量
vim /etc/profile
PATH="/opt/python367/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/tngx232/sbin"
source /etc/profile
8.修改nginx的配置文件
找到nginx.conf,修改server{}虚拟主机的配置
location / {
#注释掉root,去掉静态文件的功能
#root /opt/pgone;
#index index.html index.htm;
#nginx请求转发的参数,就是这俩了
#nginx请求转发的参数,就是这俩了
#nginx请求转发的参数,就是这俩了
include uwsgi_params;
uwsgi_pass 0.0.0.0:8000;
}
9. 用supervisor进程管理工具,去启动uwsgi
yum install supervisor -y #
生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
打开/etc/supervisord.conf 配置文件,定义启动supercrm的任务
[program:s22crm]
command=/root/Envs/s22venv1/bin/uwsgi --ini /opt/supercrm/uwsgi.ini
autostart=true ; 在supervisord启动的时候也自动启动
startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
stopasgroup=true ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true ;默认为false,向进程组发送kill信号,包括子进程
10.启动supervisor,并且自动的启动了uwsgi
supervisord -c /etc/supervisord.conf
11.管理supervisor的进程
supervisorctl -c /etc/supervisord.conf
12.处理uwsgi的静态文件,修改nginx.conf,添加一个新的location路径匹配
#再添加一个nginx的路由匹配,匹配静态资源
location /static {
alias /opt/s22static;
}
nginx + uwsgi+django(supervisor) + mysql
#反向代理 ,代理的是服务端
租房的客户,客户端 房东
用户浏览器 -> nginx() -> 后端的django
用户浏览器 <- nginx() <- 后端的django
redis了解多少
hash
string
list
set
zset
-rw-r--r--. 1 root root 2835884 Sep 5 16:58 tengine-2.3.2.tar.gz
-(普通文件) rw-(属主user) r--(属组group) r--(其他人other)
用数字表示权限 6 4 4
r 可读 4
w 可写 2
x 可执行 1
- 没有权限
drwxrwxr-x. 14 root root 4096 Nov 13 12:14 tengine-2.3.2
d(文件夹) rwx rwx r-x
linux中怎么安装redis
1.yum安装 最简单(自动解决依赖关系,使用方便,版本很低,不方便自定义功能)
2.源码编译安装(可以自由选择最新的版本,自定制各种功能,指定安装路径)
3.rpm包手动安装(垃圾,不选择,自动解决依赖关系)
编译安装redis
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
下载解压缩
tar -zxvf redis-4.0.10.tar.gz
指定配置文件启动redis,设置密码,开启安全模式,开启远程连接
找到配置文件redis.conf
找到如下配置,打开注释
bind 192.168.21.131 #redis的启动地址
requirepass haohaio #设置密码
daemonize yes #以守护进程形式,在后台运行
#指定配置文件启动
redis-server redis.conf
#通过客户端命令去连接
redis-cli -h 192.168.21.131 -p 6379
#学习redis的五大数据类型
keys * 查看所有key
type key 查看key类型
expire key seconds 过期时间
ttl key 查看key过期剩余时间 -2表示key已经不存在了
persist 取消key的过期时间 -1表示key存在,没有过期时间
exists key 判断key存在 存在返回1 否则0
del keys 删除key 可以删除多个
dbsize 计算key的数量
五大数据类型
内存性数据库
断电数据丢失
进程挂掉,数据也释放,也丢失
配置数据持久化的规则
配置redis支持数据持久化 rdb和aof方式
rdb方式配置文件如下
touch s22-rdb-redis.conf
vim s22-rdb-redis.conf #写入如下参数
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379 #定义持久化文件存储位置
dbfilename s22dbmp.rdb #指定rdb持久化文件
bind 127.0.0.1 #redis绑定地址
save 900 1 #rdb机制 每900秒 有1个修改记录
save 300 10 #每300秒 10个修改记录
save 60 10000 #每60秒内 10000修改记录
rdb持久化机制,可以通过save手动执行,触发数据持久化,也可以配置触发条件
aof能够最大程度的保证数据安全
配置支持aof持久化模式的redis.conf
如下
vim s22-aof-redis.conf
写入如下内容
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
appendonly yes
appendfsync everysec #每秒钟记录一次修改类的操作
#redis主从同步
主库 可读可写
从库,复制主库的数据
配置redis的一主二从的方式
redis支持多实例,一台机器上,通过不同的端口,不同的配置文件,运行多个单独的数据库
[root@localhost master-slave]#vim redis-6379.conf #添加如下配置
port 6379
daemonize yes
pidfile /data/6379/redis.pid
loglevel notice
logfile "/data/6379/redis.log"
dbfilename dump.rdb
dir /data/6379
[root@localhost master-slave]#vim redis-6380.conf #添加如下配置
port 6380
daemonize yes
pidfile /data/6380/redis.pid
loglevel notice
logfile "/data/6380/redis.log"
dbfilename dump.rdb
dir /data/6380
slaveof 127.0.0.1 6379
[root@localhost master-slave]#vim redis-6381.conf #添加如下配置
port 6381
daemonize yes
pidfile /data/6381/redis.pid
loglevel notice
logfile "/data/6381/redis.log"
dbfilename dump.rdb
dir /data/6381
slaveof 127.0.0.1 6379
#通过命令,创建主从的关系
127.0.0.1:6381> slaveof 127.0.0.1 6379
OK
127.0.0.1:6380> slaveof 127.0.0.1 6379
OK
然后分别查看他们的的身份关系
redis-cli -p 6379 info replication
redis-cli -p 6380 info replication
redis-cli -p 6381 info replication
手动模拟主从故障
redis哨兵的搭建
环境准备
准备三台redis,一主两从
redis-6379.conf
redis-6380.conf
redis-6381.conf
准备三个哨兵,检测主库 ,三个配置文件仅仅是端口的不同
redis-26379.conf
配置如下
port 26379
dir /var/redis/data/
logfile "26379.log"
// 当前Sentinel节点监控 192.168.119.10:6379 这个主节点
// 2代表判断主节点失败至少需要2个Sentinel节点节点同意
// mymaster是主节点的别名
sentinel monitor s22msredis 127.0.0.1 6379 2
//每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过30000毫秒30s且没有回复,则判定不可达
sentinel down-after-milliseconds s22msredis 30000
//当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点,
原来的从节点会向新的主节点发起复制操作,限制每次向新的主节点发起复制操作的从节点个数为1
sentinel parallel-syncs s22msredis 1
//故障转移超时时间为180000毫秒
sentinel failover-timeout s22msredis 180000
daemonize yes
redis-26380.conf
redis-26381.conf
redis集群搭建
准备6个节点,用于搭建集群,六个配置文件,仅仅是端口的不同
redis-7000.conf
port 7000
daemonize yes
dir "/opt/redis/data"
logfile "7000.log"
dbfilename "dump-7000.rdb"
cluster-enabled yes #开启集群模式
cluster-config-file nodes-7000.conf #集群内部的配置文件
cluster-require-full-coverage no #redis cluster需要16384个slot都正常的时候才能对外提供服务,换句话说,只要任何一个slot异常那么整个cluster不对外提供服务。 因此生产环境一般为no
redis-7001.conf
redis-7002.conf
redis-7003.conf
redis-7004.conf
redis-7005.conf
分别启动六个redis数据库
此时要分配槽位了
rabbitmq的安装学习,实现生产消费
1.不确认机制,会丢失消息
2.确认机制,保证消息不丢失

浙公网安备 33010602011771号