如何运行Django的网站使用Apache,mod_wsgi的,和MySQL在FreeBSD 10.1

介绍

本文介绍如何使用Django(流行的Python框架)部署Web应用程序。 使用流行的Web框架开发的美妙之处在于,已经为您完成了大量重复的工作,因此您可以专注于构建您的网站。

无论你是开发人员还是不开发人员,都很高兴知道你在Droplet上运行的核心已经经历了一个大型开源社区的审查,并且不应该受到大型安全漏洞的影响。

有一件事本来就不简单,就是知道如何让这些Web框架在你自己的开发或测试环境之外运行。 在本文中,我们将向您展示如何使用在FreeBSD 10.1上运行的标准Apache,mod_wsgi和MySQL。

目标

  • 为您的Django站点安装和配置Python虚拟环境
  • 创建和配置一个示例Django站点以进行测试
  • 配置一个简单安全的MySQL服务器
  • 配置将为您的Django站点提供服务的简单Apache虚拟主机
  • 测试新制作的网站是否正常工作

先决条件

在开始本指南之前,您需要具备以下条件:

  • 一个FreeBSD 10.1 Droplet
  • 访问您的root帐户或使用sudo权限下此帐户教程
  • 有关如何从命令行编辑文本文件的工作知识
  • Bash shell环境,因为我们将稍后使用VIRTUALENV在本教程。 按照中的说明更改默认外壳如何获取在FreeBSD 10.1教程开始部分。 您可能需要注销并重新登录,以获得Bash shell中为你的FreeBSD用户

第1步 - 安装和配置Python虚拟环境

第一件事; 确保当前包是最新的。

sudo pkg update && sudo pkg upgrade -y

现在,通过运行以下命令并对结果提示说出“是”,安装所需的所有软件包。 你会发现,远远超过安装的是什么类型的,我们作为pkg系统计算,并选择所有正确的依赖关系。

sudo pkg install bash ap24-mod_wsgi3 py27-virtualenv mysql56-server

virtualenv你会很快使用命令不能用默认的用户起到很好tcsh在FreeBSD的外壳。 我们需要bash代替。 如果你来自Linux环境,你会觉得在家里。 如果您没有在先决条件已经这样做了,请按照指示在这里了。

你运行的Bash shell现在?记得注销并重新登录。 大!

现在让我们开始我们的Python环境。

为了方便查找,请通过发出此命令为您的网站创建一个目录。

sudo mkdir -p /www/data/www.example.com

为您的用户帐户提供在新项目目录中工作的访问权限。 whoami命令的部分会自动填写您的当前用户名。

sudo chown -R `whoami` /www/data/www.example.com

更改为新创建的目录。

cd /www/data/www.example.com

使用每个站点或每个应用程序虚拟环境允许定制您安装的Python包和版本,而不是在系统级别安装。

现在创建使用python的虚拟环境virtualenv工具。

virtualenv venv

激活该环境,以确保您在该环境中为Django站点安装要求,而不是在系统级别。

source venv/bin/activate

你会知道你在合适的环境是当你看到你的命令提示符前缀为(venv)

如果一切顺利,确保Python的工具是最新的完成这一步。

pip install -U setuptools pip

第2步 - 创建和配置Django站点示例

现在,您可以创建Django网站的开头。 你将首先安装运行网站所需的python需求。 请确保你仍然在/www/data/ www.example.com目录和虚拟环境。

pip install django mysql-python

安装Python的Django和MySQL的支持,它的时间来创建一个使用Django的项目布局django-admin工具。

django-admin.py startproject mysite .

使用您喜欢的编辑器打开mysite/settings.py文件。

vi /www/data/www.example.com/mysite/settings.py

更改DATABASES部分看起来像这样。 请确保您更换password的东西更安全。

/www/data/www.example.com/mysite/settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysite',
        'USER': 'mysite',
        'PASSWORD': 'password',
        'HOST': '/tmp/mysql.sock',
    }

保存更改。

第3步 - 配置简单安全的MySQL服务器

你已经安装了MySQL,所以现在只需要配置。

首先,一点家务。 打开/etc/rc.conf文件进行编辑。

