摘要:站真是个学习的地方,竟发现了杨老师的部署视频,杨老师的站主页在此主页有一系列的学习视频,推荐干货用于部署的项目主要用了提供后台,所以静态文件仅有部分的。接下来是部署和激活阶段了。
吐吐槽
此篇blog将详细记录部署Django的每一个步骤,网上现有的教程实在太少太老了!好多坑!第一次尝试后台很懵,最坑的地方是安装的wsgi部分模块需要更新。B站真是个学习的地方,竟发现了杨老师的部署视频,杨老师的B站主页在此(主页有一系列的django学习视频,推荐干货)
用于部署的项目demo主要用了Django REST framework 提供后台api,所以静态文件仅有Django REST framework部分的。但是部署过程基本是一样的
以下是项目demo的GitHub地址,由于是第一次使用python和后台相关的东西,代码写得可能比较差,此blog主要用于记录部署步骤。
https://github.com/Joeoeoe/my...
考虑一个服务器有多个Django项目,这里使用了virtualenv和mod_wsgi daemon mode(守护进程模式)
过程中的坑点尽量指出
环境腾讯云Ubuntu 16.04.1
tips:根据不同机器或者用户有时会出现权限问题
以下是部署思路
服务器安装基本软件software-properties-common安装
python版本更新
pip安装及更新
MySQL8.0安装
git(传项目,用filezilla等也可以,这里我们用GitHub,另外settings.py不建议放上GitHub,这里仅是做个演示,所以没有分离上传)
virtualenv 安装
tips:这里为了演示django的本地虚拟服务器,暂时先不安装apache2
项目准备从GitHub上clone项目
创建virtualenv虚拟环境,并安装相关依赖
apache2安装
wsgi安装及更新
编写配置文件.conf
激活网站
收集静态文件(这一步当然也可以放在前面)
主要思路以上
一、服务器安装基本软件 1.安装software-properties-common及python更新Ubuntu初始的python版本是2.7和3.5,这里我们要更新成3.6,并更换软链接
先更新
sudo apt-get install software-properties-common //管理软件库 sudo apt-add-repository ppa:jonathonf/python-3.6 //加入python3.6 sudo apt-get update //更新列表 sudo apt-get install python3.6
更改软连接
cd /usr/bin sudo rm python sudo ln -s python3.6 python sudo rm python3 sudo ln -s python3.6 python32.pip安装及更新
sudo apt-get install python3-pip //安装完后是8.1.1,指向python 3.6,pip需要升级 pip3 list //可查看已安装依赖 pip3 install --upgrade pip //升级,升级之后有个很神奇的地方,只能使用pip而不能使用pip3了 //例如输入pip -V或pip3.6 -V会显示18.1版本,而输入pip3 -V会报错。 //但是断开链接重新登录就三个命令都能用了。3.MySQL安装
这里不使用sudo apt-get install mysql-server安装,因为它默认装5.7的版本,这里装MySQL8.0
这是官网apt链接https://dev.mysql.com/downloa...,点击download后进去新的页面右键复制链接地址
把软件包放到/home/ubuntu目录里吧
cd /home/ubuntu wget https://dev.mysql.com/get/mysql-apt-config_0.8.10-1_all.deb //获得软件包,这个链接正是 //复制来的链接
这是下载好的软件包,接下来dpkg,然后选择配置吧
sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb
配置都选8.0,确定完两个配置后最后选ok
更新软件列表并安装MySQL
sudo apt-get update sudo apt-get install mysql-server
接着输入密码,选择加密方式就ok了,这里加密方式我选择第一个
4.git和virtualenv安装sudo apt-get install git pip3 install --user virtualenv二、项目准备
这里步骤都很简单
1.从GitHub上clone项目我们把项目放到/home/ubuntu下
cd /home/ubuntu git clone https://github.com/Joeoeoe/mysite.git2.创建虚拟环境,安装依赖
虚拟环境创建到/home/ubuntu下,取名为mysite_env,并且激活进入虚拟环境
virtualenv mysite_env source mysite_env/bin/activate
显示如下表示我们已进入虚拟环境
通过pip list命令可以看见我们此环境下只有基本依赖
接着安装依赖,这里有一个非常方便的方法,就是使用项目中的**`requirements.txt中
cd /home/ubuntu/mysite pip install -r requirments.txt
pip list之后就可以查看我们已安装的依赖了
ok,接下来进入MySQL创建我们的数据库blog_db
CREATE DATABASE `blog_db` CHARACTER SET utf8 COLLATE utf8_general_ci;
然后到项目目录下完成迁移,并启动虚拟服务器
$python manage.py makemigrations $python manage.py migrate $python manage.py runserver 0.0.0.0:8000
输入你的ip地址加端口号
正常情况下会看到这个页面
这时我们得在settings.py中添加允许的http_host
ALLOWED_HOSTS = ["*"]
要限定host的话自己更改吧
再次启动虚拟环境,访问ip地址加端口号,按我的项目,因为没有首页,所以会显示如下
我有写一个test_view接口进行测试,加上/test_view/,接着会显示Django REST framework的接口界面
ok,到这里没问题的话,多数环境和依赖已经都安装完成了。接下来是部署和激活阶段了。
三、部署激活 1.安装apache2和mod_wsgi安装apache是没什么问题的,这里比较麻烦的是mod_wsgi
sudo apt-get install apache2 sudo apt-get install libapache2-mod-wsgi-py3
安装完这两个后,我们看看坑点在哪里
cd /usr/lib/apache2/modules
到此目录下查看内容,会发现
mod_wsgi.so模块是软链接,并且指向mod_wsgi.so-3.5,这里说实话不清楚是什么原因,如果没有对这个模块进行更新的话,部署时会出错,这时要从mod_wsgi官网下载源代码进行安装,官网下载链接放在文末
//需要安装apache和python对应dev包 sudo apt-get install apache2-dev sudo apt-get install python3.6-dev
寻着mod_wsgi官网到GitHub上找到下载链接
wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.6.5.tar.gz //放到/home/ubuntu目录下后进行解压 tar xvfs 4.6.5.tar.gz cd mod_wsgi-4.6.5/ //这是解压出来的文件
可以看到里面有个.configure脚本,它可以用来进行安装配置,运行此脚本会在系统中寻找apxs或apx和python并提供合适的安装配置,但是由于版本或系统的原因,这里最好手动指定路径
whereis apxs whereis python
这里我apxs的路径为/usr/bin/apxs
python使用的是3.6,所以选择/usr/bin/python3.6
运行.configure脚本,不同地址对应换一下就好了
./configure --with-apxs=/usr/bin/apxs --with-python=/usr/bin/python3.6 make //编译,若安装失败,记得先执行make clean sudo make install
看看mod_wsgi.so有没有更新
ls /usr/lib/apache2/modules/
嗯,现在不是软链接了,接下来编写网站配置文件
cd /etc/apache2/sites-available sudo vim mysite.conf
因为使用了virtualenv和mod_wsgi daemon mode(守护进程模式),所以配置多了一点点
#访问网站以哪个目录开始,第二个参数填写路径 WSGIScriptAlias / /home/ubuntu/mysite/mysite/wsgi.py #开放静态目录 Alias /static/ /home/ubuntu/mysite/static/ Require all granted Require all granted #开放上传文件夹 Alias /media/ /home/ubuntu/mysite/media/Require all granted #以下开始是因为使用了virtualenv部署 #第一个路径是虚拟环境路径,第二个是项目所在路径 WSGIDaemonProcess mysite python-home=/home/ubuntu/mysite_env python-path=/home/ubuntu/mysite #分组 WSGIProcessGroup mysite
保存退出
sudo a2ensite mysite.conf //激活 sudo a2dissite 000-default.conf //关闭自身站点 apache2ctl configtest //检查配置有无问题,有的话自行解决 sudo apache2ctl restart
虽然还没有收集静态文件,但这时已经可以通过公网访问了
接下来做一下收集静态文件的操作就好了
3.静态文件收集settings.py中添加此代码,让静态文件都收集到此目录下
STATIC_ROOT = "/home/ubuntu/mysite/static/"
虚拟环境装了django,虚拟环境下运行命令
python manage.py collectstatic
刷新网页,现在就ok了!完,附参考学习资料
参考资料:杨老师b站Django教程主页:
https://space.bilibili.com/25...
Django静态文件部署
https://docs.djangoproject.co...
apache部署Django
https://docs.djangoproject.co...
mod_wsgi官网快速安装指南
https://modwsgi.readthedocs.i...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/45463.html
摘要:系统安装部署环境教程第一安装依赖环境在准备安装框架部署之前,我们需要先安装依赖环境,因为可能默认的环境没有完善的最新部署包。检查最新版本的数据库,然后部署安装。到目前为止,我们已经成功的在环境中部署了应用程序,以及。 Django,是一款针对Python环境的WEB开发框架,能够帮助我们构架快捷、简单的WEB框架设置,Django框架非常适合开发内容应用环境,所以在本文中,麦子将整理基...
摘要:站真是个学习的地方,竟发现了杨老师的部署视频,杨老师的站主页在此主页有一系列的学习视频,推荐干货用于部署的项目主要用了提供后台,所以静态文件仅有部分的。接下来是部署和激活阶段了。 吐吐槽 此篇blog将详细记录部署Django的每一个步骤,网上现有的教程实在太少太老了!好多坑!第一次尝试后台很懵,最坑的地方是安装的wsgi部分模块需要更新。B站真是个学习的地方,竟发现了杨老师的部署视频...
摘要:站真是个学习的地方,竟发现了杨老师的部署视频,杨老师的站主页在此主页有一系列的学习视频,推荐干货用于部署的项目主要用了提供后台,所以静态文件仅有部分的。接下来是部署和激活阶段了。 吐吐槽 此篇blog将详细记录部署Django的每一个步骤,网上现有的教程实在太少太老了!好多坑!第一次尝试后台很懵,最坑的地方是安装的wsgi部分模块需要更新。B站真是个学习的地方,竟发现了杨老师的部署视频...
摘要:站真是个学习的地方,竟发现了杨老师的部署视频,杨老师的站主页在此主页有一系列的学习视频,推荐干货用于部署的项目主要用了提供后台,所以静态文件仅有部分的。接下来是部署和激活阶段了。 吐吐槽 此篇blog将详细记录部署Django的每一个步骤,网上现有的教程实在太少太老了!好多坑!第一次尝试后台很懵,最坑的地方是安装的wsgi部分模块需要更新。B站真是个学习的地方,竟发现了杨老师的部署视频...
阅读 3221·2021-11-11 16:55
阅读 2456·2021-10-13 09:39
阅读 2391·2021-09-13 10:27
阅读 2154·2019-08-30 15:55
阅读 3082·2019-08-30 15:54
阅读 3125·2019-08-29 16:34
阅读 1818·2019-08-29 12:41
阅读 1063·2019-08-29 11:33