部署Django搭建的博客网站

2016年1月25日 | 标签: Python, Bootstrap, Django, Apache

本网站是利用Python框架Django和Bootstrap搭建起来的,因为对云服务器不是很了解,也不知道具体怎么部署,走了挺多弯路,记录下部署的过程希望对他人提供一些帮助。

本网站源码已放在github

我选择的是亚马逊的服务器(免费一年哈,不用白不用),系统用的是ubuntu 14.04,Python版本是2.7

配置Python网站环境


创建实例和连接实例请参考亚马逊的官方教程

服务器连接成功后,你需要执行以下命令,把相关工具更新一下

sudo apt-get update
sudo apt-get install python-pip apache2 libapache2-mod-wsgi

接着配置一个Python的虚拟环境,需要安装virtualenv命令

sudo pip install virtualenv

创建网站的目录并进入

mkdir ~/myproject
cd ~/myproject

然后创建虚拟环境

virtualenv myprojectenv

执行后会在myproject目录下创建一个叫myprojectenv的目录,这里包含了Python和pip,我们可以用来创建和配置项目需要的一个独立环境

接着我们来激活这个虚拟环境

source myprojectenv/bin/activate

执行后命令行提示变成这样,如下

(myprojectenv) ubuntu@ip-hostip:~/myproject$

好了之后安装django框架

pip install django

接着把网站代码放到服务器上,目录结构如下

ubuntu@ip-172-31-23-175:~/myproject$ ls
db.sqlite3  manage.py  myprojectenv  mysite  qblog

然后安装项目所需的工具

pip install django-markdown
pip install pytz

安装完成之后,修改项目的设置文件settings.py

sudo vi mysite/settings.py

在最底下加一行

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

django就是利用STATIC_ROOT来决定静态文件路径的

然后我们可以利用collectstatic命令把所有的静态内容都聚在一块,执行完成后会在当前目录创建一个叫static的目录

./manage.py collectstatic

接着把项目跑起来

./manage.py runserver 0.0.0.0:8000

现在,你可以使用本地浏览器访问了,如图

(由于截图是在测试的时候截得,所以您应该看到的是显示博客内容才是)

IP地址为公有ip ,如果8000端口没有打开,可以在亚马逊服务器控制面板安全组里边自定义规则打开8000端口,重启服务器

但是这个并不是我们的最终结果,我们需要输入域名就可以访问博客,接下来我们来配置Apache(在此之前我们需要把域名绑定到服务器ip,请自行完成)

配置Apache


先取消虚拟环境

deactivate

修改Apache文件

sudo vi /etc/apache2/sites-available/000-default.conf

增加内容如下

<VirtualHost *:80>
    . . .

     Alias /static /home/ubuntu/myproject/static
        <Directory /home/ubuntu/myproject/static>
              Require all granted
       </Directory>

        <Directory /home/ubuntu/myproject/mysite>
               <Files wsgi.py>
                        Require all granted
               </Files>
        </Directory>

        WSGIDaemonProcess myproject python-path=/home/ubuntu/myproject:/home/ubuntu/myproject/myprojectenv/lib/python2.7/site-packages
        WSGIProcessGroup myproject
        WSGIScriptAlias / /home/ubuntu/myproject/mysite/wsgi.py

</VirtualHost>

保存修改后修改相关文件的访问权限

chmod 664 ~/myproject/db.sqlite3
sudo chown :www-data ~/myproject/db.sqlite3
sudo chown :www-data ~/myproject

最后您需要修改settings.py 内容如下:

DEBUG = False
ALLOWED_HOSTS = [www.codepai.com]#替换成您自己的域名

保存修改后重启Apache服务器

sudo service apache2 restart

这个时候直接访问您的域名就可以看到

这样项目就部署好了