将带有任何 Web 服务器(例如 nginx)的静态 AngularJS 网站打包到单个 rpm 包中

Packing a static AngularJS website with any web server (e.g. nginx) into a single rpm package

非常感谢所有回复的人:)

I have no experience building rpm packages with such requirements

几天来,我无法完成 将 Web 服务器打包成一个 rpm 包 静态网站 (AngularJS) 的任务。可以在任何 rhel/centos 服务器上安装和接收现成的站点。

我做了什么。

%{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/nginx
%{__mv} $RPM_BUILD_ROOT%{_sysconfdir}/nginx/html $RPM_BUILD_ROOT%{_datadir}/nginx/

我试过使用

cp -r -f %{SOURCE14}/*.* $RPM_BUILD_ROOT%{_datadir}/nginx/html/

%{__install} -D -pm 755 %{SOURCE14}/*.* $RPM_BUILD_ROOT%{_datadir}/nginx/html/

但是在 rpmbuild -bb nginx.spec 之后我在 rpmbuild/BUILD/nginx-1.16.1/html/ 文件夹中没有任何变化,它只包含 index.html 和 50x.html

Pls help me with resolve this task. Where in the spec file I need add my website copy step? What the best way to modify Nginx default.conf? Because I need to add support AngularJS (add servername, HTTP to https rewrite allow some type of fonts and etc)

  1. 您应该从您的网站文件夹创建一个压缩包。这是相关文档 https://rpm-packaging-guide.github.io/#preparing-source-code-for-packaging
  2. 然后您需要更改 %prep 部分。如果您想保留原始 nginx 的 Source0,这将很棘手。文档位于此处:https://rikers.org/rpmbook/node70.html#SECTION03541000000000000000 请参阅“在多源规范文件中使用 %setup”部分

我建议您从头开始创建新的规范文件,而不是修改现有的 nginx 规范文件。通读现有文档,例如:

回到问题的核心。

当你这样做时:

Source14: website

然后 rpmbuild 将只包含目录 - 或者应该,我实际上从未尝试过,每个案例和源代码都只假设一个文件名。通配符在那里不起作用。因此后来 cp -r -f %{SOURCE14}/*.* 不匹配任何东西,因为它扩展到 cp -r -f website/*.* 但文件夹实际上是空的。

如果您尝试这样做:

Source14: website/foo
Source15: website/bar/foo

那么它将 1) 手动工作地狱 2) 不起作用,因为 SourceX 只采用基本名称并期望它出现在 rpmbuild/SOURCES/ 中 - 显然你迟早会发生冲突。因此,您想压缩您的工作。