介绍
本文将向您介绍如何使用Python 3,MySQL和Apache2设置服务器,而不需要框架的帮助。 在本教程结束时,您将完全能够将准系统启动到生产环境中。
Django通常是所有Python的一站式停止; 它与几乎所有版本的Python兼容,预先包装了自定义服务器,甚至具有一键安装数据库。 在没有这个强大的工具的情况下设置一个vanilla系统可能很棘手,但从根本上获得了对服务器结构的宝贵的洞察力。
本教程仅使用软件包安装程序,即apt-get和Pip。 软件包的安装只是小程序,使代码的安装更方便,更易于管理。 没有它们,维护库,模块和其他代码位可能会成为一个非常混乱的业务。
先决条件
要遵循本教程,您需要:
- 一个Ubuntu 14.04 Droplet。
- sudo的一个非root用户,您可以通过以下设置本教程 。
第1步 - 使Python 3为默认值
在这一步中,我们将设置Python 3中作为默认我们python
命令。
首先,检查你当前的Python版本。
python --version
在一个新鲜的Ubuntu 14.04服务器上,这将输出:
Python 2.7.6
我们希望有python
运行Python 3。因此,首先,让我们来删除旧的2.7二进制文件。
sudo rm /usr/bin/python
接下来,创建一个指向Python 3二进制文件的符号链接。
sudo ln -s /usr/bin/python3 /usr/bin/python
如果您运行python --version
再次,你将看到Python 3.4.0
。
第2步 - 安装Pip
在本节中,我们将安装Python的推荐软件包安装程序Pip。
首先,更新系统的包索引。 这将确保旧的或过时的包不会干扰安装。
sudo apt-get update
Pip允许我们轻松地管理任何我们想要的Python 3包。 要安装它,只需运行以下命令:
sudo apt-get install python3-pip
画中画的概述,你可以阅读本教程 。
第3步 - 安装MySQL
在本节中,我们将安装和配置MySQL。
安装SQL非常简单:
sudo apt-get install mysql-server
在提示时输入MySQL root用户的强密码,并记住它,因为我们以后会需要它。
一旦安装完成,MySQL服务器将启动。 安装后,运行:
mysql_secure_installation
此设置将带您通过一系列自我说明的步骤。 首先,您需要输入您刚才选择的根密码。 第一个问题会问,如果你想改变root密码,而是因为你刚才设置它,请输入n。 对于所有其他问题,按ENTER键接受默认响应。
Python 3需要一种与MySQL连接的方法。 有许多选择,像的mysql,但是对于模块的简单起见,本教程将使用pymysql
。 使用Pip安装:
sudo pip3 install pymysql
第4步 - 安装Apache 2
在本节中,我们将安装Apache 2,并确保它将Python文件识别为可执行文件。
使用apt-get安装Apache:
sudo apt-get install apache2
像MySQL一样,Apache服务器将在安装完成后启动。
注意 :安装后,几个端口是开放的互联网。 确保看到本教程的结论安全资源。
我们希望将我们网站的根目录放在安全的位置。 该服务器是通过默认/var/www/html
。 为了保持惯例,我们将创建一个用于测试的新目录,名为test
,在相同的位置。
sudo mkdir /var/www/test
最后,我们必须使用Apache注册Python。 首先,我们禁用多线程进程。
sudo a2dismod mpm_event
然后,我们给Apache明确的权限运行脚本。
sudo a2enmod mpm_prefork cgi
接下来,我们修改实际的Apache配置,将Python文件显式声明为runnable文件,并允许这样的可执行文件。 使用nano或您喜欢的文本编辑器打开配置文件。
sudo nano /etc/apache2/sites-enabled/000-default.conf
添加下面的右边的第一行后,其内容<VirtualHost *:80\>
<Directory /var/www/test>
Options +ExecCGI
DirectoryIndex index.py
</Directory>
AddHandler cgi-script .py
请确保您的<Directory>
块嵌套在里面<VirtualHost>
块,像这样。 确保使用制表符正确缩进。
<VirtualHost *:80>
<Directory /var/www/test>
Options +ExecCGI
DirectoryIndex index.py
</Directory>
AddHandler cgi-script .py
...
这个目录块允许我们指定Apache如何处理那个目录。 它告诉Apache的/var/www/test
目录包含可执行文件,认为index.py
是默认的文件,然后定义可执行文件。
我们也希望让我们的网站目录下的可执行文件,所以我们需要改变的路径DocumentRoot
了。 查找读取的行DocumentRoot /var/www/html
,在文件的顶部长注释下面几行,并修改它来读取/var/www/test
来代替。
DocumentRoot /var/www/test
您的文件现在应类似于以下内容。
<VirtualHost *:80>
<Directory /var/www/test>
Options +ExecCGI
DirectoryIndex index.py
</Directory>
AddHandler cgi-script .py
...
DocumentRoot /var/www/test
...
保存并退出文件。 要使这些更改生效,请重新启动Apache。
sudo service apache2 restart
注 :Apache 2的可以抛出它说,关于服务器的完全限定域名警告; 这可以忽略,因为ServerName指令在这一刻有很少的应用程序。 他们最终来确定子托管,后必要的记录被创建。
如果输出的最后一行显示[ OK ]
,Apache已成功重新启动。
第5步 - 测试最终产品
在本节中,我们将通过创建示例网页和数据库来确认各个组件(Python,MySQL和Apache)可以相互交互。
首先,让我们创建一个数据库。 登录MySQL。 您需要输入您之前设置的MySQL root密码。
mysql -u root -p
添加一个名为例如一个例子数据库。
CREATE DATABASE example;
切换到新数据库。
USE example;
为我们将添加Python应用程序的一些示例数据添加一个表。
CREATE TABLE numbers (num INT, word VARCHAR(20));
按CTRL + D退出。 有关SQL的详细背景,你可以阅读这个 。
现在,为我们的简单Python应用程序创建一个新文件。
sudo nano /var/www/test/index.py
复制并粘贴以下代码。内联注释描述代码的每一部分。 确保更换passwd
与您之前选择了MySQL的root密码值。
#!/usr/bin/python
# Turn on debug mode.
import cgitb
cgitb.enable()
# Print necessary headers.
print("Content-Type: text/html")
print()
# Connect to the database.
import pymysql
conn = pymysql.connect(
db='example',
user='root',
passwd='your_root_mysql_password',
host='localhost')
c = conn.cursor()
# Insert some example data.
c.execute("INSERT INTO numbers VALUES (1, 'One!')")
c.execute("INSERT INTO numbers VALUES (2, 'Two!')")
c.execute("INSERT INTO numbers VALUES (3, 'Three!')")
conn.commit()
# Print the contents of the database.
c.execute("SELECT * FROM numbers")
print([(r[0], r[1]) for r in c.fetchall()])
保存并退出。
接下来,修复新创建的文件的权限。 有关三位数权限的代码的详细信息,请参见教程Linux权限 。
sudo chmod 755 /var/www/test/index.py
现在,访问您的服务器通过访问http:// your_server_ip
用你喜欢的浏览器。 您应该看到以下内容:
[(1, 'One!'), (2, 'Two!'), (3, 'Three!')]
恭喜! 您的服务器现已在线。
结论
你现在有一个工作的服务器,可以运行Python 3与一个健壮的SQL数据库。 该服务器现在还配置为便于维护,通过完善的文档和已建立的包安装程序。
然而,在当前状态下,服务器容易受到外部人的攻击。 尽管SSL加密等元素对于您的服务器功能并不重要,但它们是可靠,安全的服务器不可或缺的资源。 通过阅读详细了解如何配置Apache , 如何建立一个Apache SSL证书以及如何保护你的Linux服务器 。