5分钟搭建一个nginx+uwsgi+网页+客户端的的全套体系

技术分享  / 只看大图  / 倒序浏览   ©

#楼主# 2020-2-11

跳转到指定楼层

马上注册,分享更多源码,享用更多功能,让你轻松玩转云大陆。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一,概述
  首先呢,这个文章是个基础文章,没有比较高深的东西,有履历的可以撤了,采用python3 djano+flutter的形式完成的.
二,flutter
 flutter官方说可以iOS+安卓+web+嵌入式,但是目前看了下官网,稳定版只支持ios和安卓,web的话需要beta版本才行,首先我们要切换我们当前的flutter版本(flutter具体的安装这里就不说了,具体的可以去 https://flutter.cn/docs/get-started/install/macos 举行查看).
如果你的flutter是稳定版的,可以这样切换.
064013nhoyzy2h2y2ffhbf.png
这样我们就开了flutter的web支持,运行flutter devices,会打印chrome的信息,阐明正常了,这样用命令行flutter create xxx创建的应用就支持iOS 安卓和web了.
现有的应用可以cd到应用目录用flutter create .来举行web的支持.
我们可以新建一个应用,然后在应用目录运行
flutter build web
编译完成后在build目录的web文件夹看到我们需要的东西.


064013z71moj8r5uzwgehq.png
这个目录就是我们要放到服务器上的东西了.
二.django部门 
1,  首先安装Django,
pip install django==2.1.2,
然后用django举行创建项目.
django-admin startproject test1
这样我们就用django创建了一个基本的项目.


064014rfazthgf1ya1a5ak.png
目录结构如图,
一个项目中可以包含多个应用来对应不同的业务.可以用
python manage.py startapp xxx
来举行新增app.
目录大概是这样子的


064014lwcdimh3z484453n.png
目录结构大要是这样,大概缺少一点东西,后面再说.
2.数据库部门
django默认的话利用的是sqlIte数据库,我们可以在settings.py文件举行配置更改成我们自己的数据库.


064015ao0uyqznxvbm5ngo.png
具体配置可以看django官方文档.
传送门:https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators
django我们可以自己写原生sql语句,也可以利用自带的ORM,在我们新建的app下面的models文件写上我们的数据库字段.


064015reymaahncsfgftz6.png


然后生成迁移文件,根据模子生成数据库语句.:
python manage.py makemigrations
然后实行迁移:
python manage.py migrate
此时就在我们的数据库上生产了我们想要的表,以及对应的字段.打开navicat看一下,已经可以看到了.


064015jmmi89se28jqzvre.png
3,启动服务.
启动服务需要cd到manage.py同目录,实行
python manage.py runserver 8080
端口其他的也行,然后在浏览器输入127.0.0.1:8080就可以访问本地服务了,
比如我们可以访问我们的站点管理页面127.0.0.1:8080/admin,利用命令行
python manage.py createsuperuser
来举行设置用户账号密码邮箱.
064016qmmzva0ddr0rsmmi.png


站点管理页面需要在app的admin.py文件举行注册当前app,
064017p55wq2l5u51q7kbk.png
4,显示模板
模板是html页面,可以根据视图中通报的数据填充值,
把刚才flutter转的网页放入django项目中.
然后配置settings.py文件.
'DIRS': [os.path.join(BASE_DIR, '网页文件夹名称')],
这样我们就可以利用模板功能了,在视图配置返回的html


064018ecnsjedsudc64w2o.png
视图界面完成后,接下来就是配置url了,在setttinggs.py同级目录下有个urls.py文件,这个是配置url的地方


064018pq97137mwm7836w2.png
为了方便管理单个app,在zk_users文件下新建了一个user_urls文件,用来存放路径.如下图


064019q86nbmd2bfd8nyl7.png
这样我的网址就是www.xxxxx.com/junjun/hom,在服务器上后打开这个就行了.
5.静态文件
正常的话我们写好路径,在django中debug=True,django会自动搜索静态文件,js.cs.图片等,但是在服务器的话就是用nginx来举行管理了,所以需要配置静态文件,


064019gaj61syijebehhnv.png
本地环境用第一个,服务器用下面那个,然后打开这个




064019xfgbxtbs87ssstyf.png
然后实行
python manage.py collectstatic
就会把静态文件统一收集到指定STATIC_ROOT文件中去,然后再html中更改静态文件的方式比如下图中


064020j56wlcqb1m1z9sli.png
更改为:


064020dau3gcsuxxlaunsn.png
三.服务器配置
python manage.py runserver这个只适合本地测试,服务器的话利用nginx+uwsgi,我们主要配置的就是这些,
1.setting文件的话注意点:
1,debug要设置为False
2.STATIC_URL路径问题
3.ALLOWED_HOSTS = ['*']设置全部ip都可以访问,大概你自己的ip
2.接下来就是uwsgi,安装:
pip install uwsgi
有了uwsgi用vi 新建一个uwsgi.ini文件,配置如图所示


064021s5yymdpdp3d3v36y.png
然后就是uwsgi的启动与关闭:
启动:uwsgi --ini uwsgi.ini
停止:uwsgi --stop uwsgi.pid
重启:uwsgi --reload uwsgi.pid
大概也可以用lsof -i:端口号 来举行查看端口 然后用kill -9 线程pid 杀死线程的方式停滞uwsgi
这样一个简单的服务器就完成了
3.nginx
nginx可以反向代理,隐藏真实ip,并且可以举行负载均衡的配置,客户端请求nginx,nginx转发给uwsgi,然后运行django项目.
nginx的安装可以去官网http://nginx.org 举行查看.大概
sudo apt install nginx 举行安装nginx,
Centos的话用sudo yum install nginx安装
安装完成后,可以用which nginx来举行查看位置,如果没没有加入path的话,需要cd到nginx的木来实行nginx命令,接下来就是默认加入了path的命令
输入sudo nginx -t,可以查看nginx.conf的文件位置,以及nginx.conf文件配置的测试,接下来
cd到目录,sudo vi nginx.conf,找到http选项,在下面加入server内容


064021l927r6o9c1oe02h6.png


sudo nginx-s reload重启nginx,重启uwsgi就行了,不过我这边遇到了一个问题,始终转发不了,拷贝了nginx.conf文件到项目uwsgi.ini同级目录就行了.
至此一个简单前端后台的生态圈就完成了.接下来我们打开网页,都是能正常访问的,而且flutter的项目也可以打包ios与安卓的项目


064021x90o89s0by0zb099.png
分享淘帖
回复

使用道具

您的回复是对作者最大的奖励

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于作者

Dawn_1f23

新手猿

  • 主题

    6

  • 帖子

    6

  • 关注者

    0

Archiver|手机版|小黑屋|云大陆 | 赣ICP备18008958号-4|网站地图
Powered by vrarz.com!  © 2019-2020版权所有云大陆