介绍
本文将引导您通过使用Python 3,MySQL和Apache2的服务器设置,而无需框架的帮助。
Django通常是Python的一站式服务;它与几乎所有Python版本兼容,配备了自定义服务器,甚至提供了一个单击安装的数据库。
本教程只使用包安装程序,即apt-get和Pip。 _Package installers_只是小程序,使代码安装更方便和易于管理。
前提条件
要遵循本教程,您将需要:
- One Ubuntu 14.04 Droplet.
- 一个 sudo 非 root 用户,您可以通过遵循 此教程来设置。
步骤 1 - 使 Python 3 成为默认
在此步骤中,我们将 Python 3 设置为我们的python
命令的默认值。
首先,检查当前的Python版本。
1python --version
在新的Ubuntu 14.04服务器上,这将输出:
1Python 2.7.6
我们希望有python
运行Python 3,所以首先,让我们删除旧的2.7二进制。
1sudo rm /usr/bin/python
接下来,创建一个符号链接到Python 3二进制。
1sudo ln -s /usr/bin/python3 /usr/bin/python
如果您再次运行python --version
,您现在将看到Python 3.4.0
。
第2步:安装PIP
在本节中,我们将安装Pip,这是Python推荐的包安装程序。
首先,更新系统的包索引,以确保旧或过时的包不会干扰安装。
1sudo apt-get update
Pip 允许我们轻松地管理我们想要的任何 Python 3 软件包。
1sudo apt-get install python3-pip
對於Pip的概述,您可以閱讀 本教程。
步骤三:安装MySQL
在本节中,我们将安装和配置MySQL。
安装 SQL 很简单:
1sudo apt-get install mysql-server
当被提示时,输入 MySQL 根用户的强有力的密码,并记住它,因为我们以后会需要它。
MySQL 服务器将在安装完成后启动:
1mysql_secure_installation
此设置将带您通过一系列自我解释的步骤。首先,您需要输入您几分钟前选择的根密码。第一个问题会问您是否想要更改根密码,但因为您刚刚设置,请输入 n. 对于所有其他问题,请按 ENTER来接受默认答案。
然而,Python 3需要一种方法来连接到MySQL,有许多选项,比如MySQLclient,但为了模块的简单性,本教程将使用pymysql
。
1sudo pip3 install pymysql
步骤4:安装Apache 2
在本节中,我们将安装Apache 2,并确保它将Python文件识别为可执行文件。
使用 apt-get 安装 Apache:
1sudo apt-get install apache2
与MySQL一样,Apache服务器将在安装完成后启动。
** 注意**:安装后,多个端口对互联网开放. 请确保查看本教程的结论,以获取安全资源。
我们希望将我们的网站的根目录放置在一个安全的位置. 服务器默认位置为 /var/www/html
. 为了保持惯例,我们将创建一个新的目录用于测试目的,称为 test
,在同一个位置。
1sudo mkdir /var/www/test
最后,我们必须在 Apache 中注册 Python. 首先,我们会禁用多线程。
1sudo a2dismod mpm_event
然后,我们给Apache明确许可执行脚本。
1sudo a2enmod mpm_prefork cgi
接下来,我们修改了实际的Apache配置,明确宣布Python文件为可执行文件,并允许这些可执行文件。
1sudo nano /etc/apache2/sites-enabled/000-default.conf
在第一个行后,添加以下字符,其中写着<VirtualHost *:80\>
。
1<Directory /var/www/test>
2 Options +ExecCGI
3 DirectoryIndex index.py
4</Directory>
5AddHandler cgi-script .py
确保你的<Directory>
区块嵌入在<VirtualHost>
区块中,就像这样。
1[label /etc/apache2/sites-enabled/000-default.conf]
2
3<VirtualHost *:80>
4 <Directory /var/www/test>
5 Options +ExecCGI
6 DirectoryIndex index.py
7 </Directory>
8 AddHandler cgi-script .py
9
10 ...
该目录块允许我们指定Apache如何处理该目录,它告诉Apache /var/www/test
目录包含可执行的文件,将 `index.py 视为默认文件,然后定义可执行的文件。
我们也希望允许在我们的网站目录中执行,所以我们需要更改DocumentRoot
的路径, 寻找读DocumentRoot /var/www/html
的行,在文件顶部的长评论下面几个行,并修改它以读取/var/www/test
。
1DocumentRoot /var/www/test
您的文件现在应该是如下。
1[label /etc/apache2/sites-enabled/000-default.conf]
2
3<VirtualHost *:80>
4 <Directory /var/www/test>
5 Options +ExecCGI
6 DirectoryIndex index.py
7 </Directory>
8 AddHandler cgi-script .py
9
10 ...
11
12 DocumentRoot /var/www/test
13
14 ...
保存和退出文件. 若要执行这些更改,请重新启动 Apache。
1sudo service apache2 restart
** 注意**:Apache 2可能会发出一个警告,说明服务器的完全合格域名;这可以被忽视,因为服务器名称指令目前的应用很少,它们最终用于确定子域托管,在创建必要的记录(https://andsky.com/tech/tutorials/how-to-set-up-a-host-name-with-digitalocean)后。
如果输出的最后一行是[OK]
,那么Apache 已成功重新启动。
步骤五:测试最终产品
在本节中,我们将确认单个组件(Python、MySQL 和 Apache)可以通过创建示例网页和数据库来相互作用。
首先,让我们创建一个数据库. 登录 MySQL. 您需要输入您之前设置的 MySQL 根密码。
1mysql -u root -p
添加一个名为 example的示例数据库。
1CREATE DATABASE example;
转到新数据库。
1USE example;
添加一些示例数据的表,我们将需要Python应用程序添加。
1CREATE TABLE numbers (num INT, word VARCHAR(20));
点击 CTRL+D 来退出. 有关 SQL 的更多背景,您可以阅读此 MySQL 教程。
现在,为我们的简单的Python应用程序创建一个新的文件。
1sudo nano /var/www/test/index.py
复制并粘贴下面的代码. 内行评论描述了代码的每个部分所做的事情. 请确保用您之前选择的 root MySQL 密码替换passwd
值。
1#!/usr/bin/python
2
3# Turn on debug mode.
4import cgitb
5cgitb.enable()
6
7# Print necessary headers.
8print("Content-Type: text/html")
9print()
10
11# Connect to the database.
12import pymysql
13conn = pymysql.connect(
14 db='example',
15 user='root',
16 passwd='your_root_mysql_password',
17 host='localhost')
18c = conn.cursor()
19
20# Insert some example data.
21c.execute("INSERT INTO numbers VALUES (1, 'One!')")
22c.execute("INSERT INTO numbers VALUES (2, 'Two!')")
23c.execute("INSERT INTO numbers VALUES (3, 'Three!')")
24conn.commit()
25
26# Print the contents of the database.
27c.execute("SELECT * FROM numbers")
28print([(r[0], r[1]) for r in c.fetchall()])
保存和退出。
接下来,对新创建的文件修复权限. 有关三位数权限代码的更多信息,请参阅关于 [Linux 权限] 的教程(https://andsky.com/tech/tutorials/linux-permissions-basics-and-how-to-use-umask-on-a-vps)。
1sudo chmod 755 /var/www/test/index.py
现在,通过使用您最喜欢的浏览器访问您的服务器,前往http://your_server_ip
。
1[label http://your_server_ip]
2[(1, 'One!'), (2, 'Two!'), (3, 'Three!')]
恭喜您!您的服务器现在在线。
结论
您现在有一个工作服务器,可以运行 Python 3 使用强大的 SQL 数据库. 该服务器现在也已配置为易于维护,通过经过文件和已建立的包安装程序。
然而,在目前的状态下,服务器对外部用户很容易受到伤害.虽然 SSL 加密对服务器的功能并不重要,但它们对于一个可靠、安全的服务器来说是必不可少的资源。 了解更多有关 如何配置 Apache, 如何创建 Apache SSL 证书和 如何保护您的 Linux 服务器的信息。