简介

        在开发过程中项目测试基本在本地测试完就要上传到服务器做测试了,因为本地环境和服务器环境多少是有点区别,可能本地跑起来正常,但是服务器那边就会出现样式、排版等问题,特别是一些由于系统不同而造成的程序解析错误更是让人烦恼至极。比如:windows系统换行默认是 \r\n 而Linux的换行是 \n ;windows不缺分大小写,而Linux区分大小写…由于这些系统上的不同,我们的程序很有可能换了系统平台就没办法正常跑出本地测试的效果。因此最好的方式就是直接在Linux这些比较接近服务器环境的环境下做开发,可以尽可能地跑出服务器运行出来的效果。然而如果在服务器上安装编辑器、编译器啥的其实都可以。但是实际上我们不会在真正的服务器上做开发,因为首先容量有限,其次我们应该尽可能让服务器环境保持干净,即不要安装多余的软件等,避免测试环境受污染(可能你装的某个东西会与你部署的应用冲突而导致程序没办法正常运行),再者项目开发基本都是团队开发,多个人共用一个测试环境肯定是效率低下的,说不定还会相互干扰。如果每个人都是直接用Linux系统做开发(每个人的机子都装Linux系统,然后直接在上面做开发)当然是没问题的(只要不是直接在服务器上就好),所有人写完然后上传到代码托管平台,再从托管平台拉到服务器即可。
        不过这里不是介绍这种方式,而是想提一下我们可以让windows中的某个目录作为共享目录,然后挂载到Linux系统中,这样一来windows和Linux就共享了这个目录,他们的内容完全一致,某一方对目录的修改都会在双方表现出来,因为所谓的挂载其实是将windows中的共享目录映射到Linux中,但Linux同时又可以对该共享目录进行访问。这个过程就像是windows向Linux发起远程控制,windows本身可以访问该共享目录,同时Linux也可以进行访问。但是实际上共享目录的内容的本体还是在windows上,Linux这边只不过是映射过来而已。只要不挂载,内容就只存在于windows中,一旦挂载上,Linux这边才有相同的内容出来。回归正题,上面说到的由于平台不一导致的测试差异,因为项目最终都是部署到Linux系统环境下,因此我们可以把windows目录挂载到Linux上面来,并从Linux上直接拉取代码,然后在windows这边写代码,这样就相当于windows这边编写的代码实际上是写在Linux中的对应位置。具体一点就是将托管平台的代码拉到本地服务器(假设每个人都有自己的测试环境,这个测试环境相对我们windows而言就是服务器环境了),然后该本地服务器作为共享目录的主体,再然后windows的共享目录挂载到本地服务器上,本地服务器的内容就会同步到windows那边。然后我们就可以用windows上的开发工具进行代码编写了,这个过程由于Linux是项目主体,因此一些解析的方式就按Linux来进行解析,因为windows进行编辑的代码实际上是写在Linux环境中的,因此像上面所说的换行符就默认是 \n。说白了现在windows这边的职能就只是因为安装了编辑器可以进行代码编写,然后剩下的代码测试就是Linux本地服务器的事的(至于部署因为项目代码本身就是在Linux环境下,因此相当于部署完毕)。废话了那么多下面来介绍使用:

使用

环境:windows系统(需要去控制面板中的程序和功能->启用或关闭windows功能,将smb开启)、Linux系统(需要事先安装cifs-utils:sudo apt-get install cifs-utils
目的:windows的共享目录挂载到Linux上
准备
   1、先将windows系统中某个将要作为共享目录的文件夹设置为共享(右键文件夹打开属性,直接点击共享,然后选择一个用户【通常是系统用户,即该文件夹的所有者】,然后点击右下角共享)


   2、关闭防火墙(非必须,经过测试实际上不关闭windows防火墙也能够成功挂载卸载)。因为访问过程中可能由于远程控制的问题会被防火墙屏蔽掉导致连接不成功。直接右键我的电脑打开属性,点击左下角“安全和维护”,如果右侧面板中有显示windows防火墙字样的,要确保其是已关闭的状态。如果没有显示windows防火墙字样,则在开始这里的底部导航栏中用搜索的方式搜索“防火墙”或者是进入控制面板找到防火墙,然后将其进行关闭。如果出现域配置专用配置公用配置等不同配置的防火墙,只需要关闭专用配置的防火墙即可。

命令:(下面的命令都是Linux中的命令,因为是将windows的共享目录挂载到Linux下,因此需要Linux发起挂载连接。因为只接触过cifs,所以只介绍这一种)
     挂载sudo mount -t cifs //ip/share_directory mount_point -o username=xxx,password=yyy
     说明:ip是windows系统的ip;share_directory是你的共享目录名称;mount_point是挂载点,即你想让windows的共享目录挂载到什么位置,挂载点就是那个位置的路径;username是windows用户的账号;password是windows用户的密码(即你开启电脑时输入的开机账号和密码)
     Tip:如果cifs-utils比较新,则上面的命令会报错,因为密码要专门输入,使用下面命令挂载:sudo mount -t cifs //ip/share_directory mount_point -o username=xxx,在输入完整个命令后会要求输入windows的xxx账号的密码。

     取消挂载sudo umount mount_point
     说明:挂在完后可能你暂时不需要了,那就用这个命令取消挂载,本体所做的事不会影响对方。

挂载完毕后在Linux中输入命令:df,查看磁盘空间,如果是挂载成功,就会有你所挂载的目录的信息。

Tip:如果将上面的挂载命令在Linux中创建一个.sh文件并写入,则需要执行该挂在命令的时候直接使用source xxx.sh或者是./xxx.sh即可自动执行挂在命令。

错误1:过程中遇到的错误基本上是防火墙没有关闭导致,因此需要确认防火墙是否关闭。

错误2:如果在Linux中输入挂载命令,然而却显示
mount error{16}:Device or resource busy Refer to the mount.cifs{8} manual page (e.g. man mount.cifs)
则表示当前共享目录已经挂载上来了,先输入df命令确认是否已挂载

更多推荐

windows采用cifs方式挂载共享目录到Linux服务器