我需要制作一个新的映像并选择新的 16.04 ubuntu,这样我就可以获取一些软件包的较新版本,而不必从源代码安装。到目前为止,我很后悔这个决定,因为在线文档很少。
使用 12.04 和 14.04,我经常能够重新利用启动脚本进行自定义编译,方法是安装一个包,然后删除(而不是清除)它,以创建 ubuntu 启动脚本。然后我只需编辑它们以指向正确的配置文件和二进制文件即可。
例如,要使用最新的 openresty,我可以这样做:
apt-get install nginx
apt-get remove nginx
然后我只需更新/etc/init.d/nginx
脚本以指向我的自定义二进制文件/配置文件,我就有了一个令人满意的 ubuntu 启动脚本。太棒了!
此方法不再适用于 16.04。
我已经编辑:
/etc/init.d/nginx
/etc/init/nginx.conf
/lib/system.d/system/nginx.service
ubuntu 从不提取我的二进制文件(位于 中/usr/local/openresty/nginx/sbin/nginx
)。它总是/sbin/nginx
在启动时运行(我最初忘记卸载“nginx-core”)或根本不运行。其他软件包也是如此。
Ubuntu 的从 upstart 转换的文档缺乏这方面的介绍,他们关注的是“启动停止”。
我有不知道ubuntu 决定了这一点。我找不到任何指向的配置文件/sbin/nginx
。没有日志帮助。我遇到的每个潜在文件都指向备用二进制文件和配置。
如果有人可以分享有关使用新启动系统以及其查找/存储信息的位置的良好资源,我将不胜感激。
似乎有一个数据库参与其中,因为它检测到文件更改并要求我重新加载 - 但我还没有找到它。
更新
经过一番尝试后,我得出了以下结论:
看来 nginx 包安装了两种类型的设置但只使用了一种。一些问题与此有关。
/etc/init.d/nginx
和/etc/init/nginx.conf
/lib/systemd/system/nginx.service
和/etc/systemd/system/nginx.service
通过反复试验: * 运行systemctl disable nginx.service
以禁用/删除大多数链接和文件 * 删除 /etc/systemd/system/nginx.service 中的文件(如果存在) * 在 /lib/systemd/system/nginx.service 中放置一个新文件 * 运行systemctl enable nginx.service
/lib/systemd/system/nginx.service 中的文件必须是一个文件;它不能是符号链接(否则会出现太多符号链接错误)
目前看来这可行。我希望我可以使用符号链接,因为这些文件与版本控制相关。
答案1
您能否为您的自定义安装创建一个新服务,然后使其自动启动?
[Unit]
Description=Jonathan Vanasco nginx
[Service]
ExecStart=STARTUP COMMAND YOU WANT FOR CUSTOM
[Install]
WantedBy=multi-user.target
然后检查它是否启动:
systemctl start NAMEOFCUSTOM.service
然后设置为开机自动启动:
systemctl enable NAMEOFCUSTOM.service