Debian Stretch环境下手动编译最新版lighttpd 1.4.49求助
没问题,我帮你梳理Debian Stretch上手动编译lighttpd 1.4.49的完整流程,完美避开升级到测试版Buster的麻烦~
1. 安装编译依赖
首先得把编译所需的基础工具和依赖包装全,不然配置环节容易报错。执行下面的命令:
sudo apt update sudo apt install build-essential libpcre3-dev libssl-dev libbz2-dev libz-dev libmysqlclient-dev libsqlite3-dev libfcgi-dev
这些是lighttpd常用模块的依赖,要是你不需要某些模块(比如数据库相关),可以去掉对应的包,但建议全装省得后续折腾。
2. 进入源码目录
切换到你已经解压好的lighttpd源码文件夹,比如假设你解压到了~/lighttpd-1.4.49:
cd ~/lighttpd-1.4.49
3. 配置编译选项
用./configure生成编译所需的Makefile。这里推荐指定安装路径(比如/usr/local/lighttpd),这样新编译的版本不会覆盖系统自带的lighttpd,避免冲突。要是你想直接替换系统自带的,也可以用默认路径(一般是/usr/local)。
下面是基础配置命令,启用了SSL、FastCGI和访问日志这些常用模块,你可以根据自己的需求调整:
./configure --prefix=/usr/local/lighttpd --enable-ssl --enable-fastcgi --enable-accesslog
运行完这个命令后,它会自动检查依赖,如果有缺失会提示,你再对应安装缺失的包就行。
4. 编译源码
开始编译,用-j$(nproc)可以调用所有CPU核心加速编译,要是你机器核心少,直接用make也没问题:
make -j$(nproc)
5. 安装到系统
编译完成后,把程序安装到指定路径:
sudo make install
6. 配置systemd服务
因为原来的lighttpd是系统包管理的,现在手动编译的版本需要自己配置服务来实现开机启动和进程管理。
首先停止并禁用原来的lighttpd服务:
sudo systemctl stop lighttpd sudo systemctl disable lighttpd
然后创建新的systemd服务文件:
sudo nano /etc/systemd/system/lighttpd-local.service
把下面的内容粘贴进去:
[Unit] Description=Lighttpd Web Server (locally compiled) After=network.target [Service] Type=forking ExecStart=/usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/etc/lighttpd/lighttpd.conf ExecReload=/usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/etc/lighttpd/lighttpd.conf -t && kill -HUP $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
保存退出后,重新加载systemd:
sudo systemctl daemon-reload
7. 迁移/配置配置文件
把原来的配置文件复制到新的路径,记得检查里面的路径(比如日志目录、网站根目录)是否和新的安装路径匹配:
sudo cp /etc/lighttpd/lighttpd.conf /usr/local/lighttpd/etc/lighttpd/ # 可以用nano打开配置文件检查并修改路径:sudo nano /usr/local/lighttpd/etc/lighttpd/lighttpd.conf
8. 启动并验证
最后启动新的lighttpd服务并设置开机自启:
sudo systemctl start lighttpd-local sudo systemctl enable lighttpd-local
验证版本是否正确:
/usr/local/lighttpd/sbin/lighttpd -v
正常的话会显示lighttpd/1.4.49 - a light and fast webserver。
小提醒
手动编译的软件不会像系统包那样自动更新,以后需要升级的话得重复上面的步骤;另外,后续系统升级的时候要注意不要覆盖相关依赖,尽量保持系统稳定。
内容的提问来源于stack exchange,提问作者thefolenangel

