介绍
本文向您展示了如何使用Django,流行的Python框架部署Web应用程序.开发与流行的Web框架的美好之处在于为您做了很多重复的工作,因此您可以专注于构建您的网站。
无论您是开发人员还是非开发人员,很高兴知道,您在服务器上运行的核心内容都经过了大型开源社区的审查,并且应该不那么容易受到大型安全漏洞的影响。
在本文中,我们将向您展示如何做到这一点,使用标准的Apache、mod_wsgi和MySQL堆栈在FreeBSD 10.1上运行。
<$>[注] 注: 截至 2022 年 7 月 1 日,DigitalOcean 不再支持通过控制面板或 API 创建新的 FreeBSD Droplets。
目标
- 安装和配置您的 Django 网站的 Python 虚拟环境
- 创建和配置测试的样本 Django 网站
- 配置一个简单而安全的 MySQL 服务器
- 配置一个简单的 Apache 虚拟主机来服务您的 Django 网站
- 测试新发明的网站是否正常工作
前提条件
在您开始本指南之前,您将需要以下内容:
- 一个 FreeBSD 10.1 服务器
- 访问您的 root 帐户或使用 sudo 特权的帐户,遵循本教程(https://andsky.com/tech/tutorials/how-to-add-and-remove-users-on-freebsd)
- 如何从命令行 编辑文本文件的工作知识 * 一个 Bash 壳环境,因为我们将在本教程中稍后使用 Virtualenv。 遵循 How To Get Started with FreeBSD 10.1 教程的 Changing the Default Shell部分中的说明。
步骤 1 — 安装和配置Python虚拟环境
首先要做的事情;确保您目前的包裹是最新的。
1sudo pkg update && sudo pkg upgrade -y
现在安装你需要的所有包,运行下面的命令并对结果提示说是。你会注意到比我们输入的更多是安装的,因为pkg
系统计算并选择所有正确的依赖。
1sudo pkg install bash ap24-mod_wsgi3 py27-virtualenv mysql56-server
您将很快使用的virtualenv
命令不会在FreeBSD中的默认用户tcsh
壳中发挥良好作用.我们需要bash
代替。
你现在在运行Bash壳吗? 请记住退出并再次登录。
现在,让我们开始我们的Python环境。
要使事情容易找到,请通过发出此命令为您的网站创建目录。
1sudo mkdir -p /www/data/www.example.com
让您的用户帐户能够在新项目目录中工作,命令的whoami
部分会自动填写您的当前用户名。
1sudo chown -R `whoami` /www/data/www.example.com
更改到您新创建的目录。
1cd /www/data/www.example.com
使用每个网站或每个应用程序的虚拟环境可以定制您安装的Python包和版本,而不是在整个系统层面上安装东西。
现在使用virtualenv
实用程序创建 Python 虚拟环境。
1virtualenv venv
启用此环境,以确保您在该环境中安装 Django 网站的要求,而不是在整个系统层面。
1source venv/bin/activate
你会知道你在正确的环境中,当你看到你的命令提示预先表示(venv)
。
如果一切都看起来顺序,请确保Python的工具是最新的,以完成此步骤。
1pip install -U setuptools pip
步骤 2 — 创建和配置样本 Django 网站
现在你可以创建一个Django网站的开头,你将开始安装运行该网站所需的python要求,确保你仍然处于/www/data/www.example.com
目录和虚拟环境中。
1pip install django mysql-python
安装了 Python 的 Django 和 MySQL 支持,是时候使用 Django 的 Django-admin 实用程序来创建项目布局了。
1django-admin.py startproject mysite .
使用您最喜欢的编辑器,打开mysite/settings.py
文件。
1vi /www/data/www.example.com/mysite/settings.py
更改数据库
部分看起来像这样,请确保您用更安全的东西更换密码
。
1[label /www/data/www.example.com/mysite/settings.py]
2DATABASES = {
3 'default': {
4 'ENGINE': 'django.db.backends.mysql',
5 'NAME': 'mysite',
6 'USER': 'mysite',
7 'PASSWORD': 'password',
8 'HOST': '/tmp/mysql.sock',
9 }
保存你的变化
步骤 3 – 配置一个简单而安全的MySQL服务器
你已经安装了MySQL,所以现在只需要配置。
打开/etc/rc.conf
文件进行编辑。
1sudo vi /etc/rc.conf
将这两个行添加到文件底部,以确保MySQL和Apache在服务器启动时启动。
1[label /etc/rc.conf]
2mysql_enable="YES"
3apache24_enable="YES"
我们还没有配置Apache,但现在更容易添加两行,以便你以后不会忘记。
启动MySQL服务器实例。
1sudo service mysql-server start
运行此命令以保护您的数据库服务器。
1mysql_secure_installation
阅读所有提示(为了自己的知识),并回答Y
除密码选择之外的所有。
登录你的新的和合理安全的MySQL实例,使用你刚刚设置的密码。
1mysql -u root -p
执行此命令创建样本网站数据库,称为 mysite。
1create database mysite character set utf8;
现在使用这个命令来创建 mysite 数据库用户,并向您刚刚创建的数据库授予权限。 确保密码
匹配您之前在 settings.py
文件中设置的内容。 事实上,如果您想要,您也可以更改数据库名称和用户名称; 只需确保您创建的数据库和用户匹配 Python 配置文件中的设置。
1grant all privileges on mysite.* to 'mysite'@'localhost' identified by 'password';
如果您没有看到任何错误,您可以这样退出MySQL壳:
1quit
现在数据库已经准备好了,你将使用Django的manage.py
实用程序来填充你的样本网站的初始数据。
1./manage.py migrate
(可选)步骤 4 – 测试新 Django 应用程序
在我们进一步前,让我们确保样本Django网站处于工作状态。
启动 Django 开发服务器,允许它在您的服务器的公共网络接口上聆听:
1./manage.py runserver 0.0.0.0:8000
接下来,在您的浏览器中访问 http://
您在键盘上按CTRL+C
来离开Django开发服务器非常重要,因为它不用于生产。
关于安全的一条注意事项
要在生产中运行一些真实的东西,建议您对如何正确保护面向公众的 Web 服务器和数据库服务器进行额外的阅读。
有了这个公共服务公告,是时候配置Apache来服务我们的Django网站了。
步骤 5 — 为您的 Django 网站设置一个简单的 Apache 虚拟主机
使用您最喜欢的编辑器创建和编辑 /usr/local/etc/apache24/Includes/httpd.conf
文件:
1sudo vi /usr/local/etc/apache24/Includes/httpd.conf
添加以下所有配置设置来创建您的虚拟主机. 请用您的网站名称更换「www.example.com」以匹配我们之前创建的目录。
1[label /usr/local/etc/apache24/Includes/httpd.conf]
2# Settings
3ServerName mysite
4
5## Default Overrides
6ServerSignature Off
7ServerTokens Prod
8Timeout 30
9
10## Virtual Hosts
11<VirtualHost *:80>
12
13 WSGIDaemonProcess mysite python-path=/www/data/www.example.com:/www/data/www.example.com/venv/lib/python2.7/site-packages/
14 WSGIProcessGroup mysite
15 WSGIScriptAlias / /www/data/www.example.com/mysite/wsgi.py
16
17 <Directory /www/data/www.example.com/mysite>
18 <Files wsgi.py>
19 Require all granted
20 </Files>
21 </Directory>
22
23</VirtualHost>
在这里,你只是告诉Apache设置一些合理的默认配置选项,以及在哪里找到Python代码来使用Apache的mod_wsgi
模块启动Django网站。
启动 Apache Web 服务器。
1sudo service apache24 restart
测试样本Django网站
您现在应该能够从您的浏览器访问 http://your_server_ip
并查看默认的 Django 页面. 如果您已经设置了 DNS,您也可以使用您的域名。
结论
正如你所看到的,在部署即使是最简单的网站和应用程序的主题上还有很多东西要学习,下一步是部署自定义应用程序,而不是我们在教程中使用的演示应用程序。
如果您有任何疑问或评论,请在下方留言。
推荐阅读
以下链接可以帮助您了解更多关于构建和部署一个简单的Django网站。