sudo vi /etc/rc.conf

将这两行添加到文件的底部。 这确保MySQL和Apache将在服务器启动时启动。

/etc/rc.conf
mysql_enable="YES"
apache24_enable="YES"

我们还没有配置Apache,但现在更容易添加这两行,所以你不要忘记。

启动MySQL服务器实例。

sudo service mysql-server start

运行此命令以保护数据库服务器。

mysql_secure_installation

阅读所有提示(对于你自己的知识),并回答Y所有除密码选择。 对于密码提示,请设置MySQL的root密码的东西安全。

使用您刚刚设置的密码登录到新的合理安全的MySQL实例。

mysql -u root -p

执行此命令创建示例站点数据库,名为mysite的

create database mysite character set utf8;

现在,使用此命令创建的mysite数据库用户,并授予其权限,以您刚才创建的数据库。 确保password匹配你的设置settings.py文件更早。 事实上,你可以改变数据库名和用户名,如果你想的话; 只需确保您创建的数据库和用户与Python配置文件中的设置相匹配。

grant all privileges on mysite.* to 'mysite'@'localhost' identified by 'password';

如果没有看到任何错误,可以退出MySQL shell,如下所示:

quit

现在,数据库已准备就绪,将使用Django的manage.py工具与样品网站的初始数据来填充它。 同样,这必须从该网站的目录做了, /www/data/ www.example.com

./manage.py migrate

(可选)第4步 - 测试新的Django应用程序

在我们进一步之前,让我们确保示例Django网站是正常工作的。

启动Django开发服务器,允许它监听你的Droplet的公共网络接口。

./manage.py runserver 0.0.0.0:8000

在您的DigitalOcean Droplet面板中,找到您的Droplet的外部IP地址。 现在,在你的浏览器访问http://<your ip here>:8000 您应该看到一个新的Django安装的默认页面。

你按下这是非常重要 CTRL+C键盘退出Django开发服务器上,因为它不是在生产中使用。

安全注意事项

在运行任何网站时,有很多关于安全性和最佳做法的信息。 要在生产环境中运行真实的东西,强烈建议您进一步阅读如何正确保护面向公众的Web服务器和数据库服务器。

有了公共服务公告出来,是时候配置Apache来为我们的Django网站服务。

第5步 - 为您的Django站点配置一个简单的Apache虚拟主机

使用您喜欢的编辑器,创建和编辑/usr/local/etc/apache24/Includes/httpd.conf文件:

sudo vi /usr/local/etc/apache24/Includes/httpd.conf

添加所有以下配置设置以创建虚拟主机。 请更换www.example.com与您的网站的名字,以匹配我们先前创建的目录。

/usr/local/etc/apache24/Includes/httpd.conf
# Settings
ServerName mysite

## Default Overrides
ServerSignature Off
ServerTokens Prod
Timeout 30

## Virtual Hosts
<VirtualHost *:80>

    WSGIDaemonProcess mysite python-path=/www/data/www.example.com:/www/data/www.example.com/venv/lib/python2.7/site-packages/
    WSGIProcessGroup mysite
    WSGIScriptAlias / /www/data/www.example.com/mysite/wsgi.py

    <Directory /www/data/www.example.com/mysite>
        <Files wsgi.py>
        Require all granted
        </Files>
    </Directory>

</VirtualHost>

在这里,我们只是告诉Apache将设置一对夫妇的健全的默认配置选项以及在使用Apache的找到Python代码来启动Django的网站mod_wsgi模块。 这篇文章有关于Apache虚拟主机细节的更高级别的,如果你想阅读更多。

启动Apache Web服务器。

sudo service apache24 restart

测试示例Django站点

您现在应该能够访问http:// your_server_ip从浏览器中看到默认的Django的页面。 如果您已设置DNS,则还可以使用您的域。

结论

正如你所看到的,有很多要学习部署即使是最简单的网站和应用程序的主题。 下一步是部署您的自定义应用程序,而不是我们在教程中使用的演示应用程序。

如果您有任何问题或意见,请将其留在下面。

推荐阅读

以下链接可以帮助您了解有关构建和部署简单的Django网站的详情。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