RPM 패키지 수정, 재 포장

3095 단어 linuxnginx
프로젝트 가 필요 합 니 다. nginx 를 다시 컴 파일 하고 모듈 을 추가 해 야 합 니 다. rpm 패 키 지 를 생 성 해 야 합 니 다. 이 인터넷 바 이 너 리 nginx rpm 패 키 지 는 이 rpm 패키지 에 따라 spec 파일 을 수정 하고 다시 포장 하면 됩 니 다.구체 적 인 절 차 는 다음 과 같다.
1. 관련 도구 설치, 주로 rpmbuild 등 관련 도구 설치
   https://sourceforge.net/projects/rpmrebuild/files/rpmrebuild/2.12-1/  :
wget https://jaist.dl.sourceforge.net/project/rpmrebuild/rpmrebuild/2.14/rpmrebuild-2.14.tar.gz
tar -zxvf rpmrebuild-2.14.tar.gz
make && make install

yum install -y  rpm-build  rpmdevtools

1. nginx rpm 패키지 다운로드
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

3. rpm 패키지 의 spec 파일 을 추출 합 니 다. 구체 적 인 명령 은:
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
./rpmrebuild.sh -s /root/rpmbuild/SPECS/nginx.spec nginx-release-centos-7-0.el7.ngx.noarch

4. 원본 RPM 패키지 의 압축 해제, 구체 적 인 명령 은 다음 과 같 습 니 다:
cd /root/rpmbuild/BUILDROOT/
mkdir -p nginx-1.16.2-1.el7_4.ngx.x86_64 --       rpm 
cd nginx-1.16.2-1.el7_4.ngx.x86_64
cp -rf xx/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm .
rpm2cpio *.rpm | cpio -idv --     RPM ,              RPM      

5. 필요 에 따라 rpm 압축 해제 파일 을 변경 하고 해당 하 는 spec 파일 을 수정 하 며 수정 이 완료 되면 /root / rpmbuild / SPECS / 명령 실행:
rpmbuild -ba nginx.spec

6. 대응 하 는 RPM 디 렉 터 리 에서 다시 생 성 된 RPM 패 키 지 를 볼 수 있 습 니 다. 예 를 들 어 / root / rpmbuild / RPMS / x8664/
7. 대응 하 는 rpm 패 키 지 를 centos 7 장치 에 설치 한 다음 에 service nginx start 를 실행 하면 시작 할 수 있 습 니 다. 제 가 시작 하 는 과정 에서 문제 가 발생 하여 nginx 를 시작 할 수 없습니다. 구체 적 인 로 그 는 다음 과 같 습 니 다.
[root@localhost ~]# systemctl status nginx.service
● nginx.service - nginx - high performance est proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since   2019-12-13 17:42:03 CST; 7s ago
     Docs: http://nginx.org/en/docs/
  Process: 5838 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)

12  13 17:42:03 localhost.localdomain systemd[1]: Starting nginx - high performance est proxy server...
12  13 17:42:03 localhost.localdomain nginx[5838]: nginx: [emerg] bind() to 0.0.0.0:5900 failed (13: Permission denied)
12  13 17:42:03 localhost.localdomain systemd[1]: nginx.service: control process exited, code=exited status=1
12  13 17:42:03 localhost.localdomain systemd[1]: Failed to start nginx - high performance est proxy server.
12  13 17:42:03 localhost.localdomain systemd[1]: Unit nginx.service entered failed state.
12  13 17:42:03 localhost.localdomain systemd[1]: nginx.service failed.

이 문 제 는 주로 UDP 5900 을 수사 하고 systemctl 은 selinux 를 가 며 selinux 는 UDP 5900 을 제한 하여 nginx 가 권한 이 없 으 면 selinux 를 닫 으 면 됩 니 다. 구체 적 인 명령 은:
    selinux
 setenforce 0

    selinux
[root@localhost ~]# vim /etc/sysconfig/selinux
SELINUX=enforcing    SELINUX=disabled
    reboot

이로써 nginx 는 정상적으로 시작 할 수 있 습 니 다. 또한 systemctl list - unit - files 를 통 해 모든 시작 항목 을 확인 하고 시작 여 부 를 확인 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기