将带有任何 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 服务器上安装和接收现成的站点。
我做了什么。
- 安装创建 rpmbuild 和创建非 root 用户所需的所有工具
此操作的用户
- rpmdev-setuptree && rpm -Uvh
http://nginx.org/packages/centos/7/SRPMS/nginx-1.16.1-1.el7.ngx.src.rpm
- 将我的网站文件夹复制到 SOURCE
- 编辑rpmbuild/SPECS/nginx.spec
- 添加 Source14: 网站
- 添加到 %install 部分,在
之后
%{__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)
- 您应该从您的网站文件夹创建一个压缩包。这是相关文档 https://rpm-packaging-guide.github.io/#preparing-source-code-for-packaging
- 然后您需要更改
%prep
部分。如果您想保留原始 nginx 的 Source0,这将很棘手。文档位于此处:https://rikers.org/rpmbook/node70.html#SECTION03541000000000000000 请参阅“在多源规范文件中使用 %setup”部分
我建议您从头开始创建新的规范文件,而不是修改现有的 nginx 规范文件。通读现有文档,例如:
- https://rpm-packaging-guide.github.io/
- https://docs.fedoraproject.org/en-US/quick-docs/creating-rpm-packages/index.html
- https://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html-single/RPM_Guide/index.html
回到问题的核心。
当你这样做时:
Source14: website
然后 rpmbuild 将只包含目录 - 或者应该,我实际上从未尝试过,每个案例和源代码都只假设一个文件名。通配符在那里不起作用。因此后来 cp -r -f %{SOURCE14}/*.*
不匹配任何东西,因为它扩展到 cp -r -f website/*.*
但文件夹实际上是空的。
如果您尝试这样做:
Source14: website/foo
Source15: website/bar/foo
那么它将 1) 手动工作地狱 2) 不起作用,因为 SourceX 只采用基本名称并期望它出现在 rpmbuild/SOURCES/ 中 - 显然你迟早会发生冲突。因此,您想压缩您的工作。
非常感谢所有回复的人:)
I have no experience building rpm packages with such requirements
几天来,我无法完成 将 Web 服务器打包成一个 rpm 包 静态网站 (AngularJS) 的任务。可以在任何 rhel/centos 服务器上安装和接收现成的站点。
我做了什么。
- 安装创建 rpmbuild 和创建非 root 用户所需的所有工具 此操作的用户
- rpmdev-setuptree && rpm -Uvh http://nginx.org/packages/centos/7/SRPMS/nginx-1.16.1-1.el7.ngx.src.rpm
- 将我的网站文件夹复制到 SOURCE
- 编辑rpmbuild/SPECS/nginx.spec
- 添加 Source14: 网站
- 添加到 %install 部分,在 之后
%{__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)
- 您应该从您的网站文件夹创建一个压缩包。这是相关文档 https://rpm-packaging-guide.github.io/#preparing-source-code-for-packaging
- 然后您需要更改
%prep
部分。如果您想保留原始 nginx 的 Source0,这将很棘手。文档位于此处:https://rikers.org/rpmbook/node70.html#SECTION03541000000000000000 请参阅“在多源规范文件中使用 %setup”部分
我建议您从头开始创建新的规范文件,而不是修改现有的 nginx 规范文件。通读现有文档,例如:
- https://rpm-packaging-guide.github.io/
- https://docs.fedoraproject.org/en-US/quick-docs/creating-rpm-packages/index.html
- https://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html-single/RPM_Guide/index.html
回到问题的核心。
当你这样做时:
Source14: website
然后 rpmbuild 将只包含目录 - 或者应该,我实际上从未尝试过,每个案例和源代码都只假设一个文件名。通配符在那里不起作用。因此后来 cp -r -f %{SOURCE14}/*.*
不匹配任何东西,因为它扩展到 cp -r -f website/*.*
但文件夹实际上是空的。
如果您尝试这样做:
Source14: website/foo
Source15: website/bar/foo
那么它将 1) 手动工作地狱 2) 不起作用,因为 SourceX 只采用基本名称并期望它出现在 rpmbuild/SOURCES/ 中 - 显然你迟早会发生冲突。因此,您想压缩您的工作。