ubuntu上如何移植thttpd

thttpd的特点

thttpd 是一个简单、小巧、便携、快速且安全的 HTTP 服务器。

简单:
它只处理实现 HTTP/1.1 所需的最低限度。好吧,也许比最低限度多一点。
小:
请参阅比较图表。它还具有非常小的运行时大小,因为它不会分叉并且非常小心内存分配。
便携式:
它可以在大多数类Unix操作系统上干净地编译,特别是包括FreeBSD,SunOS 4,Solaris 2,BSD / OS,Linux,OSF。
快:
在典型使用中,它与最好的全功能服务器(Apache、NCSA、Netscape)一样快。在极端负载下,它的速度要快得多。
安全:
它竭尽全力保护 Web 服务器计算机免受来自其他站点的攻击和破坏。
它还具有一个非常有用的功能(基于 URL 流量的限制),这是其他服务器目前没有的。此外,它还支持开箱即用的 IPv6,无需打补丁。

下载thttpd源码

thttpd (acme.com)icon-default.png?t=N7T8https://www.acme.com/software/thttpd/#releasenotes

编译安装

root@ubuntu:/home/app/thttpd# make
root@ubuntu:/home/app/thttpd# make install
mkdir -p /usr/local/sbin
/usr/bin/install -c -m 555 -o bin -g bin thttpd /usr/local/sbin
mkdir -p /usr/local/man/man8
/usr/bin/install -c -m 444 -o bin -g bin thttpd.8 /usr/local/man/man8
for i in cgi-src extras ; do ( \
        cd $i ; \
        pwd ; \
        make  \
        WEBDIR=/usr/local/www \
        CGIBINDIR=/usr/local/www/cgi-bin \
        MANDIR=/usr/local/man \
        WEBGROUP=www \
        install \
    ) ; done
/home/app/thttpd/cgi-src
make[1]: Entering directory `/home/app/thttpd/cgi-src'
mkdir -p /usr/local/www/cgi-bin
rm -f /usr/local/www/cgi-bin/redirect
cp redirect /usr/local/www/cgi-bin/redirect
rm -f /usr/local/man/man8/redirect.8
cp redirect.8 /usr/local/man/man8/redirect.8
rm -f /usr/local/www/cgi-bin/ssi
cp ssi /usr/local/www/cgi-bin/ssi
rm -f /usr/local/man/man8/ssi.8
cp ssi.8 /usr/local/man/man8/ssi.8
rm -f /usr/local/www/cgi-bin/phf
cp phf /usr/local/www/cgi-bin/phf
make[1]: Leaving directory `/home/app/thttpd/cgi-src'
/home/ /app/thttpd/extras
make[1]: Entering directory `/home/app/thttpd/extras'
rm -f /usr/local/sbin/makeweb /usr/local/sbin/htpasswd /usr/local/sbin/syslogtocern
cp makeweb /usr/local/sbin/makeweb
chgrp www /usr/local/sbin/makeweb
chgrp: invalid group: ‘www’
make[1]: *** [install] Error 1
make[1]: Leaving directory `/home/ /app/thttpd/extras'
make: *** [installsubdirs] Error 2

遇到报错,别着急

