要在PHP中调用 Python 脚本执行的结果,可以用 system(),exec()和 passthru() 函数。但是这些外部调用的方式容易造成系统安全问题。解决方案之一是使用 Python 创建一个Web 服务端,PHP 通过 Get 或 Post 来和服务端进行数据交互。
Django是老牌的强大的应用广泛的 Web 框架。
以搬瓦工的服务器为例。
一、安装Centos8
二、安装 Python3
1、下载压缩包
yum install wget wget https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz
2、YUM 安装编译 Python 所需要的开发包
yum -y install gcc zlib* libffi-devel
3、解压 Python-3.8.3.tgz 文件
tar -zxvf Python-3.8.3.tgz
4、进入 Python-3.8.3 目录
cd Python-3.8.3/
5、编译
./configure --prefix=/usr/local/bin/python3 make make install
6、查看系统默认 Python 的版本号
python3 -V
7、删除原来的默认的版本链接(如果有)
rm -rf /usr/bin/python3
8、加入环境变量,这样就可以在任意地方执行
ln -s /usr/local/bin/python3/bin/python3 /usr/bin/python3 #后面某些步骤貌似必须python来执行命令 #ln -s /usr/local/bin/python3/bin/python3 /usr/bin/python
三、Django 安装
一般情况下 安装了python 就有 自动安装了 pip 模块。
ln -s /usr/local/bin/python3/bin/pip3 /usr/bin/pip3
pip3 install Django
四、Django实例
ln -s /usr/local/bin/python3/lib/python3.8/site-packages/django/bin/django-admin.py /usr/local/bin/django-admin
找个目录执行
django-admin startproject HelloWorld
此时会自动创建一个工程目录和相关文件
接下来我们进入 HelloWorld 目录输入以下命令,启动服务器:
python3 manage.py runserver 0.0.0.0:8000
这样就可以直接通过 8000 端口来访问了,但是想在是默认页面,我们需要来自己实现一些功能。
在先前创建的 HelloWorld 目录下的 HelloWorld 目录新建一个 views.py 文件,并输入代码:
HelloWorld/HelloWorld/views.py 文件代码:
from django.http import HttpResponse def hello(request): return HttpResponse("Hello world ! ")
接着,绑定 URL 与视图函数。打开 urls.py 文件,删除原来代码,将以下代码复制粘贴到 urls.py 文件中:
HelloWorld/HelloWorld/urls.py 文件代码:
from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.hello), ]
通过浏览器打开 http://127.0.0.1:8000
整个目录结构如下:
$ tree . |-- HelloWorld | |-- __init__.py | |-- __init__.pyc | |-- settings.py | |-- settings.pyc | |-- urls.py # url 配置 | |-- urls.pyc | |-- views.py # 添加的视图文件 | |-- views.pyc # 编译后的视图文件 | |-- wsgi.py | `-- wsgi.pyc `-- manage.py
我们也可以修改以下规则:
HelloWorld/HelloWorld/urls.py 文件代码:
from django.urls import path from . import views urlpatterns = [ path('hello/', views.hello), ]
通过浏览器打开 http://127.0.0.1:8000/hello
如果要使用外网IP访问,决办法是:在Django项目下的settings.py里面修改
ALLOWED_HOSTS=['*'] *代表允许所有的主机
修改下views.py的代码,使其能接收 Get 参数。
from django.http import HttpResponse import requests def testf(e): url = e + '黑鸟博客' return url def hello(request): request.encoding='utf-8' if 'id' in request.GET and request.GET['id']: message = request.GET['id'] else: message = 'www.guihet.com' rid = message real_url = testf(rid) return HttpResponse(real_url)
这样就可以通过 http://127.0.0.1:8000/?id=test 来处理数据。
五、Django项目后台不挂断运行
0、安装epel(搬瓦工Centos8必须)
yum install epel-release
1、安装screen
yum install -y screen
2、新建一个screen
screen -S xiedi
这样会新开一个窗口,然后执行命令即可
python manage.py runserver 0.0.0.0:8000
3、重开一个窗口,列出所有screen进程,如下
[root@docker ~]# screen -ls There are screens on: 3029.xiedi (Attached)
4、如果想链接上这个会话,执行命令即可
screen -r 3029
哈哈哈太好了
我也打算学学python
路过,现在看这些有点头大,虽然对编程确实很感兴趣,喜欢折腾的话,乐趣还是挺多的。
想问一下想学习python处理表格数据,需要度长时间能学完
又不专业搞这个,用到哪里学到哪里就可以,两周应该就有成果,上吧。