前言
事先假设已经弄好了整个网站所需要的data(如html),那现在要做的就是该如何将网页部署到服务器上,让网站可以24hr无间断运行。
可参照:如何部署
概念
在部署之前,先了解一些基本概念:
一般而言,最普遍的方式都是使用LAMP/LNMP的方式来部署。
LAMP:
- 指Linux(主机系统)、Apache(这才是Web server!)、MySQL(数据库)、Php/pearl/Python(后端语言)
LNMP:
- 其他都一样,N指Nginx(另一个Web server)
Apache VS Nginx:
前者:更稳定,功能强大(模块多,更庞大)
后者:更轻量级,是一个高性能的HTTP和反向代理服务器(相对于正向代理:如vpn),同时也是一个IMAP/POP3/SMTP 代理服务器。其特点是CPU占有内存少,易于开发,部署方便。速度快
参考:
服务器(更多指系统),一般而言有:
- windows端: IIS
- Linux端:Apache、Nginx、Tomcat、、
正常而言,一般都选用Linux,因为开源,更安全稳定!
而实际上使用Linux,并不是说叫我们在本地下载Linux系统,而是在云伺服器上下载(就是云伺服器要运行的系统是Linux!);说到伺服器(ECS),事实上可以简单理解为一个电脑主机。
而这个主机可以是:
- 物理主机:真实存在的硬件,昂贵。(但我们的电脑也可以成为之=>一般用于测试)
- 虚拟主机:就是云伺服器 (ECS)(better)or VPS 之类。云提供商:国内:阿里云、腾讯云、华为云;国外:谷歌、亚马逊、微软。。。
- 正常而言:选用云伺服器!
因为伺服器是一个主机,所以,所谓部署网站到服务器,不过就是将本地电脑主机已成功运行的项目,转移到另一个云上的主机(有同样的运行环境)
那么具体该如何实施呢?
如何部署
前言:
先将本地项目整个上传到github(建议private,因为包括settings内的私密配置;如果public的化,就添加.ignore文件!忽略掉敏感文件!)
- 下载Git
- 先在Github创建一个对应的repository,随后在本地新建一个文件夹,将github文件git clone到此本地新建文件夹
- then将本地项目文件放到这个clone后的文件夹
- 通过git status
- git add .
- git commit - m "初始化项目v1"
- git push ;
等命令来完成上传!(目的是保留版本!)
参考:【Django2.0教程】35.部署准备(一):Git
一、配置云伺服器
可在阿里云或其他云服务提供商那购置服务器
以阿里云为例:
- 点击创建实例,随后大致:选择Linux ubantu 或Centos系统(使用宝塔面板的话推荐Centos;因为才可下载python项目管理器!!centos 7好像更多人支持。)
- 按量付费
- 1CPU1GiB (目前使用的是高效系统云盘:40G(读写速度会比SSD的慢, 所以看看如何))
记住:创建好实例后,要立刻“重置实例密码” 。最好要很复杂!因为一旦别人掌握了服务器root用户的密码,等于掌握了整个服务器的生杀大权!
随后,便是配置“安全组”。即允许服务器开放的端口Port,一般而言:
- 80:http
- 443:https
- 22:ssh
- 3306:mysql
要开放相对应的port,才能使用对应的服务,否则会出错!
二、设置网站域名domain
可去Freenom申请free域名,随后更改nameserver为custom自定义的
--break line--
这两是dns解析服务器的地址,来源于阿里云绑定“域名”>“解析域名”,意思就是使用阿里云的dns服务器来解析,不是用freenom的!随后,回到阿里云的主控台,进行域名绑定(绑公网ip),添加两条主机记录值:
三、下载Finalshell(用于ssh连接服务器)和下载宝塔面板
通过ssh连接服务器后,上网搜宝塔面板,点击下载Linux版本(出现下载命令行),将对应的伺服器Linux系统版本命令,copy到Finalshell中,为伺服器下载安装。
随后进入宝塔面板页面,不使用推荐安装!之后,在软件商店,下载mysql,Nginx。
- 将项目文件上传到www/wwwroot目录下
- 在同目录下创建虚拟环境(看“再敲一行代码”的,他放home,我们放上面目录!)
四、下载Nginx, 布置Uwsgi等
如果是centos,则可参考:使用宝塔快速部署Django项目
如果是ubanto,则可参考Nginx+uwsgi部署:【Django2.0教程】39.用Nginx+uWSGI部署
照着敲就对了!
- Nginx才是真正的web server,处理静态文件(直接写在页面的数据,不跟后台交互的数据),如样式css;
- Uwsgi:web server gateway inteface(web服务器网关接口),处理动态数据(跟后台交互的数据);不直接跟程序拿数据(django程序),而是通过web服务器软件nginx来交互,再通过wsgi通信
五、部署后的一些配置清单
发表评论
您尚未登录,登录后方可评论~~登陆 or 注册