前端,也称为“客户端开发”,简单来说,你可以在应用程序或网站的屏幕上看到的所有内容都属于前端。
网站和移动应用的前端
让我们考虑一个现实的例子:你正在访问的网站。内容设计、图像、段落和线条之间的间距,左上角的公司徽标,以及右下角的小通知按钮——所有这一切都是前端。
移动应用的前端与网站相同。例如,你在移动或 Web 应用中看到的内容,按钮、图像是前端的一部分。此外移动屏幕还具有触摸响应功能,因此当应用响应你所做的所有手势时,需要进行缩放放大/缩小、双击、滑动等操作。
后端,也称为“服务器端开发”,也就是在系统“后面”所发生的事情。同样,在后端服务器和浏览器或应用程序之间存储网站、应用数据和中间媒介的服务器都属于后端。简单来说,在应用程序或网站的屏幕上看不到的所有东西都是前端的后端。
网站和移动应用后端
网站的后端需要设置服务器,存储和检索数据,以及将这些服务器与前端进行连接的接口。如果说前端开发人员梗关注网站的外观,后端开发人员则更更关注网站的速度、性能和响应能力,后端通过编码、云 API 和数据库进行集成。
就像前端一样,移动应用的后端开发在各个方面都与网站后端相同。此外,你为移动应用设置后端服务器的选项包括:云计算(AWS,Firebase)定制服务器或 MBaaS(移动后端即服务)。
有些人可以同时掌握前端和后端开发技能。这样的开发被称为全栈开发人员。
学习或雇用全栈开发者有其自身的优点和缺点。可以把开发人员数量减少到一半,但专业水平也随之降低了。专门从事前端或后端开发的开发人员一般比了解两者的人对于单一学科更加专业。
还有各种类似于全栈的技术栈,如 MEAN 技术栈,LAMP 技术栈,.NET 技术栈,Python-Django 技术栈,ROR 技术栈开发人员可以成为任何这些技术堆栈的专家。
本篇文章将会教你如何搭建简易的类似于前后端存储
1、一台Windows Server 2016主机(已联网)
2、一台rhel7.4主机(已经联网)
3、rhel7.4 先挂载好光盘镜像,添加一个10G的硬盘
这一步可以看我之前发的有一篇文章关于配置yum软件仓的
RedHat7.4配置Yum软件仓
[root@localhost ~]# yum install targetd targetcli -y
重新启动并加入开机自启
[root@localhost ~]# systemctl restart targetd
[root@localhost ~]# systemctl enable targetd
Created symlink from /etc/systemd/system/multi-user.target.wants/targetd.service to /usr/lib/systemd/system/targetd.service.
[root@localhost ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb46
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/>
查看
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 0]
| o- fileio ................................................................................................. [Storage Objects: 0]
| o- pscsi .................................................................................................. [Storage Objects: 0]
| o- ramdisk ................................................................................................ [Storage Objects: 0]
o- iscsi ............................................................................................................ [Targets: 0]
o- loopback ......................................................................................................... [Targets: 0]
/>
切换“目录”
/> cd backstores/block
/backstores/block>
创建名为 disk0的设备
/backstores/block> create disk0 /dev/sdb
Created block storage object disk0 using /dev/sdb.
切换至“根”目录
再次查看详细信息,会多出一个10G的磁盘,加粗斜体部分
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 1]
| | o- disk0 ......................................................................... [/dev/sdb (10.0GiB) write-thru deactivated]
| | o- alua ................................................................................................... [ALUA Groups: 1]
| | o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
| o- fileio ................................................................................................. [Storage Objects: 0]
| o- pscsi .................................................................................................. [Storage Objects: 0]
| o- ramdisk ................................................................................................ [Storage Objects: 0]
o- iscsi ............................................................................................................ [Targets: 0]
o- loopback ......................................................................................................... [Targets: 0]
/>
/> cd iscsi
/iscsi> create ---这里是自动生成
Created target iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.2ae48bfd25e5.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi>
查看详细信息
/iscsi> ls
o- iscsi .............................................................................................................. [Targets: 1]
o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.2ae48bfd25e5 ......................................................... [TPGs: 1]
o- tpg1 ................................................................................................. [no-gen-acls, no-auth]
o- acls ............................................................................................................ [ACLs: 0]
o- luns ............................................................................................................ [LUNs: 0]
o- portals ...................................................................................................... [Portals: 1]
o- 0.0.0.0:3260 ....................................................................................................... [OK]
/iscsi>
/iscsi> cd iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.2ae48bfd25e5/tpg1/acls
/iscsi/iqn.20...5e5/tpg1/acls> create iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.2ae48bfd25e5xxx ---直接复制上面的iqn,然后在后面加几个字母(我加的xxx)
Created Node ACL for iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.2ae48bfd25e5xxx
/iscsi/iqn.20...5e5/tpg1/acls>
/> cd iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.2ae48bfd25e5/tpg1/luns
/iscsi/iqn.20...5e5/tpg1/luns> create /backstores/block/disk0
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.2ae48bfd25e5xxx
/iscsi/iqn.20...5e5/tpg1/luns>
位于生产环境中的服务器上可能有多块网卡,就需要我们在配置文件中手动定义 iSCSI服务端的信息。
即在 portals参数目录中写上服务器的 IP地址,也可以直接写 0.0.0.0,系统将自动开启服务器的 3260端口将向外提供iSCSI共享存储资源服务。
然后返回“根”目录后执行 ls命令查看检查。在确认信息无误后输入需要输入 exit命令来退出配置。
/> cd iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.2ae48bfd25e5/tpg1/portals/
/iscsi/iqn.20.../tpg1/portals> ls
o- portals ............................................................................................................ [Portals: 1]
o- 0.0.0.0:3260 ............................................................................................................. [OK]
/iscsi/iqn.20.../tpg1/portals>
系统这里默认就是0.0.0.0 所以不用管它
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 1]
| | o- disk0 ........................................................................... [/dev/sdb (10.0GiB) write-thru activated]
| | o- alua ................................................................................................... [ALUA Groups: 1]
| | o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
| o- fileio ................................................................................................. [Storage Objects: 0]
| o- pscsi .................................................................................................. [Storage Objects: 0]
| o- ramdisk ................................................................................................ [Storage Objects: 0]
o- iscsi ............................................................................................................ [Targets: 1]
| o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.2ae48bfd25e5 ....................................................... [TPGs: 1]
| o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
| o- acls .......................................................................................................... [ACLs: 1]
| | o- iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.2ae48bfd25e5xxx ....................................... [Mapped LUNs: 1]
| | o- mapped_lun0 ................................................................................. [lun0 block/disk0 (rw)]
| o- luns .......................................................................................................... [LUNs: 1]
| | o- lun0 ...................................................................... [block/disk0 (/dev/sdb) (default_tg_pt_gp)]
| o- portals .................................................................................................... [Portals: 1]
| o- 0.0.0.0:3260 ..................................................................................................... [OK]
o- loopback ......................................................................................................... [Targets: 0]
/>
退出
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
[root@localhost ~]#
重启
[root@localhost ~]# systemctl restart targetd
放行防火墙,设置永久生效
[root@localhost ~]# firewall-cmd --add-port=3260/tcp
success
[root@localhost ~]# firewall-cmd --add-port=3260/tcp --permanent
success
修改成Linux的iqn
复制我箭头所指的iqn到WinServer客户端
发现Linux
这里输入Linux的IP地址
连接Linux
还是回到我们的服务管理器
第一个就是我们的FTP服务器
添加站点
站点名称随便取
在我们新建的共享磁盘下新建一个目录
用来存放服务程序
选择本机的IP地址
(SSL是指泛域名证书,这里不用管,如果感兴趣的话,后面会出一个免费签阿里云泛域名证书的教程)
我们这里做测试,
身份验证和权限随便给(当然生成环境肯定不能这么做)
查看
新建规则
添加 “C:\Windows\System32\svchost.exe”这个程序
用自己的物理机(笔记本电脑)访问FTP网址
我这里放了一个Python的代码来测试一下
以上就是一个简单的前端、后端存储环境