VMware虚拟机上使用 python -m SimpleHTTPServer 快速搭建http服务
最近在搭一个前端服务器,目的是可以在同一网络下可以共享一些公共组件之类的。
尝试了基于Node.js轻量级HTTP服务器,但是要一直开着命令窗口,要么写个脚本启动,可查看https://www.cnblogs.com/niniHan/p/13434588.html ,支持在浏览器上下载文件,但是觉得不大满足,因为电脑下会多一个执行窗口。因为平时做的前端项目运行依赖虚拟机(搭建了一套开发环境),所以虚拟机是一直都要开着的,所以想在centos下搭个http文件服务器,这样就只用开一个虚拟机就行了
方法一:centos下搭个http文件服务器
我用的是CentOS7
1.可以通过xshell也可以直接在vmware里直接操作
通过yum install httpd
安装httpd,httpd的配置文件是/etc/httpd/conf/httpd.conf
2. cd /var/www/html
通过 ln -s 创建一个软连接, ln -s 目标名 链接名
命令ln -s /opt 也就是
在/var/www/html/ 目录下创建了一个软连接。
说明:linux目录下有个目录:/var/www/html,把文件放到这个目录下就可以通过IP很方便的访问,
如果要访问 /var/www/html/opt,在浏览器地址栏输入 http://[ip]/opt 就可以了。
3.安装好启动一下service httpd start 启动service httpd restart 重新启动service httpd stop 停止服务
这里报错了,因为用的是centos7,所以换用systemctl start httpd启动。
但是在浏览器上只有zip包,软件包之类的才能下载,像一些.vue、.html之类的文件只能在浏览器直接打开,这个不是我想要的,所以又换了种方法
方法二:centos下用 python -m SimpleHTTPServer 快速搭建http服务
由于各种Linux发行版通常都内置了Python,故使用此方法非常方便,只需要一行命令就可完后
1.SimpleHTTPServer是Python 2自带的一个模块,是Python的Web服务器。它在Python 3已经合并到http.server模块中。SimpleHTTPServer在Python 3的用法与在Python 2的用法相似(python3 -m http.server 6789), 这里以Python 2为例。
2.SimpleHTTPServer有一个特性,如果待共享的目录下有index.html,那么index.html文件会被视为默认主页;如果不存在index.html文件,那么就会显示整个目录列表。
这种方法可以在浏览器上直接把文件下载到本地
SimpleHTTPServer使用方法
1.进入待分享的目录
2.执行命令python -m SimpleHTTPServer 端口号
注意:不填端口号则默认使用 8000 端口。
但是这条命令是当前运行的,不是后台运行的,也就是说如果Ctrl + C,则该端口就会关闭。
1). 在上述命令的最后加一个 & ,则该命令产生的进程在后台运行,不会影响当前终端的使用(我们在只有一个bash的环境下)。
python -m SimpleHTTPServer 8000 &
2).生成的新的进程为当前bash的子进程,所以,当我们关闭当前bash时,相应的子进程也会被kill掉,这也不是我们想要的结果。
nohup python -m SimpleHTTPServer 8000 &
在命令的开头加一个nohup,忽略所有的挂断信号,如果当前bash关闭,则当前进程会挂载到init进程下,成为其子进程,这样即使退出当前用户,其8000端口 也可以使用。
3.浏览器访问该主机的地址:http://IP:端口号/
使用中可能会遇到的问题
问题1:做完以上操作后反复检查都没问题,通过访问192.168.111.198:9999就是打不开,后来发现是防火墙在开着,把防火墙关掉就可以了,附上防火墙的命令
1:查看防火状态
systemctl status firewalld
service iptables status
2:暂时关闭防火墙
systemctl stop firewalld
service iptables stop
3:永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off
4:重启防火墙
systemctl enable firewalld
service iptables restart
问题2:切到别的网络又切回来,发现访问不了了,重新执行
python -m SimpleHTTPServer 9999 &发现报了以下错误 socket.error: [Errno 98] Address already in use
方法1:执行netstat -nlp | grep :9999
,查看当前使用该端口的进程,得到进程号sudo kill 进程号即可,然后再执行启动操作
方法2:暴力方法解决,直接killall paython