2024-09-18 08:49:54
导读:今天首席CTO笔记来给各位分享关于django如何部署到服务器的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
如何在阿里云上部署django前提条件
1.为Python应用程序安装virtualenv和virtualenvwrapper,目的在于为Python项目创建独立的环境。
●安装pip
sudoapt-getinstallpython-pip
●安装virtualenv
sudopipinstallvirtualenv
●创建目录以存储您的virtualenv
mkdir~/.virtualenvs
●安装virtualenwrapper
sudopipinstallvirtualenvwrapper
●将WORKON_HOME设置为您的virtualenv目录
导出WORKON_HOME=~/.virtualenvs
●将WORKON_HOME设置为您的virtualenv目录
导出WORKON_HOME=~/.virtualenvs
●将?virtualenvwrapper.sh?添加到?.bashrc
将此行添加到~/.bashrc的末尾,以便加载virtualenvwrapper命令。/usr/local/bin/virtualenvwrapper.sh
退出,然后重新打开您的shell,或者使用?.bashrcorsource~/.bashrc?命令重新加载.bashrc,然后一切准备就绪。
2.安装git。
apt-getinstallgit
3.安装Nginx作为Web服务器,这样您便可在其之后运行您的应用程序。
Sudoapt-getinstallnginx
启动您的第一个Linux实例
接下来向您介绍使用阿里云管理控制台运行ECS实例的相关步骤。
1.登录到您的帐户,然后导航到“产品与服务”部分下的“云服务器”。单击侧边栏菜单中的概览。这会显示运行中的实例列表。单击购买实例从任意地域购买实例,或者继续到下一步创建新实例。
2.单击侧边栏菜单中的实例。在实例列表中选择所需地域,然后单击右上方栏中的创建实例。
3.系统会将您重新定向到“产品购买”控制台,在此您需要选择偏好的资源包-对ECS实例和数据传输提供特殊定价的初级资源包或提供两种定价模式的高级购买资源包。您可以根据自身需求选择订阅(按月或按年)或者按量付费。此案例中,我们选择了“按量付费”。
4.在此窗口中,选择要在其中启动ECS实例的数据中心地域和可用性区域。如果选择了地域但未选择可用性区域,系统会将实例随机放在任何区域。
5.现在您需要选择自己想要创建的实例类型。根据自身需求,从“生成”选项卡中选择生成实例类型。生成类型根据配置和所用的计算能力表示不同的实例类型。
6.接下来,选择网络类型以启动您的ECS实例。可根据自身需求选择经典网络或专有网络。在经典网络中,阿里云以分布式方式分配IP地址。它适合于需要简单快速地使用ECS的用户。专有网络更多的是一种逻辑隔离私有网络,它支持专用连接。它适合于熟悉网络管理的用户。选择适当的网络类型后,选择网络计费类型:数据传输或固定带宽。在这两种情况下,您都需要设置网络带宽峰值(最大数据传输速率)。
7.现在,您需要选择操作系统。每个选项下都提供了不同操作系统版本的列表。选择Ubuntu。
8.根据自身需要,从下拉菜单中选择系统磁盘类型。您还可以通过单击“添加磁盘”向此列表添加更多磁盘。
9.在“安全设置”部分中,您可以创建密码以提高安全性,或者在此阶段跳过此步骤并稍后从管理控制台执行此操作。
10.在“采购计划”部分中,键入您的实例名称并设置要启动的实例的数量。
11.在“概览”部分查看配置详情和总价,然后单击立即购买。
12.单击开通确认业务订单并启动实例。
13.启动实例后,您可以在控制台的实例选项卡中查看该实例。
安装和部署Django应用程序
您已使用阿里云管理控制台创建和启动ECS实例,接下来让我们了解如何安装和部署Django应用程序。
1.使用ssh命令登录到您的服务器
2.输入密码
3.通过创建一个新的virtualenv为部署Django应用程序设置环境:
mkvirtualenvDjangoApp
要退出新的virtualenv,请使用deactivate。
您可以使用workon在环境之间切换。要加载或在virtualenv之间切换,请使用workon命令:workonDjangoApp
4.在您的当前环境中安装Django
pipinstallDjango
5.使用django-admin命令创建样本项目并将目录更改为项目文件夹。
django-adminstartprojecttodoApp
cdtodoApp/
6.迁移或引导您的数据库。
pythonmanage.pymigrate
7.创建超级用户以访问管理面板。
pythonmanage.pycreatesuperuser
8.设置用户后,通过运行由manage.py操作的runserver命令测试您的应用程序
pythonmanage.pyrunserver0.0.0.0:8000
您将看到以下内容在端口8000上运行
转至/admin,这是您的管理面板,您可在此管理应用程序。
现在使用Nginx将您的应用程序置于Web服务器之后。
9.创建数据库架构开通python环境。
●将目录更改为Django项目目录
●运行以下命令
pythonmanage.pymigrate
10.收集所有静态文件(css、js等)
●运行以下命令以在任意特定位置收集所有静态文件
Pythonmanage.pycollectstatic--noinput
●开发人员负责将STATIC_URL路径设置为将收集所有静态文件的位置。
●这些变量在项目目录内的setting.py中定义。
1.STATIC_URL
2.STATICFILES_DIRS
3.STATIC_ROOT
11.使用uwsgi服务器安装uwsgi库并启动服务器。
pipinstalluWSGI
●创建用于部署Django应用程序的ini文件vimuwsgi.ini
●将其保存到应用程序目录上的uwsgi.ini。如需进一步了解如何编写ini文件,请参阅?Python/WSGI应用程序快速入门。运行此命令以启动您的应用程序。
uwsgiuwsgi.ini(您的ini文件)
12.更改nginx配置文件以用于应用程序。
server?{???listen80default_server;????listen[::]:80default_serveripv6only=on;????server_namelocalhost;?location/static/?{????includeuwsgi_params;????alias/root/todoApp/public/;?}?location?/??{????includeuwsgi_params;????uwsgi_passunix:/tmp/uwsgi.sock;??}}
13.重启nginx,随后您的应用程序将启动并在端口80上的nginx之后运行。
如何将django用apache2部署在亚马逊的服务器上使用mod_python部署
1.为了配置基于mod_python的Django,首先要安装有可用的mod_python模块的
Apache。
2.然后应该有一个LoadModule指令在Apache配置文件中。它看起来就像是这样:
LoadModulepython_module/usr/lib/apache2/modules/mod_python.so
3.配置Apache,用来定位请求URL到Django应用:
VirtualHost*:80
ServerName
Location"/python1"
SetHandlerpython‐program
PythonHandlerdjango.core.handlers.modpython
SetEnvDJANGO_SETTINGS_MODULEpython1.settings
PythonAutoReloadOff
PythonDebugOff
PythonPath"['/var/www/html/python1']+sys.path"
PythonInterpreterpython1
/Location
Location"/python2"
SetHandlerpython‐program
PythonHandlerdjango.core.handlers.modpython
SetEnvDJANGO_SETTINGS_MODULEpython2.settings
PythonAutoReloadOff
PythonDebugOff
PythonPath"['/var/www/html/python2']+sys.path"
PythonInterpreterpython2
/Location
[......]
/VirtualHost
它告诉Apache,任何在/python这个路径之后的URL都使用Django的mod_python来处理。
它将DJANGO_SETTINGS_MODULE的值传递过去,使得mod_python知道这时应该使用哪个配置。
查看mod_python文档获得详细的指令列表。
4.重启Apache,查看:"target="_blank":
/etc/init.d/apache2restart
使用mod_wsgi部署
1.下载安装mod_wsgi模块,生成mod_wsgi.so和wsgi.conf
2.在配置中加载模块:
LoadModulepython_module/usr/lib/apache2/modules/mod_wsgi.so
3.修改Apache配置文件httpd.conf
VirtualHost*:80
ServerName
DocumentRoot/var/www/html/python
WSGIScriptAlias//var/www/html/python/apache/django.wsgi
Directory/
Orderdeny,allow
Allowfromall
/Directory
Directory/apache
Allowfromall
/Directory
/VirtualHost
4.创建并配置wsgi的配置文件:
#filename:python.apache.django.wsgi
importos,sys
#CalculatethepathbasedonthelocationoftheWSGIscript.
apache_configuration=os.path.dirname(__file__)
project=os.path.dirname(apache_configuration)
workspace=os.path.dirname(project)
sys.path.append(workspace)
os.environ['DJANGO_SETTINGS_MODULE']='python.settings'
os.environ['PYTHON_EGG_CACHE']='/tmp'
importdjango.core.handlers.wsgi
application=django.core.handlers.wsgi.WSGIHandler()
printsys.stderr,sys.path
shellchmoda+xdjango.wsgi
5.修改Django项目配置文件settings.py:
DATABASES={
'default':{
'ENGINE':'django.db.backends.mysql',
'NAME':'python',
'USER':'admin',
'PASSWORD':'admin123',
'HOST':'127.0.0.1',
'PORT':'3306',}
}
TEMPLATE_DIRS=(
'/var/www/html/python/templates',
)
6.重启Apache,访问
/etc/init.d/apache2restart
如何在服务器上部署Django项目并使其在后台一直运行
前几天老师让我把一个Django项目(爬虫网页)放到校园内网上,但是我想先用自己的服务器来尝试一下。之前刚好有在DigitalOcean上买过服务器用来运行ss脚本,平时服务器一直放着没啥用,所以就拿它来试验一下。
废话不多说,第一步通过WinSCP软件把Django文件传到服务器上。
在服务器中安装Django需要的环境和我所需要的Python第三方库。
以上所有步骤完成后,还需要进行一步操作,这是我经历的一个坑。打开Django文件目录中的settings.py,把ALLOWED_HOSTS=[]改为ALLOWED_HOSTS=["*"]。
在服务器中打开到manage.py所在的目录,输入命令:
python3manage.pyrunserver0.0.0.0:8000
然后按下回车,在浏览器中输入:该服务器IP地址:8000,大功告成!
Attention:
1.python3不是特定的,是根据你的Django项目所需要的环境指定的。
2.8000是端口号,可以修改。
如果想要Django项目一直运行,关闭终端后还在运行,即需要运行如下命令,nohupcommand,command即位上文所说的python3manage.pyrunserver0.0.0.0:8000。
django+vue前后端分离项目部署后端用的drf,使用的是uwsgi+nginx
进入服务器项目文件目录下,我的django项目放在了“/usr/myProjects/”目录下了。在manage.py同级目录下创建uwsgi.ini文件,配置如下:
测试效果命令:
如果访问:xxx.xxx.xxx.xx:8000成功,则uwsgi.ini配置成功
我的nginx.conf所在位置是“/etc/nginx/nginx.conf”
配置文件如下:
1、第一行
主要就是给nginx加权限,vue部署后使用history路由时会去掉地址后面的‘#’号,打包部署后不加权限会有bug。
2、如配置所示,有两个Server,分别部署了前端服务,和后端服务,值得注意的是两个Server用的是同一个服务器,监听的端口不同。
3、vue部署需要注意的是反向代理地址:
以及后面的端口问题
4、后端的Server需要注意location中的uwsgi_pass后面的端口号要和uwsgi.ini中配的相同,否则监听不到
5、后端跨域问题。如果遇到跨域需要自己网上找配置,我的没遇到,可能是因为我在django的settings中配置了跨域。
6、django-suit后台管理样式崩了,需要改,但是api可以正常访问,这个有空再说
7、我开始后台监听的是8008端口,vue前端监听的是80端口,这样前端显示好看。然而问题出现了,虽然后台api可以正常访问,vue的本地开发环境也能正常运行且文字、图片资源均显示正常,但是前端vue打包线上部署后,文字信息显示正常,图片信息缺失8008端口,导致显示不出来。为图方便我选择了前端监听8008端口,后端监听80,部署后显示正常。原因不太清楚///////有空再说吧。
8、不要问我为啥都前后端分离了还部署到一个服务器上?穷,而且只是测试,没必要
9、此文仅适合入门
关于django后台admin(suit)缺失的修改(参考:django中文网:)
在环境中进入项目目录,需要收集css样式,在终端输入命令:
接下来你就回发现static文件中包含了css文件,此时再打开网站,样式显示正常
uWSGI通过xxx.ini启动后会在相同目录下生成一个xxx.pid的文件,里面只有一行内容是uWSGI的主进程的进程号。
关于uwsgi,进入同届目录下
教训
获取不到环境,那就指定环境
另外:记得重启uwsgi,重启Nginx,实在不行就先把监听的端口kill掉再重启
暴力删端口:fuser-k80/tcp
netstat-aptn命令行,查看所有开启的端口号
netstat-ntlp|grep80查看具体的端口是否使用
ps-ef|grepuwsgi查看是否有uwsgi端口存在
Django部署——uwsgi+Nginx(超详细)环境:
python3.6
centos7
Django1.11
用Django写了个小网站,只能在自己本地跑一跑!这怎么行?听说可以部署在云服务器上,这样别人就可以访问了!
从哪儿开始?就从Django开始吧!老规矩,按步骤:
这里不讲Django项目实施过程,假设你已经写了一个Django项目,并且在本地127.0.0.1:8000能够跑起来。喏,给你个参考,项目大概长这样:
也就是项目目录下的settings.py文件,主要强调几个地方:
①关闭DEBUG模式:
②修改ALLOWED_HOSTS:
③配置静态文件存放路径:
修改好配置之后执行:
这个没什么说的。。。在自己的云服务器上装好这两个工具
安装好uwsgi后最好验证一下,验证方法:
创建一个test.py文件:
启动uwsgi服务器:
如果可以正常启动而不报错那就应该没问题,不放心的话再在终端验证一下:
在uwsgi.ini里进行如下配置:
找到nginx的配置文件夹,centos7的nginx配置文件在/etc/nginx下,该路径下有一个nginx.conf总配置文件,还有两个文件夹./conf.d、./default.d,我们将nginx.conf复制一份到conf.d文件夹下,命名为nginx.conf(或者项目名.conf)进行如下修改(根据中文注释进行相应配置即可):
进入uwsgi.ini文件夹下执行:
在终端执行:
参考资料:
刘江的博客
博客园
知乎问答
无名Blog
自强学堂Django教程
Django文档
empty_xlBlog
结语:以上就是首席CTO笔记为大家整理的关于django如何部署到服务器的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~