部署django项目到linux上和防火墙模块
部署django项目到linux上和防火墙模块
1.gitee下载项目 git clone https://gitee.com/lylinux/DjangoBlog.git
1.进入到项目里 执行这条命令
[root@web02 bianbingdang]#pip3 install -Ur requirements.txt -i https://pypi.douban.com/simple/
2.创建数据库(进入到db01)
#先启动数据库记得
systemctl start mariadb
#登录数据库
mysql -uroot -h172.16.1.51
#创建数据库dmxy
MariaDB [(none)]> create database dmxy;
#可以查看数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| django |
| dmxy |
| lol |
| mysql |
| performance_schema |
| test |
+--------------------+
7 rows in set (0.05 sec)
3.修改django里的settings配置文件 /opt/bianbingdang/bianbingdang/settings.py
[root@web02 bianbingdang]# vim /opt/bianbingdang/bianbingdang/settings.py
ALLOWED_HOSTS = ['*']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ.get('DJANGO_MYSQL_DATABASE') or 'dmxy',
'USER': os.environ.get('DJANGO_MYSQL_USER') or 'root',
'PASSWORD': os.environ.get('DJANGO_MYSQL_PASSWORD') or '123456',
'HOST': os.environ.get('DJANGO_MYSQL_HOST') or '172.16.1.51',
'PORT': int(
os.environ.get('DJANGO_MYSQL_PORT') or 3306),
'OPTIONS': {
'charset': 'utf8mb4'},
}}
4.迁移数据库
数据库编码记得设置一下
#创建迁移文件
[root@web02 bianbingdang]# python3 manage.py makemigrations
#开始迁移
[root@web02 bianbingdang]# python3 manage.py migrate
5.创建用户
[root@web02 DjangoBlog]# python3 manage.py createsuperuser
用户名: zhang
电子邮件地址: 123456@qq.com
Password:
6.创建测试数据
[root@web02 DjangoBlog]# python3 manage.py create_testdata
#出现如下内容成功
created test datas
7.收集静态文件
[root@web02 DjangoBlog]# python3 manage.py collectstatic --noinput
[root@web02 DjangoBlog]# python3 manage.py compress --force
8.运行测试
[root@web02 DjangoBlog]# python3 manage.py runserver 0.0.0.0:8010
浏览器访问192.168.15.8:8010
9.部署uwsgi启动jango项目 ,
#修改uwsgi配置文件
[root@web02 DjangoBlog]# vim myuwsgi.ini
[uwsgi]
#上面的是跟yum源一样
# 端口号socket django启动之后的端口好
socket = :8010
# 指定项目的目录 指的是项目名称
chdir = /opt/DjangoBlog
# wsgi文件路径
wsgi-file = DjangoBlog/wsgi.py
# 模块wsgi路径 和外面的名字一样
module = DjangoBlog.wsgi
# 是否开启master进程
master = true
# 工作进程的最大数目
processes = 4
# 结束后是否清理文件
vacuum = true
#测试uwsgi
[root@web02 DjangoBlog]# uwsgi --ini myuwsgi.ini
#启动uwsgi
[root@web02 DjangoBlog]# uwsgi -d --ini myuwsgi.ini
10.配置nginx配置文件
[root@web02 conf.d]# vim jango.conf
#配置网站
server {
#监听端口
listen 80;
#配置域名
server_name boke.com;
#配置路径
location / {
#加载nginx代理uwsgi的配置项
include uwsgi_params;
#指定uwsgi访问地址 netstat -nutlp 产看端口信息
uwsgi_pass 127.0.0.1:8010;
#超时时间
uwsgi_read_timeout 2;
#自定义uwsgi代理项目的路径以及配置项
uwsgi_param UWSGI_SCRIPT DjangoBlog.wsgi;
#指定python项目的路径
uwsgi_param UWSGI_CHDIR /opt/DjangoBlog;
#索引文件
index index.html index.htm;
#客户端上传文件最大值(可要可不要)
client_max_body_size 35m;
}
}
防火墙的模块
multiport
解释:连续匹配多个端口
案例1:要求192.168.15.0/24网段的所有IP只能够访问22,80,443端口,其他的取决。
iptables -t filter -A INPUT -p TCP --dport 22 -s 192.168.15.0/24 -j ACCEPT
iptables -t filter -A INPUT -p TCP --dport 80 -s 192.168.15.0/24 -j ACCEPT
iptables -t filter -A INPUT -p TCP --dport 443 -s 192.168.15.0/24 -j ACCEPT
iptables -t filter -A INPUT -p tcp -j DROP
iptables -t filter -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT
iptables -t filter -A INPUT -p tcp -j DROP
案例2:要求192.168.15.0/24网段的所有IP只能够访问70-90端口,其他拒绝
iptables -t filter -A INPUT -p tcp -m multiport --dports 10000:30000 -j ACCEPT
iptables -t filter -A INPUT -p tcp -m multiport --dports 10:30 -j ACCEPT
iptables -t filter -A INPUT -p tcp -j DROP
iprange模块
解释:连续匹配多个IP
参数:
--src-range from[-to]: 源地址范围
--dst-range from[-to] 目标地址范围
案例1:要求只有192.168.15.7到192.168.15.66能够通过22端口登录,其他的拒绝
iptables -t filter -A INPUT -p tcp --dport 22 -s 192.168.15.7 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 22 -s 192.168.15.66 -j ACCEPT
iptables -t filter -A INPUT -p tcp -j DROP
iptables -t filter -A INPUT -p tcp -m iprange --src-range 192.168.15.7-192.168.15.66 -j ACCEPT
string模块
解释:按照内容进行匹配
参数:
--string pattern # 指定要匹配的字符串
--algo {bm|kmp} # 配的查询算法
案例1:要求访问的内容中包含HelloWorld的内容不允许访问,其他的可以。
iptables -t filter -A OUTPUT -p tcp -m string --string "hello" --algo kmp -j DROP
time模块(UTC)
解释:根据时间来控制访问(UTC)
参数:
--timestart hh:mm[:ss] # 开始时间
--timestop hh:mm[:ss] # 结束时间
--monthdays day[,day...] # 指定一个月的某一天
--weekdays day[,day...] # 指定周 还是 周天
案例1:要求上午的 08:00 到 上午的 10:22 不允许访问,其他时间可以。
iptables -t filter -A INPUT -p tcp -m time --timestart 00:00 --timestop 02:22 -j DROP
icmp模块
解释:控制icmp协议
参数:
--icmp-type {type[/code]|typename}
echo-request (8) 请求(我可以ping别人,别人休想ping我)
echo-reply (0) 回应(别人可以ping我,我休想ping别人)
案例1:禁止别人ping我,但我可以ping别人
iptables -t filter -I INPUT -p icmp --icmp-type "echo-request" -j DROP
connlimit模块
# 控制并发数
参数:
--connlimit-upto n # 如果现有连接数小于或等于 n 则 匹配
--connlimit-above n # 如果现有连接数大于n 则匹配
ACCEPT 将数据包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则链。
REJECT 拦阻该数据包,并传送数据包通知对方。
DROP 丢弃包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
REDIRECT 将包重新导向到另一个端口,进行完此处理动作后,将会继续比对其它规则。
案例1:要求登录192.168.15.5的窗口最多有两个
iptables -t filter -A INPUT -p ALL --dport 22 -m connlimit --connlimit-above 2 -j REJECT
limit模块
# 针对 报文速率 进行限制。 秒、分钟、小时、天。
--limit rate[/second|/minute|/hour|/day] # 报文数量
--limit-burst number # 报文数量(默认:5)
网速 * 1000 / 1500 = 数据包数量
2.允许10个数据报文快速通过,超过的数据报文 1/m
iptables -t filter -A INPUT -p icmp -m limit --limit 1/m --limit-burst 10 -j ACCEPT
iptables -t filter -A INPUT -p icmp -j DROP
3.限速:限制传输的带宽不可以超过500k(500 * 1000 / 1500 = 333 包)
案例1:要求每秒只能够传输500k大小数据
iptables -t filter -A INPUT -p tcp -m limit --limit 333/s -j ACCEPT
iptables -t filter -A INPUT -p tcp -j DROP