解决方法:
root@ubuntu:/home/app/thttpd# cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,tina
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:tina
floppy:x:25:
tape:x:26:
sudo:x:27:tina
audio:x:29:pulse
dip:x:30:tina
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:
sasl:x:45:
plugdev:x:46:tina
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
libuuid:x:101:
netdev:x:102:
crontab:x:103:
syslog:x:104:
fuse:x:105:
messagebus:x:106:
ssl-cert:x:107:
lpadmin:x:108:tina
scanner:x:109:saned
mlocate:x:110:
ssh:x:111:
utempter:x:112:
avahi-autoipd:x:113:
rtkit:x:114:
saned:x:115:
whoopsie:x:116:
avahi:x:117:
lightdm:x:118:
nopasswdlogin:x:119:
bluetooth:x:120:
colord:x:121:
pulse:x:122:
pulse-access:x:123:
tina:x:1000:
sambashare:x:124:tina
ftp:x:125:
_cvsadmin:x:126:
tftp:x:127:
root@ubuntu:/home/app/thttpd# addgroup www
Adding group `www' (GID 1001) ...
Done.

root@ubuntu:/home/app/thttpd# cat /etc/group
www:x:1001:
----------------------------------------------------------------
root@ubuntu:/home/app/thttpd# make install
mkdir -p /usr/local/sbin
/usr/bin/install -c -m 555 -o bin -g bin thttpd /usr/local/sbin
mkdir -p /usr/local/man/man8
/usr/bin/install -c -m 444 -o bin -g bin thttpd.8 /usr/local/man/man8
for i in cgi-src extras ; do ( \
        cd $i ; \
        pwd ; \
        make  \
        WEBDIR=/usr/local/www \
        CGIBINDIR=/usr/local/www/cgi-bin \
        MANDIR=/usr/local/man \
        WEBGROUP=www \
        install \
    ) ; done
/home/app/thttpd/cgi-src
make[1]: Entering directory `/home/app/thttpd/cgi-src'
mkdir -p /usr/local/www/cgi-bin
rm -f /usr/local/www/cgi-bin/redirect
cp redirect /usr/local/www/cgi-bin/redirect
rm -f /usr/local/man/man8/redirect.8
cp redirect.8 /usr/local/man/man8/redirect.8
rm -f /usr/local/www/cgi-bin/ssi
cp ssi /usr/local/www/cgi-bin/ssi
rm -f /usr/local/man/man8/ssi.8
cp ssi.8 /usr/local/man/man8/ssi.8
rm -f /usr/local/www/cgi-bin/phf
cp phf /usr/local/www/cgi-bin/phf
make[1]: Leaving directory `/home/app/thttpd/cgi-src'
/home/ /app/thttpd/extras
make[1]: Entering directory `/home/app/thttpd/extras'
rm -f /usr/local/sbin/makeweb /usr/local/sbin/htpasswd /usr/local/sbin/syslogtocern
cp makeweb /usr/local/sbin/makeweb
chgrp www /usr/local/sbin/makeweb
chmod 2755 /usr/local/sbin/makeweb
cp htpasswd /usr/local/sbin/htpasswd
cp syslogtocern /usr/local/sbin/syslogtocern
rm -f /usr/local/man/man1/makeweb.1
cp makeweb.1 /usr/local/man/man1/makeweb.1
cp: cannot create regular file ‘/usr/local/man/man1/makeweb.1’: No such file or directory
make[1]: *** [install] Error 1
make[1]: Leaving directory `/home/app/thttpd/extras'
make: *** [installsubdirs] Error 2
root@ubuntu:/home/app/thttpd# cd /usr/local/thttpd/man/
bash: cd: /usr/local/thttpd/man/: No such file or directory

又有报错了,别着急。
解决方法:
root@ubuntu:/usr/local/man# mkdir -p man1

root@ubuntu:/home/app/thttpd# make install
mkdir -p /usr/local/sbin
/usr/bin/install -c -m 555 -o bin -g bin thttpd /usr/local/sbin
mkdir -p /usr/local/man/man8
/usr/bin/install -c -m 444 -o bin -g bin thttpd.8 /usr/local/man/man8
for i in cgi-src extras ; do ( \
        cd $i ; \
        pwd ; \
        make  \
        WEBDIR=/usr/local/www \
        CGIBINDIR=/usr/local/www/cgi-bin \
        MANDIR=/usr/local/man \
        WEBGROUP=www \
        install \
    ) ; done
/home/app/thttpd/cgi-src
make[1]: Entering directory `/home/app/thttpd/cgi-src'
mkdir -p /usr/local/www/cgi-bin
rm -f /usr/local/www/cgi-bin/redirect
cp redirect /usr/local/www/cgi-bin/redirect
rm -f /usr/local/man/man8/redirect.8
cp redirect.8 /usr/local/man/man8/redirect.8
rm -f /usr/local/www/cgi-bin/ssi
cp ssi /usr/local/www/cgi-bin/ssi
rm -f /usr/local/man/man8/ssi.8
cp ssi.8 /usr/local/man/man8/ssi.8
rm -f /usr/local/www/cgi-bin/phf
cp phf /usr/local/www/cgi-bin/phf
make[1]: Leaving directory `/home/app/thttpd/cgi-src'
/home/app/thttpd/extras
make[1]: Entering directory `/home/app/thttpd/extras'
rm -f /usr/local/sbin/makeweb /usr/local/sbin/htpasswd /usr/local/sbin/syslogtocern
cp makeweb /usr/local/sbin/makeweb
chgrp www /usr/local/sbin/makeweb
chmod 2755 /usr/local/sbin/makeweb
cp htpasswd /usr/local/sbin/htpasswd
cp syslogtocern /usr/local/sbin/syslogtocern
rm -f /usr/local/man/man1/makeweb.1
cp makeweb.1 /usr/local/man/man1/makeweb.1
rm -f /usr/local/man/man1/htpasswd.1
cp htpasswd.1 /usr/local/man/man1/htpasswd.1
rm -f /usr/local/man/man8/syslogtocern.8
cp syslogtocern.8 /usr/local/man/man8/syslogtocern.8
make[1]: Leaving directory `/home/app/thttpd/extras'

配置


root@ubuntu:/home/app/thttpd# cat thttpd.conf 
# This section overrides defaults
#chroot
# This section _documents_ defaults in effect
# port=80
port=888
# nosymlink# default = !chroot
# novhost
# nocgipat
# nothrottles
# host=0.0.0.0
# charset=iso-8859-1
#dir=.
dir=/home/app/www
#cgipat=/*.cgi
cgipat=/cgi/*.cgi
logfile=/tmp/thttpd.log
pidfile=/var/run/thttpd.pid
#user=root

启动服务


thttpd -C thttpd.conf -d /home/app/www/ -u root -l /var/log/test_httpd.log

或者
thttpd -C thttpd.conf -l /var/log/test_httpd.log
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/139627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MapReduce编程——矩阵乘法(Python版本)

数据格式 对于矩阵元素 A i j A_{ij} Aij​&#xff0c;将其处理为 < i , j , M a t r i x N a m e , v a l u e > <i,j,MatrixName,value> <i,j,MatrixName,value>的四元组格式&#xff0c;例如矩阵[[2, 1, 3, 4], [10, -8, 7, 2], [9, 1, 6, -2]]可被转化…

牛客网刷题笔记131111 Python实现LRU+二叉树先中后序打印+SQL并列排序

从学校步入职场一年多&#xff0c;已经很久没刷过题了&#xff0c;为后续稍微做些提前的准备&#xff0c;还是重新开始刷刷题。 从未做过计划表&#xff0c;这回倒是做了个计划表&#xff0c;希望能坚持吧。 刷题比较随性且量级不大&#xff0c;今天就写了2个算法2个sql&#x…

LeetCode257. Binary Tree Paths

文章目录 一、题目二、题解 一、题目 Given the root of a binary tree, return all root-to-leaf paths in any order. A leaf is a node with no children. Example 1: Input: root [1,2,3,null,5] Output: [“1->2->5”,“1->3”] Example 2: Input: root […

uniapp本地存储的几种方式

在UniApp中&#xff0c;你可以使用本地存储来保存和获取数据&#xff0c;以便在应用的不同页面之间共享数据或在应用关闭后仍然保存数据。UniApp提供了两种主要的本地存储方式&#xff1a;uni.setStorage 和 uni.getStorage&#xff0c;以及 uni.removeStorage 用于删除数据。这…

无需公网IP,贝锐花生壳内网穿透远程访问NAS

群晖DSM 7.0及以上版本 1.1 安装运行花生壳套件 &#xff08;1&#xff09;通过浏览器输入群晖NAS的内网地址&#xff0c;登录进去后&#xff0c;点击【套件中心】&#xff0c;搜索【花生壳】&#xff0c;并点击【安装套件】&#xff1b; &#xff08;2&#xff09; 勾选我接…

ZooKeeper基本知识

1.什么是ZooKeeper ZooKeeper是一个开源的分布式协调服务&#xff0c;它提供了一个高性能、高可靠的分布式协调基础&#xff0c;用于构建分布式系统。 具体来说&#xff0c;ZooKeeper通常用于以下几个方面&#xff1a; 配置管理&#xff1a;分布式系统通常需要集中管理配置信…

Java设计模式-创建者模式-单例模式

单例模式 单例模式饿汉式懒汉式 单例模式 解释&#xff1a;一个类只能有一个实例 单例模式可以分为两种 饿汉式 和 懒汉式 饿汉式 也被称为预加载&#xff0c;即 在加载类的时候&#xff0c;就将实例创建出来&#xff0c;加载到内存&#xff0c;不管之后会不会使用这个实例 …

Jvm虚拟机

问题&#xff1a; 计算机能识别的语言是二进制&#xff0c;Java文件是程序员编写的&#xff0c;如何能够在计算机上运行&#xff1f; 以及Java为什么可以实现跨平台&#xff1f; 一Java的jdk中有jvm虚拟机 可以将文件转换为字节码文件 使得它可以在各种平台上运行&#xff0c;这…

Openlayers:自定义Controls

Openlayers是一款优秀的二维开源地图框架,支持矢量/栅格图层,支持移动端,并且易于自定义和拓展。下面来讲述一下自定义Control的基本思路。 openlayers-features 问题描述 最近在做个人项目时,遇到了一个小问题,就是在地图中心添加一个十字针形状的符号,用来表示地图中心…

Java入门篇 之 补 类与对象

本篇碎碎念&#xff1a;每个人的想法都不一样&#xff0c;不要强求&#xff0c;顺其自然&#xff0c;要相信&#xff0c;一切都在向好的方面前进&#xff01;&#xff01;&#xff01;&#xff01; 今日份励志文案:山海的浩瀚&#xff0c;宇宙的浪漫&#xff0c;都在我内心翻腾…

LeetCode200.岛屿数量

看完题目我还感觉这道题目有点难&#xff0c;没想到20分钟不到就完全靠自己给写出来了。我就是按照自己的想法来&#xff0c;我用一个等大的visit数组来表示grid数组中的这个元素是否被访问过&#xff08;是否已经被判断了是不是岛屿&#xff09;。 先用一个大的循环对grid数组…

贝锐蒲公英X1解决远程访问NAS难题

由于经常在外出差和旅游&#xff0c;需要实现即使在外地也能远程登录回去家里的NAS去处理事情或传输文件&#xff0c;因此解决方案之一是搭建一个安全简易的个人私有云。 实施难度 &#xff08;1&#xff09;家庭网络无公网IP&#xff0c;且公网IP价格昂贵&#xff08;2&…

Django的ORM操作

文章目录 1.ORM操作1.1 表结构1.1.1 常见字段和参数1.1.2 表关系 2.ORM2.1 基本操作2.2 连接数据库2.3 基础增删改查2.3.1 增加2.3.2 查找2.3.4 删除2.3.4 修改 1.ORM操作 orm&#xff0c;关系对象映射&#xff0c;本质翻译的。 1.1 表结构 实现&#xff1a;创建表、修改表、…

Python用requests库采集充电桩LBS位置经纬度信息

这是一个使用Python的requests库来爬取网页内容的示例。首先&#xff0c;我们需要导入requests库。然后&#xff0c;我们需要定义一个函数来处理请求。在这个函数中&#xff0c;我们需要设置爬虫IP服务器的URL和端口号&#xff0c;然后使用requests.get来获取网页内容。最后&am…

GoF之代理模式

2023.11.12 代理模式是GoF23种设计模式之一&#xff0c;其作用是&#xff1a;为其他对象提供一种代理以控制对这个对象的访问。在某些情况下&#xff0c;一个客户不想或者不能直接引用一个对象&#xff0c;此时可以通过一个称之为“代理”的第三者来实现间接引用。代理对象可以…

JavaScript理解表达式和语句的含义

JavaScript中的表达式和语句都是用于完成特定计算或操作的语言构件&#xff0c;但它们有着不同的含义和用途&#xff1a; 表达式(expression)是用来计算并返回一个值的代码片段&#xff0c;可以包含变量、数值、函数调用、运算符等。表达式的运算结果可以被赋值给变量、作为函数…

FlinK之检查点与保存点机制

检查点与保存点 检查点Checkpoint概述保存时机保存与恢复检查点算法 检查点配置启用检查点指定存储位置其它配置通用增量 保存点Savepoint概述使用保存点切换状态后端 SQL客户端中操作提交作业触发恢复 检查点Checkpoint 概述 在 Flink 中&#xff0c;检查点是用于实现状态一致…

状态图和活动图的含义及其区别

状态图主要用于描述一个对象在其生存期间的动态行为&#xff0c;表现一个对象所经历的状态序 列&#xff0c;引起状态转移的事件(event)&#xff0c;以及因状态转移而伴随的动作(action)。 活动图可以用于描述系统的工作流程和并发行为。活动图其实可看作状态图的特殊形 式&am…

解决springboot接受buffer文件为null(从picgo上传buffer看springmvc处理过程)

1. 前言&#xff1a; picgo插件的简单开发 上篇文章我们简单写了picgo上传插件&#xff0c;但是当我们测试的时候&#xff0c;发现问题了&#xff0c;后端MultipartFile file接受到的文件为null。 2. 排查问题&#xff1a; 参考的文档 picgo api列表关于multipart form-data中…

redis 问题解决 2

1.4 数据存储 1、Redis 的数据过期策略是什么? Redis的数据过期策略包括两种机制:被动删除和主动删除。 被动删除: 当某个键被访问时,如果发现这个键已经过期,Redis会立即删除这个键。这意味着如果一个过期的键从未被访问,它就不会被自动删除。这是一种惰性删除策略。主…