Linux 学习(三)

200 阅读5分钟

Liunx 操作三

稀土掘金更好的讲解

  • web 服务器

    • 当前我们的web 服务器市场上常用的就是三个

    • apache IIS Nginx Tengine 开源免费

      • apache 是世界上的开源的老牌的 web服务器,可以实现的几乎所有的计算机平台上都可以实现运行
      • IIS 是由微软实现的打造,就是我们的 windows 系统组件的一部分
      • Nginx 主要应用于高并发网站,静态服务器,下载服务器,支持我们的反向代理
      • Tengine 是淘宝团队基于 Nginx 实现的修改
    • 实现部署项目就是为了不同的客户机可以实现访问到服务,而不是只能在 localhost或者 127.0.0.1 才可是实现访问

  • Nginx服务器 和 python的uWSGI 的关系

    • uwsgi 这个就是一个web服务器,实现了我们的WSGI 的协议,这个服务器的作用就是为了实现我们的服务器协议直接的转换

      • WSGI 就是一个通讯协议,就是为了python 语言定义的web服务器和web应用程序和框架之间的简单通用的接口,描述的就是我们的 web服务器和web应用之间是如何实现的 程序之间的通讯的协议
      • UWSGI 是一种线路协议,常用于 UWSGI服务器和其他网络服务器之间的数据通讯
    • Nginx

      • Ngnix 是具备了优秀的静态内容的处理能力,然后实现将我们的动态内容实现转发给 UWSGI 服务器,这样可以实现很好的客户端响应

image-20241019204327799.png

项目实现部署前的准备工作

  • 首先需要的是把 setting.py 中的调试开关实现关闭

    • DEBUG = False
    • ALLOWED_HOSTS = ['*', ] 实现的是允许我们的主机进行访问
  • 然后实现准备我们的 liunx 中的python 环境,以及项目所需要的第三方库,这个就是为什么我们进行开发一个项目的时候

    • 为什么都是使用的我们的 虚拟环境,因为每一个虚拟环境之间是相互独立的,一开启项目后,第三方库都需要实现我们的独立的下载

    • 如何实现创建 python 虚拟环境

      • mkvirtualenv 虚拟环境名 -p python3 注意我们的 python3 就是我们的python 的版本号
      • 首先更新虚拟机自带的python 的版本的号的方式: sudo apt-get install python版本号 | sudo apt-get update
      • 执行了这个命令后,那么就会实现我们的自动进入这个环境中 mkvirtualenv Python_BBS -p python3
      • 如果说没有实现进入我们的这个环境中,那么我们可以实现操作就是 workon 虚拟环境名
      • 实现退出 python 环境就是使用命令 deactivate
      • ls ~/.virtualenvs 查看拥有的 python 环境
    • 然后实现我们的准备该项目需要使用的第三方库

      • pymysql
      • pillow
      • Beautifulsoup4
      • mysqlclient
      • django==2.2.12
    • 然后实现将项目的迁移记录实现删除,然后将整个项目实现传送到 liunx 系统中

      • 就是实现删除是我们的 migration 文件夹
      • 然后的就是设置数据库的密码为我们虚拟机的数据库密码,然后实现在虚拟机上实现创建对应的数据库
      • 最后就是实现的是将我们的整个项目实现传输到虚拟机中即可
    • 然后就是实现的是我们的迁移数据库

      • 创建一个同名的数据库
      • 然后实现我们的数据库的迁移,首先实现我们的数据库库迁移的操作必须在 manage.py 的目录中实现操作
      • 先进行初步的操作 python manage.py makemigrations
      • 然后实现操作 python manage.py migrate

开始实现部署项目

实现部署项目的时候,我们需要进行部署的是两个部分

一个部分是我们的 uWSGI 服务器,一个就是我们的 nginx服务器

  • uWSGI 服务器安装以及配置

    • pip install uwsgi

    • 然后开始我们的 uwsgi 服务器的配置

      • 首先需要的是在项目的目录下面创建一个 delop 文件夹

        然后再创建一个 logs 目录,这个是用来实现的是将我们的报错信息实现存储在这个里面

        同时配置一个 uwsgi_conf.ini 文件

      • # 开始实现配置我们的 uwsgi 的配置文件
        # 使用 nginx 链接的时候,django 程序实现连接的服务器地址就是当前的 linux 系统 ip地址
        [uwsgi]
        socket = 192.168.183.128: 8001# 开始实现配置项目根目录
        chdir = /juwenzhang@juwenzhang-virtual-machine:~/桌面/python_bbs
        ​
        # 然后配置 uwsgi 文件的相对路径
        wsgi-file = python_bbs/wsgi.py
        ​
        # 进程数
        processes = 10# 线程数
        threads = 5# 服务器角色
        master = true# 存放进程比编号文件——自动创建
        pidfile = uwsgi.pid
        ​
        # 日志文件——自动创建
        daemonize = logs/uwsgi.log
        
    • 然后就是实现启动我们的 uwsgi 服务

      • uwsgi --ini uwsgi_conf.ini &
      • 实现停止服务的命令是: uwsgi --stop uwsgi.pid
      • 实现重启服务的命令是:uwsgi --reload uwsgi.pid
      • 查看服务器运行状态: ps aux | grep uwsgi.pid
  • nginx 服务器的配置

    • sudo apt-get install nginx
    • 然后在 delop 文件下面创建一个 nginx_conf.conf
    • linux 系统查看文件的绝对路径方法: pwd
    • 然后再将这个文件实现移动到 nginx 服务器所在的文件夹
    • sudo mv nginx_conf.conf /etc/nginx/conf.d

      upstream python_bbs {
          # 开始书写我们的 ip 地址
          server 192.168.183.128;
      }
      ​
      server {
          # 实现监听端口号
          listen 8001;
      ​
          # 服务器域名或者 ip地址,就是我们的到时候浏览器实现搜搜索的地址
          server_name 192.168.183.128;
      ​
          # 编码格式
          charset utf-8;
      ​
          # 文件上传最大大小
          client_max_body_size 100M;
      ​
          # 媒体文件
          location /media {
              # 绝对路径
              alias /home/juwenzhang/桌面/python_bbs/media;
          }
      ​
          # 静态文件
          location /static {
              alias /home/juwenzhang/桌面/python_bbs/static;
          }
      ​
          # 主目录的配置
          location / {
              uwsgi_pass python_bbs;
              include /etc/nginx/uwsgi_params;
          }
      }
      
    • 然后配置 nginx 服务器的文件夹下的 nginx.conf中的第一句 ,将我们 www.data 改为 自己的名称 : juwenzhang
  • 然后实现测试配置是否正确

    • sudo nginx -t -c /etc/nginx/nginx.conf
  • 实现启动 nginx 服务器

    • sudo systemctl start nginx
  • 关闭 nginx 服务器

    • sudo systemctl stopnginx
  • 查看 nginx 服务器的运行状态

    • sudo systemctl status nginx