thttpd配置

8 篇文章 0 订阅

小记

笔记

参考博客资料:
https://www.kafan.cn/edu/84512284.html

什么是thttpd

代替Tomcat在ARM上的服务器

配置thttpd

在这里插入图片描述

  • 解压
  • 进入文件夹内
cd thttpd-2.29
  • 执行configure文件
.configure
  • make
  • 运行thttpd

执行

./thttpd -d /usr/local/www -p 80 -c /cgi-bin/\* -u root -nor

其中-d后面跟的是服务器的根目录,-p后面跟的是绑定的端口,-c后面是跟的cgi文件。*是取消通配符的意思,不然系统会自动用该目录下的所有文件代替"*",这样的意思就是根目录下的所有具有可执行权限的文件都为cgi文件

执行

ps aux | grep thttpd

查看是否配置成功
若出现类似
在这里插入图片描述
即成功
注:需要切换root角色进行

我在搞的时候,在根目录放了一个不可执行的index.html文件,导致疯狂报403错误,我还以为配置错了,make的时候报警告错误但是可以执行。

将代码解压后,根目录中有个configure文件,执行./configure生成Makefile,然后make一下即可生成thttpd可执行文件。若该程序要运行在嵌入式设备上,需要将Makefile文件中的编译器从默认的gcc改为适合该嵌入式设备的交叉编译器,需要改的Makefile文件有3个,即./Makefile、./cgi-src/Makefile和./extras/Makefile。对于某些thttpd版本,make可能会失败,提示getline函数与系统冲突,这里需要改一下./extras/htpasswd.c中的getline函数,将它重命名(一般改为get_line),以及将该文件内调用它的地方重命名,就行了。

su   //切换root

查看一下ip信息

ifconfig

在这里插入图片描述

涉及到有关Linux修改文件权限的操作:
https://www.cnblogs.com/mmx8861/p/9330991.html

主要的代码:
如果是修改文件夹及子文件夹权限可以用

  chmod -R 777 /var/home/userid/cc
thttpd的语法详解
./thttpd -d /usr/local/www/ -p 80 -c \* -u root -nor

在这里插入图片描述

选项基本介绍:

-C 指定一个可读的配置文件,可以在其中设置选项。使用一个配置文件的优势是,文件能被改变而且 thttpd将根据新的配置重新启动。 配置文件的语法很简单, 一系列的被空格分开的选项或"选项=值",选项名字和他们对应的指令行标志将被一起列出。

-p 设定一个交互的端口数字来监听,默认值是80 ,这一标志在配置文件中的选项名字是 " port ",在config.h中选项是是 DEFAULT_PORT

-d 对 chdir()指定一个目录,服务器的根目录,用来启动进程。这只是为了提供一个便捷方式,你也可以在shell 脚本中写一个命令来唤醒进程 这一面标志在c配置文件中的选项名字是" dir",在config.h 选项是WEBDIR USE_USER_DIR 。

-r 在初始化值时执行 chroot()能够限制文件访问程序的当前目录。如果 - r 是在默认下编译的,那么-nor 可以使其失效。-nor 可以限制文件访问程序的当前目录。这一标志在配置文件中的选项名字是 " chroot" 和 " nochroot",在 config.h文件中 选项是 ALWAYS_CHROOT

-dd 用来指定一个目录执行chdir(),如果你还没有chrooting, 你可以在-d标志后加上单一的chdir(),如果已经chrooting则可以把网页文件放入子目录,而不把它们和chroot tree混在一起。这一标志在配置文件中的选项名字是 " data_dir" 。

-nos 不要做显式的软链接检查。 通常情况下, thttpd 显式地在文件名中扩展了所有的软链接,以此来 检查驻留在初始文件树里的最终路径。 如果你想要避开这些检查而节省一些处理器时间,你就可以使用-nos标志,尽管这并不被推荐。但是,注意,如果你正在使用 chroot 选项,那么对软链接的检查就是不必要的因而被停止了 , 因此节省那些处理器时钟周期的保险办法是使用 chroot 。 这一标志在配置文件中的选项名字是 " symlinkcheck" 和 " nosymlinkcheck" 。

-v 做小开销的虚拟动作,如果-v是在编译时缺省配置的,那么-nov可以使其失效,下面有详细介绍。这一标志的 config- file的选项名字是 " vhost" 和 " novhost", config.h 选项是 ALWAYS_VHOST 。

