如何在 Ubuntu 14.04 上不使用框架设置 Apache、MySQL 和 Python (LAMP) 服务器

介绍

本文将引导您通过使用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 服务器的信息。

Published At
Categories with 技术
comments powered by Disqus