安装模块
$ sudo apt-get install libapache2-mod-python
mod-python模块安装后还需要配置apache,使apache能够处理Python文件。有两种方法1)Publisher Handler(默认),让apache可以处理.py为扩展名的纯python脚本,另一种是PSP Handler,可以像asp和php一样在html中嵌入python代码,扩展名是.psp。
虚拟主机的配置,添加以下3行
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On
修改后的虚拟主机配置文件类似如下
[...]
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On
</Directory>
[...]
重启apache服务器
$ sudo /etc/init.d/apache2 restart
创建测试页
$ sudo nano /var/www/test.py
测试页内容
def index(req):
return "Hello World";
虚拟主机的配置,添加以下3行
AddHandler mod_python .psp
PythonHandler mod_python.psp
PythonDebug On
修改后的虚拟主机配置文件类似如下
[...]
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AddHandler mod_python .psp
PythonHandler mod_python.psp
PythonDebug On
</Directory>
[...]
重启apache服务器
$ sudo /etc/init.d/apache2 restart
创建测试页
$ sudo nano /var/www/test.psp
测试页内容
<html>
<body>
<h1><% req.write("Hello, PSP World") %></h1>
</body>
</html>
Ubuntu提供了一个软件包,python-mysqldb,可以让python轻松支持mysql数据库
安装
$ sudo apt-get install python-mysqldb
创建测试页面
$ sudo nano /var/www/dbtest.py
测试页面内容
#!/usr/bin/python
# 导入数据库模块
import MySQLdb
# 连接数据库
db = MySQLdb.connect(host="localhost",user="username",passwd="password",db="mydb"
)
# 创建一个游标
cursor = db.cursor()
# 执行 SQL 语句
cursor.execute("SELECT name, mail FROM users")
# 获取查询结果(数组)
result = cursor.fetchall()
# 打印查询结果
for record in result:
print record[0] , "-->", record[1]
测试
$ python /var/www/dbtest.py
Hiweed --> [email protected]
Ning --> [email protected]
Guoce --> [email protected]
上面的测试页面不符合CGI规范,在printf前加上以下内容使其遵循CGI规范
print "Content-type:text/html\n"
修改后的测试页面如下
#!/usr/bin/python
import MySQLdb
db = MySQLdb.connect(host="localhost",user="username",passwd="password",db="mydb"
)
cursor = db.cursor()
cursor.execute("SELECT name, mail FROM users")
result = cursor.fetchall()
print "Content-type:text/html\n"
for record in result:
print record[0] , "-->", record[1]
复制到网站目录
$ sudo cp /var/www/dbtest.py /usr/lib/cgi-bin/test/
给予执行权限
$ sudo chmod 755 /usr/lib/cgi-bin/test/dbtest.py
Django本身是一个Python编写的Web应用程序框架;通过Django可以避免很多代码重复编码的开发,快速开发出基于Python的Web应用程序
安装Django
$ sudo apt-get install python-django
在家目录下创建名为mysite的Django项目
$ cd ~
$ django-admin startproject mysite
命令很快完成了,并创建了下面的文件
mysite/
init__.py <-- 该文件告诉Python,此目录是一个Python Package
manage.py <-- 本项目的命令行管理工具
settings.py <-- 本项目的配置文件
urls.py <-- 用以设置URL的对应关系和样式
Django自己带了一个Web服务器,避免开发过程去考虑apache等的配置。创建项目时生成的manage.py即可运行Web服务器。
下面运行manage.py时一定带上ip地址,否则监听在127.0.0.1地址上,其他测试机不能访问
$ cd ~/mysite
$ manage.py runserver 192.168.1.10:8000
Validating models...
0 errors found.
Django version 0.96.1, using settings 'mysite.settings'
Development server is running at http://192.168.1.10:8000/
Quit the server with CONTROL-C.
修改settings.py以连接数据库
DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'mydb'
DATABASE_USER = 'username'
DATABASE_PASSWORD = 'password'
DATABASE_HOST = 'localhost'
配置后让Django进行数据库初始化
$ python manage.py syncdb
查看数据库中的信息
$ mysql -uusername -ppassword mydb
mysql> show tables;
+----------------------------+
| Tables_in_mydb |
+----------------------------+
| auth_group |
| auth_group_permissions |
| auth_message |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_content_type |
| django_session |
| django_site |
| users |
+----------------------------+
11 rows in set (0.00 sec)
文章整理来自于《Ubuntu Server最佳方案》书籍
由于字数限制,笔记可能无法全部上传,请下载笔记