更新

更新

我需要制作一个新的映像并选择新的 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 包安装了两种类型的设置但只使用了一种。一些问题与此有关。

  1. /etc/init.d/nginx/etc/init/nginx.conf
  2. /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

相关内容