像修改本机代码一样修改远端服务器的PHP网站

发布于 2019-08-25  511 次阅读


映射vps目录到自己电脑的摸索记录

最近拿discuz做了一个网站,需要修改模板文件之类的,还需要调试微信和QQ登陆的接口。都是些位置零散的小修改,但是有些需要在线上才能调试(QQ微信的oauth登陆,各种插件)。为了方便开发,我打算在阿里云的centos服务器上安装一个vpn和smb服务,然后在我的开发机上连接VPN并创建网络磁盘映射。

 

实验环境:

服务端 阿里云centos7服务器

客户端 普通的windows 10操作系统

 

实验过程:

1、在centos7上安装smba服务

 smba服务是用来在linux操作系统上共享文件或者目录到windows网络的服务。也就是在linux上安装了之后可以指定某些文件夹共享到局域网,局域网内的windows计算机可以通过网上邻居或者直接在文件浏览器地址栏输入服务器IP

\\XXX.XXX.XXX.XXX

来操作服务器相应目录的文件。

首先查看系统是否安装了samba服务,可以用

service smb status

或者

systemctl staus smb

来查看状态,如果没有安装,使用

yum -y install samba

来安装samba服务,安装完毕后使用

vim /etc/samba/smb.conf

修改配置文件设置。配置文件内容比较多,这里挑重要的几条列一下:

首先是[global]下面的一些全局设置:

#这是网上邻居的所属工作组名
workgroup = MYGROUP
#这个没看到哪里用
server string = Samba Server Version %v
#这个是网上邻居显示的计算机名
netbios name = AliyunLite
#日志文件位置 
log file = /var/log/samba/log.%m
#日志文件最大容量(KB)
max log size = 50
#安全性设置,通常默认设置够用
security = user
passdb backend = tdbsam
#使用远程局域网里的打印机,如果是公司VPN会用到,这里用不到
load printers = no
map to guest = Bad User
unix charset = UTF-8
;dispaly charset = UTF-8
#创建文件和目录时候使用的默认权限,这里777免得出现权限不足问题
create mask = 777
directory mask = 777
guest ok = no
valid users = root,smb
write list = @root
#这个节下面的每一组都是一个共享文件夹,这里我只配置了我自己的
#============================ Share Definitions ==============================
#共享文件夹的名字
[xxx]
#共享文件夹注释
comment = xxx
#在服务器上的路径
path = /xxx/xxx
public = yes
writable = yesread only = no
printable = nobrowseable = yes
 
我们通过smbpasswd 来添加Samba用户,并设置密码。原理是通过读取/etc/passwd文件中存在的用户名。 

  [root@localhost sir01]#smbpasswd -a root

  New SMB password: 注:在这里添加Samba用户root的密码; 

  Retype new SMB password: 注:再输入一次; 

以上配置改好之后重启samba服务:

systemctl restart smb

或者

service smb restart

然后连接上vpn之后就可以在文件浏览器里用\\xxx.xxx.xxx.xxx(服务器在vpn里的地址) 看到并操作服务器的文件了。

 

2、用OpenVPN建立稳定的VPN连接

首先登陆centos使用

wget https://gitee.com/lookingdreamer/SPPPOTools/raw/master/centos/vpn/openvpn/openvpn-install.sh

下载openvpn一键安装脚本。使用

chmod +x openvpn-install.sh./openvpn-install.sh

开始安装openvpn。

大多配置都可以采用默认值,建议询问是否使用秘钥的那一项的时候设置一个秘钥。不过就算不设置秘钥,入侵者也需要先获取你的openvpn客户端配置文件才能登陆VPN。这个自动生成的配置文件内是有加密算法的秘钥对的。

安装完成后会生成一个客户端配置文件,您需要使用ftp或者securefx之类的工具从服务器上下载此配置文件。然后安装一个openvpn的客户端,我这里是安装了一个windows版的客户端,翻墙到openvpn的管网下载的,管网地址是:

https://swupdate.openvpn.org/community/releases/openvpn-install-2.4.7-I607-Win10.exe

