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

posted @ 2020-08-06 15:08  niniHan  阅读(1025)  评论(0编辑  收藏  举报