15 中期项目之搭建博客系统

要求:

lb01和lb02的80和443端口开放,其他端口不开,外网开放
其他服务器关闭外网
web服务器nginx监控uwsgi,uwsgi端口是8008

实现全栈https

1、 准备服务器

主机ip身份
lb01 192.168.15.5 七层负载均衡
web01 192.168.15.7 web服务器
web02 192.168.15.8 web服务器
web03 192.168.15.9 web服务器
db01 192.168.15.51 数据库
m01 192.168.15.71 跳板机

2、db01配置

1.创建数据库

mysql -uroot -p

 

CREATE DATABASE `djangoblog`


2.配置字符集

 

 

3.配置防火墙规则

只有内网可访问

yum install iptables-services -y
systemctl start iptables
iptables -F
iptables -t filter -A INPUT -p ALL -s 172.16.1.0/20 -j ACCEPT
iptables -t filter -A INPUT -p ALL -j DROP

3、web服务器配置

1.下载代码

cd /opt
git clone https://gitee.com/lylinux/DjangoBlog.git

2.安装相关依赖

  cd DjangoBlog

yum install python3 libxml* python-devel gcc* pcre-devel openssl-devel python3-devel -y
yum install gcc python3-devel mysql-devel -y

3.修改数据库配置文件

vim /opt/DjangoBlog/DjangoBlog/settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': os.environ.get('DJANGO_MYSQL_DATABASE') or 'djangoblog',
        '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.安装模块

cd /opt/DjangoBlog
pip3 install -Ur requirements.txt -i http://pypi.douban.com/simple/

数据库迁移:

python3 manage.py makemigrations
python3 manage.py migrate

 

5.创建超级用户

cd /opt/DjangoBlog
python3 manage.py createsuperuser

6.创建测试数据

cd /opt/DjangoBlog
python3 manage.py create_testdata

7.收集静态文件

cd /opt/DjangoBlog
python3 manage.py collectstatic --noinput
python3 manage.py compress --force

8.启动测试:

python3 manage.py runserver 0.0.0.0:8008

9.安装uwsgi

pip3 install uwsgi 

10.编辑项目启动配置文件

cd /opt/DjangoBlog

vim myuwsgi.ini

[uwsgi]
# 端口号
socket            = :8008
# 指定项目的目录
chdir           = /opt/DjangoBlog
# wsgi文件路径
wsgi-file       = DjangoBlog/wsgi.py
# 模块wsgi路径
module          = DjangoBlog.wsgi
# 是否开启master进程
master          = true
# 工作进程的最大数目
processes       = 4
# 结束后是否清理文件
vacuum          = true

11.启动uwsgi

uwsgi -d --ini my_uwsgi.ini

12.配置Nginx连接uwsgi

cd /etc/nginx/conf.d

vim blog.conf

# 配置一个网站
server {
	# 监听的端口
	listen 80;
	# 配置域名
	server_name blog.com;
	# 配置路径
	location / {
		# 加载Nginx代理uwsgi的配置项 
		include uwsgi_params;
	# 指定uwsgi的访问地址
		uwsgi_pass 127.0.0.1:8008;
	# 连接uwsgi的超时时间
		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;
	}
}

13.nginx.conf内容如下

# 工作进程启动用户
user  nginx;
# 启动的worker进程数
worker_processes  auto;
# 指定错误日志的路径
error_log  /var/log/nginx/error.log notice;
# 指定nginx的进程PID
pid        /var/run/nginx.pid;

# 配置事件
events {
    # worker进程中的最大的连接数
    worker_connections  1024;
}

# http配置模块
http {
    # include是将其他文件导入进来
    include       /etc/nginx/mime.types;
    # default_type 指定nginx处理文件的默认类型
    default_type  application/octet-stream;
    
    # 定义日志的格式
    log_format  main  '$remote_addr-$http_host - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    # 定义日志的路径
    access_log  /var/log/nginx/access.log  main;
    
    # 高效读取文件
    sendfile        on;
    #tcp_nopush     on;
   
    # 长链接超时时间
    keepalive_timeout  65;
    
    # 设置gzip压缩
    #gzip  on;
    
    # 加载其他配置文件
    include /etc/nginx/conf.d/*.conf;
}

14.重启或启动Nginx

systemctl restart nginx

15.配置防火墙规则

只有内网可访问

yum install iptables-services -y
systemctl start iptables
iptables -F
iptables -t filter -A INPUT -p ALL -s 172.16.1.0/20 -j ACCEPT
iptables -t filter -A INPUT -p ALL -j DROP

4、lb01配置

全栈https参考:

/etc/nginx/conf.d/blog.conf

upstream blog {
    server 172.16.1.7;
    server 172.16.1.8;
    server 172.16.1.9;
}

server {
    listen 80;
    server_name blog.com;
    return 302 https://blog.com;
}

server {
    server_name blog.com;
    listen 443 ssl;
    ssl_certificate /etc/nginx/ssl_key/server.crt;
    ssl_certificate_key /etc/nginx/ssl_key/server.key; 
   
    location / {
      proxy_pass http://blog;
      include proxy_params;      
    
     }
}

5、windows的hosts文件配置

192.168.15.5 blog.com

 

 

 

6、测试

https://blog.com/

 

 

posted @ 2021-11-05 21:59  甜甜de微笑  阅读(58)  评论(0编辑  收藏  举报