最近开发了一个小程序和一个后台管理系统,需要把这两个不同的项目部署到同一个服务中,然后使用不同的域名来访问不同的项目,默认只支持单服务访问,要实现不同域名,需要安装第三方扩展包:-.
本文采用简单的demo进行演示,阅读本文的前提条件是对项目环境有一定的了解,对项目环境有一定的理解。
1.搭建环境及项目:
我一般用它来管理包,所以本文也是用管理环境,当然如果你习惯使用管理环境也没问题,本文主要演示如何完整搭建单体服务实现多域访问,不涉及具体的业务流程。
由于生成项目需要先下载包,所以我们先创建一个基本的虚拟环境,然后在虚拟环境中通过特定的命令来生成项目文件。
1.环境搭建:
conda create --name applite_web
创建完虚拟环境之后,现在需要下载一些依赖包,这里只需要分别安装即可。
通过开发小程序及后台管理系统实现多域名访问
2.创建项目:
django-admin.py startproject applite_web
3. 创建应用程序
通过开发小程序及后台管理系统实现多域名访问
解释2点:
下面的截图是本文的Demo项目结构,当然这也是比较简单的项目结构,实际项目开发中还需要配置其他参数和文件。
通过开发小程序及后台管理系统实现多域名访问
2. 配置 -
创建好虚拟环境和项目后,接下来就是在中配置多个域名,为了方便,本文只演示了两个域名,多个域名的添加方式与两个域名相同。
1、首先在.py同级目录下添加一个.py文件,并进行如下配置:
通过开发小程序及后台管理系统实现多域名访问
2.然后在配置文件中添加3个配置:
将以下内容添加到
通过开发小程序及后台管理系统实现多域名访问
需要在第一行和最后一行添加2行配置
通过开发小程序及后台管理系统实现多域名访问
在下面一行添加以下两行参数配置
通过开发小程序及后台管理系统实现多域名访问
3.配置url并查看
完成上面两步之后,需要进入app文件夹,写入对应的URL和view,本文演示的是两个域名,考虑到单个项目一般有多个模块,还需要分别配置两个URL,具体配置如下:
1、在文件夹中创建urls.py文件,添加相应的URL,代码如下:
urls.py文件如下:
通过开发小程序及后台管理系统实现多域名访问
urls.py文件如下
通过开发小程序及后台管理系统实现多域名访问
2.然后在中添加相应的URL和函数
匹配成功后会直接跳转到urls,然后根据当前匹配情况跳转到当前函数
1)首先,匹配到的url的路由:
通过开发小程序及后台管理系统实现多域名访问
2)url匹配成功后,跳转到此处的视图函数,并返回响应
通过开发小程序及后台管理系统实现多域名访问
同样的,匹配成功后会直接跳转到urls中,然后根据当前的匹配情况跳转到当前函数
1)首先匹配到的url的路由如下:
通过开发小程序及后台管理系统实现多域名访问
2)url匹配成功后,跳转到此处的视图函数,并返回响应
通过开发小程序及后台管理系统实现多域名访问
4.域名绑定及测试
经过上面三步,一个基本的演示功能已经完成,本文的目的是实现单服务加载后,在一个服务中访问不同的域名,所以在配置uwgi和参数的时候,也需要绑定域名。
1、下面是同一个局域网内两台机器的用户访问:
访问机器IP:192.168.2.17,部署服务IP:192.168.2.200,实际生产中需要购买真实域名,这里作为演示,在本机绑定服务器IP即可访问另一台机器服务,具体修改如下:
通过开发小程序及后台管理系统实现多域名访问
2、绑定之后,把此项目放到192.168.2.200机器上,测试一下当前服务配置是否有问题。
项目位置路径为:/home/yxy///
进入app文件夹,使用以下命令运行项目:
python manage.py runserver 192.168.2.200:8000
在浏览器中输入::8000/app1/,如果浏览器显示如下结果,则表示项目配置与域名绑定成功。
通过开发小程序及后台管理系统实现多域名访问
5.参数配置及测试
前面步骤成功之后,接下来就是配置参数了。熟悉后端开发的朋友应该知道,开发时用来运行服务器的.py只适合开发时进行代码调试,自带的服务无法满足实际项目部署的需求。作为服务器,它不仅可以提供稳定的服务,还可以提供较大的并发量,所以在后端开发中使用较多。
1.在项目文件夹中创建一个文件夹,进入该文件夹并创建一个.ini文件,配置参数如下:
通过开发小程序及后台管理系统实现多域名访问
2.配置完成后,运行以下命令启动服务。
# 在项目路径下,启动服务命令如下: uwsgi --ini ./uwsgi/uwsgi.ini
启动完成后文件夹里会多出两个文件:.pid .sock
通过开发小程序及后台管理系统实现多域名访问
然后检查当前服务是否启动成功:
# 命令如下 ps -ef|grep uwsgi
当出现下图时,表示项目已经启动成功。
通过开发小程序及后台管理系统实现多域名访问
3.检查浏览器服务是否正常:
在浏览器中直接输入::8000/app1/,如果显示以下内容,则表示配置成功。
通过开发小程序及后台管理系统实现多域名访问
6.配置和测试
如果前面5步都没有问题的话,那么恭喜你,你只需要最后一步就可以完成本次demo的演示了。现在开始最后一步,配置参数。
1.首先安装,本文就不讲解安装,毕竟网上教程那么多,大家可以找一个好的教程照着做,小编会把它安装为默认路径,在:/usr//,输入这个文件,直接在命令行启动就可以了。
/usr/local/nginx/sbin/nginx
检查启动是否成功,命令如下:
ps -ef|grep nginx
出现下图,表示启动成功
通过开发小程序及后台管理系统实现多域名访问
在浏览器中输入:,出现如下内容,表示安装成功
通过开发小程序及后台管理系统实现多域名访问
2.检查配置没有问题之后,就要配置多域名了。
注释掉原有的配置
通过开发小程序及后台管理系统实现多域名访问
添加下面一行参数,主要是为了方便单独添加配置以及两个域名的文件
通过开发小程序及后台管理系统实现多域名访问
在/usr//conf/下新建文件夹,进入文件夹分别创建.conf、.conf文件,具体配置参数如下:
.conf配置如下:
通过开发小程序及后台管理系统实现多域名访问
.conf配置如下:
通过开发小程序及后台管理系统实现多域名访问
3、多域名的参数配置就完成了,不过此刻别忘了,作为负载均衡使用的时候,需要将.ini中的参数http改为如下:
通过开发小程序及后台管理系统实现多域名访问
4、到此本文的参数已经配置完毕,接下来我们需要自动重启,并查看启动效果如上图,说明启动成功,接下来就是浏览器检测多域名配置是否正确:
分别输入:,结果如下,说明多个域名配置成功。
通过开发小程序及后台管理系统实现多域名访问
通过开发小程序及后台管理系统实现多域名访问
至此,单个服务实现多域名访问的演示就完成了,当然本文只做了简单的demo版本,在实际的项目开发过程中,还是需要根据实际需求进行评估,决定是后台加载多个服务,还是加载单个服务映射多个域名。