-g 使用全局密码文件。这意味着,在这个目录树下的每个文件都是被在树顶部的单独.htpasswd文件所保护的。不管怎样,.htpasswd文件的语义是相同的。如果该选项被设置了,但在目录顶层却没有.htpasswd文件的话,那么thttpd进程可能没有被事先设置成一个局部.htpasswd文件,而且,如果这个也不存在的话,那么就表示该文件是没有任何密码的。如果-g被缺省编译了,那么-nog可以使其失效。这个标志在配置文件中的选项名是"globalpasswd"和"noglobalpasswd",在config.h中 的可选项是ALWAYS_GLOBAL_PASSWD。

-u 指定当以root初始启动程序后切换到哪一个使用者。默认值是 " nobody “。这一标志在配置文件中的选项名字是 " user”,在config.h中是DEFAULT_USER 。
-c 为 CGI 指定一个通配符, 举例来说如 “*.cgi"或 “/cgi-bin/”。这一标志在配置文件中的选项名字是 " cgipat”,在config.h 中是 CGI_PATTERN 。

-t 指定一个文件来结束设置。细节如下。这一标志在配置文件中的选项名字是 " throttles "

-h 为多用户环境指定一个绑定的主机名。缺省情况是,把所有的主机都绑定在本地机器上。下面是详细介绍。这一标志在配置文件中的选项名字是 " host ",在 config.h中是 SERVER_NAME 。

-l 指定一个日志文件。如果-l参数没有被指定,那么thttpd通过syslog()进行日志记录。如果"-l /dev/null"被指定了,那么thttpd就不会再进行日志记录了。这个标志的配置文件选项名是"logfile"。

-I 指定一个写进程号的文件。如果没有文件被指定,那么就没有进程号被写入了。你可以使用这个文件给thttpd发送信号。看下面的详细介绍;这一标志在配置文件中的选项名字是 " pidfile" 。

-T 指定一个使用MIME文本类型的字符集。缺省情况是iso-8859-1。这个标志在配置文件中的选项名是"charset",在config.h 中是DEFAULT_CHARSET。

-P 指定一个能够返回所有响应的P3P秘密服务头。

-M 指定秒钟数,在"Cache-Control: max-age"环境下被使用。对于所有的响应,头部被返回。一个与此等价的"终止"头部也随之生成。缺省情况是没有Cache控制 或者终止头部,这对大多数网站来说,是非常理想的。这个标志的配置文件选项名是"max_age"。

-V 表示现在的版本信息

-D 这个标志最初仅仅用来作为一个调试标志,但是,在这里仍然有提一下的价值。因为它
所做的这些事情的其中一件是阻止thttpd在后台自我复制。取而代之的是它象一个正规程序一样地在前台运行。在一些shell脚本中,你希望如果被封装的thttpd存在的话,它就会重启,如果你想运行这样的thttpd,应用这个标志是很有必要的。

连接设备的方式
  • 网线
  • Xshell、Xftp使用IP、用户名密码远程连接

了解一下交叉编译时讲的什么东西

这里有一篇讲GCC编译器和交叉编译的博客:
https://blog.csdn.net/lyd0813/article/details/89520716

这是一篇讲Linux系统下编译c文件的博客:
https://blog.csdn.net/qq_43645229/article/details/83868795

gcc hello.c -o hello

输入命令:gcc Hello.c -o hello,gcc是编译c文件的命令,若是.cpp文件则用g++,-o后面的hello就是可执行的文件名(可随意起一个filename);
在这里插入图片描述运行可执行的hello文件

./hello

输入命令:./hello,“./”是运行可执行文件的命令
在这里插入图片描述
这里有一篇关于c文件和h文件的关系与区别的博客:
https://www.cnblogs.com/gaobo543013306/p/10144854.html
我摘取其中主要的内容:
编译器的几个基本过程:

1.预处理阶段
2.词法与语法分析阶段
3.编译阶段 =》 生成各个目标文件
4.连接阶段 =》 各个目标文件之间绝对地址定位 =》 生成可执行文件

编译器在编译时是以c文件为单位进行的,也就是说如果你的项目中一个c文件都没有,那么你的项目将无法编译

编译器以C文件作为一个单元,首先读这个C文件,发现第一句与第二句是包含.h文件,就会在所有搜索路径中寻找这两个文件,找到之后,就 会将相应.h文件中再去处理宏,变量,函数声明,嵌套的.h文件包含等

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值