目 录CONTENT

文章目录

Python项目案例

vanegoo
2024-04-25 / 0 评论 / 0 点赞 / 10 阅读 / 0 字

Python的WEB框架

  • Django(组件最全、最强大的框架,主要用于后端服务管理、运维)

    • 例如后台

  • Flask(小巧的、灵活的框架、可以快速开发API接口)

    • 例如网站

  • Tornado(基于单线程的框架实现非阻塞的网络框架)

    • 例如在线客服系统

素材下载,提取码:ybwp

x项目文件准备、Django框架安装

# 上传Django案例代码
[root@demo ~]# mkdir pyproject
[root@demo ~]# cd pyproject/
[root@demo pyproject]# ls learning_logs.zip
learning_logs.zip
[root@demo pyproject]# 
# 创建并激活虚拟环境pyenv
[root@demo pyproject]# ls
learning_logs.zip
[root@demo pyproject]# python3 -m venv pyenv          #创建pyenv虚拟环境
[root@demo pyproject]# ls
learning_logs.zip  pyenv
[root@demo pyproject]# source pyenv/bin/activate      #激活pyenv虚拟环境
(pyenv) [root@demo pyproject]# python3 -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple/                   #更新pyenv虚拟环境中pip版本

(pyenv) [root@demo pyproject]# python3 -m pip --version
pip 21.3.1 from /root/pyproject/pyenv/lib64/python3.6/site-packages/pip (python 3.6)
# 解压项目代码
(pyenv) [root@demo pyproject]# unzip learning_logs.zip    #解压项目代码
(pyenv) [root@demo pyproject]# ls
learning_logs  learning_logs.zip  pyenv
(pyenv) [root@demo pyproject]# cd learning_logs/          #切入项目目录
(pyenv) [root@demo learning_logs]# ls
learning_log  learning_logs  manage.py  requirement.txt  users
# 安装项目相关模块
(pyenv) [root@demo learning_logs]# python3 -m pip install -r requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
(pyenv) [root@demo learning_logs]# python3 -m pip list
Package           Version
----------------- -------
Django            1.11.8
django-bootstrap3 11.0.0
pip               21.3.1
pytz              2022.6
setuptools        39.2.0
(pyenv) [root@demo learning_logs]# 

Django项目即时运行

#创建数据库和表
(pyenv) [root@demo learning_logs]# ls manage.py 
manage.py                   #项目管理文件
(pyenv) [root@demo learning_logs]# ls learning_log/settings.py 
learning_log/settings.py    #项目配置文件
(pyenv) [root@demo learning_logs]# ls
learning_log  learning_logs  manage.py  requirement.txt  users
(pyenv) [root@demo learning_logs]# python3 manage.py migrate  #调用learning_logs/models.py文件创建数据库
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, learning_logs, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying learning_logs.0001_initial... OK
  Applying learning_logs.0002_entry... OK
  Applying learning_logs.0003_topic_owner... OK
  Applying sessions.0001_initial... OK
(pyenv) [root@demo learning_logs]# ls
db.sqlite3  learning_log  learning_logs  manage.py  requirement.txt  users
(pyenv) [root@demo learning_logs]# 
​
#即时运行Django项目(前台进程,占用终端)
(pyenv) [root@demo learning_logs]# python3 manage.py runserver 0.0.0.0:8000
Performing system checks...
​
System check identified no issues (0 silenced).
July 02, 2023 - 21:31:23
Django version 1.11.8, using settings 'learning_log.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

uWSGI案例

uWSGI安装

#安装依赖包
(pyenv) [root@demo learning_logs]# yum -y install gcc python36-devel
#使用pip工具安装uWSGI
(pyenv) [root@demo learning_logs]# python3 -m pip install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple/
#确认uWSGI安装成功
(pyenv) [root@demo learning_logs]# python3 -m pip list | grep -i uwsgi
uWSGI             2.0.21
(pyenv) [root@demo learning_logs]# uwsgi --version
2.0.21
(pyenv) [root@demo learning_logs]# 

