部署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

 

posted @ 2021-11-04 21:22  迪迦张  阅读(65)  评论(0编辑  收藏  举报