如果你没有翻墙工具,可以到我管理的BBS上下载,QQ登陆简单注册一下即可得到提取码:

https://www.shuyu.online/forum.php?mod=viewthread&tid=57&page=1&extra=#pid61

安装完毕之后,启动openvpn可以看到右下角任务栏出现这个带锁的显示器图标:像修改本机代码一样修改远端服务器的PHP网站  第1张

右键点击,导入配置文件,找到刚才生成的配置文件打开。导入配置之后即可右键点击它进行连接,连接成功后就可以在\\10.8.0.1\ 这个地址(在文件管理器,也就是计算机 或者 我的电脑打开)上看到你服务器的文件夹了。右键点击文件夹创建网络驱动器,之后就可以像操作本地文件一样操作服务器上的文件了。我试了一下phpstorm这个ide,过于重量级,intellisense可能会做很多操作来扫描网络驱动器,会造成卡顿。因此推荐使用vscode,sublime之类的轻量级代码编辑器进行操作。

到此已经可以在编辑器里直接修改服务器上的文件,免得零碎改动的上传下载。但是还有个问题,VPN打开的时候,可能你上不了外网,或者外网速度很慢。因为openvpn的默认设置是使用VPN服务端的网关上网,所有网络访问都会先绕到你的服务器上。这样既慢(通常便宜服务器也就1-2M的带宽)又浪费服务器流量。所以还需要如下2个关键步骤调整OpenVPN的配置,让你的电脑不通过服务器绕弯上网,而是用原有的本地网关路径直接上网:

登陆centos服务器进入控制台,修改openvpn配置文件:

vim /etc/openvpn/server.conf

找到这一句在前面加;

像修改本机代码一样修改远端服务器的PHP网站  第2张

:wq存储关闭配置文件,重启OpenVPN。这里因为用的一键安装脚本安装的OpenVPN,并没有注册成服务所以systemctl和service都找不到这个服务。可以直接kill掉进程再重启,具体步骤如下:

 

这样就不会让你的电脑所有流量都绕道服务器了。

然后是客户端配置文件的修改,右键右下角的OpenVPN客户端图标,选择“编辑配置文件”,打开配置文件内容:

像修改本机代码一样修改远端服务器的PHP网站  第3张

同样在这一句前面加上;

这是禁用防DNS泄露,如果没有注释掉的话原来的意思是所有域名解析也都从服务器的DNS走,现在openvpn客户端重新连接一次,使用VPN+SMB+网络驱动器映射就可以简单地在你自己电脑上操作服务器文件了。小修改不用麻烦地用上传下载工具折腾了,一个ctrl+s就把改动直接存到服务器,浏览器打开服务器域名直接F5看修改效果,调试OAUTH和各种在线的插件也方便多了。

如果是阿里云的centos服务器 还需要先关闭firewalld防火墙 systemctl disable firewalld.然后在服务器的安全组里开通1194或者你安装时候设置的openvpn端口


这个方法只适用于小修改,如果是涉及到数据库之类东西或者新的模块,建议还是弄一个本地镜像来。

希望能给你的工作带来一些方便,我是费了一天左右的功夫搞定开OPENVPN同时走本地流量上网的问题,不过中途也学习了一下路由表之类的知识,虽然最后发现只需要改这两个配置就不必折腾路由表,OPENVPN的客户端会自动搞定繁复的底层操作,也算是塞翁失马了。

 

另外如果服务器开启了防火墙 记得放行你设置的OPENVPN的端口号 还有SAMBA服务端口号 SAMBA服务的端口号默认是445

 

如果您看完本篇觉得有用请点个收藏,还可以到我的网站数语在线软件IT板块获取更多技术和工具的交流分享:

https://www.shuyu.online/forum.php?gid=37

 

相关连接汇总:

samba服务安装配置: https://www.jianshu.com/p/0d8f44d1b9ed

一键openvpn安装脚本: https://segmentfault.com/a/1190000019471008



点击数:108


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。