uWSGI测试

#编写uWSGI测试页面
(pyenv) [root@demo learning_logs]# vim testuWSGI.py
(pyenv) [root@demo learning_logs]# cat testuWSGI.py 
def application(env, res):
    res = ('200 OK', [('Content-Type','text/html')])
    return  [b'hello world\n']
#启动uWSGI测试程序
(pyenv) [root@demo learning_logs]# uwsgi --http 127.0.0.1:8001 --wsgi-file testuWSGI.py &
[1] 358449
(pyenv) [root@demo learning_logs]#
(pyenv) [root@demo learning_logs]# ss -antpul | grep 8001
tcp   LISTEN 0      100        127.0.0.1:8001       0.0.0.0:*    users:(("uwsgi",pid=358450,fd=7),("uwsgi",pid=358449,fd=7))  
(pyenv) [root@demo learning_logs]# 
#访问uWSGI运行效果
(pyenv) [root@demo learning_logs]# curl http://localhost:8001/
hello world
[pid: 358449|app: 0|req: 1/1] 127.0.0.1 () {28 vars in 292 bytes} [Sun Jul  2 21:56:10 2023] GET / => generated 12 bytes in 0 msecs (HTTP/1.1 500) 0 headers in 0 bytes (1 switches on core 0)
(pyenv) [root@demo learning_logs]#
#清理uWSGI测试页面
(pyenv) [root@demo learning_logs]# ss -antpul | grep :8001
tcp   LISTEN 0      100        127.0.0.1:8001       0.0.0.0:*    users:(("uwsgi",pid=358450,fd=7),("uwsgi",pid=358449,fd=7))  
(pyenv) [root@demo learning_logs]# kill -9 358449         #杀较小的pid号(父进程号)
(pyenv) [root@demo learning_logs]# ss -antpul | grep :8001
(pyenv) [root@demo learning_logs]# rm -rf testuWSGI.py 

使用uWSGi运行Django项目

配置uWSGI

#编写uWSGI运行项目配置文件
(pyenv) [root@demo learning_logs]# ls
db.sqlite3  learning_log  learning_logs  manage.py  requirement.txt  users
(pyenv) [root@demo learning_logs]# vim logs.ini
(pyenv) [root@demo learning_logs]# cat logs.ini 
[uwsgi]
http=0.0.0.0:8000                                               #监听网络及端口
chdir=/root/pyproject/learning_logs/                            #项目根目录,managr.py所在目录
wsgi-file=/root/pyproject/learning_logs/learning_log/wsgi.py    #wsgi文件,settings.py平级别
vacuum=True                         #自动移除pid文件
daemonize=/var/log/logs.log         #后台运行服务且日志记录到指定文件
pidfile=/var/run/logs.pid           #pid文件存储位置

测试uWSGI运行Django项目

(pyenv) [root@demo learning_logs]# uwsgi --ini logs.ini       #启动uWSGI服务
[uWSGI] getting INI configuration from logs.ini
(pyenv) [root@demo learning_logs]# ss -antpul | grep uwsgi    #确认8000端口监听
tcp   LISTEN 0      100        127.0.0.1:37373      0.0.0.0:*    users:(("uwsgi",pid=361623,fd=6))                            
tcp   LISTEN 0      100          0.0.0.0:8000       0.0.0.0:*    users:(("uwsgi",pid=361624,fd=7),("uwsgi",pid=361623,fd=7))  
(pyenv) [root@demo learning_logs]# pstree -p | grep uwsgi
           `-uwsgi(361623)---uwsgi(361624)
(pyenv) [root@demo learning_logs]# 

浏览器访问测试

#停止uWSGI服务
(pyenv) [root@demo learning_logs]# uwsgi --stop /var/run/logs.pid 
(pyenv) [root@demo learning_logs]# ss -antpul | grep 8000
(pyenv) [root@demo learning_logs]# 

0

评论区