介绍
本文介绍如何使用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
的东西更安全。
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将在服务器启动时启动。
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
与您的网站的名字,以匹配我们先前创建的目录。
# 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网站的详情。