snap 학습 패키지 Nginx 실천
11779 단어 Snap
다음은 우 분투 16.04 에서 Nginx 포장 을 실천 하기 시작 합 니 다.
1. 소프트웨어 설치 Ubuntu 16.04 자체 snap 과 snapcraft, which 명령 으로 확인 할 수 있 습 니 다.만약 소프트웨어 가 설치 되 지 않 았 다 면, 직접 설치 해라.
sudo apt install snap
sudo apt install snapcraft
snapcraft 도구 도 snap 패키지 버 전 을 직접 설치 할 수 있 습 니 다.
sudo snap install snapcraft --classic
Ubuntu 16.04 자체 테이프 또는 apt 로 설 치 된 snapcraft 버 전이 오래 되 었 습 니 다. 기본적으로 snap base 를 사용 하 는 것 은 core 이 고 snap 로 설 치 된 snapcraft 버 전이 새 롭 습 니 다. 기본 으로 사용 하 는 snap base 는 core 18 입 니 다.실제 실천 에서 저 는 Ubutu 16.04 가 가 져 온 snapcraft 를 사 용 했 고 snap base 는 core 입 니 다. snap base 는 snap 패키지 가 실 행 된 기본 환경 으로 snap 패 키 지 를 설치 할 때 로 컬 에 snap base 가 없 으 면 자동 으로 다운로드 합 니 다.우 리 는 snap 명령 으로 로 컬 이 존재 하 는 지 확인 할 수 있 습 니 다.
pp@pp-ThinkPad-S2-2nd-Gen:~$ snap list
Name Version Rev Tracking Publisher Notes
core 16-2.42.5 8268 stable canonical✓ core
core18 20200113 1650 stable canonical✓ base
파일 은 보통 / snap 디 렉 터 리 에 있 습 니 다.
snap 의 백 스테이지 서비스 snapd 가 시작 되 었 는 지 다시 확인 합 니 다.
pp@pp-ThinkPad-S2-2nd-Gen:~$ ps -A | grep "snapd"
5072 ? 00:00:36 snapd
17926 ? 00:00:00 snapd
snapd 가 시작 되 지 않 으 면 명령 으로 시작 해 야 합 니 다.
service snapd start
2. nginx 소프트웨어 2.1 에 등록 하여 로그 인 합 니 다.이 를 위해, 우 리 는 도착 해 야 한다.https://snapcraft.io/account우 분투 원 계 정 을 신청 하고 로그 인 합 니 다.
pp@pp-ThinkPad-S2-2nd-Gen:/snap$ snapcraft login
Enter your Ubuntu One e-mail address and password.
If you do not have an Ubuntu One account, you can create one at https://snapcraft.io/account
Email:
로그 인 후 snap store 에 발 표 된 가방 의 이름 을 만 들 수 있 습 니 다.
pp@pp-ThinkPad-S2-2nd-Gen:~/snap$ snapcraft register ****
We always want to ensure that users get the software they expect
for a particular name.
If needed, we will rename snaps to ensure that a particular name
reflects the software most widely expected by our community.
......
등록 을 다 한 후에 우 리 는 로그 인 할 수 있 습 니 다.https://snapcraft.io/snaps만 든 스냅 백 이름 을 봅 니 다.
2.2 snapcraft 프로젝트 초기 화pcraffile:///C:/Users/zhangjijin.ROGEN/Desktop/튜 토리 얼 / snap / snap hooks 설치 과정 에서 config 파일 복사. mdt. yaml 파일.
pp@pp-ThinkPad-S2-2nd-Gen:~/nginx-snap$ snapcraft init
Created snap/snapcraft.yaml.
Go to https://docs.snapcraft.io/the-snapcraft-format/8337 for more
information about the snapcraft.yaml format.
『 8195 』 생 성 된 snapcraft. yaml 파일 의 내용 은 다음 과 같 습 니 다.
name: my-snap-name # you probably want to 'snapcraft register '
version: '0.1' # just for humans, typically '1.2+git' or '1.3.2'
summary: Single-line elevator pitch for your amazing snap # 79 char long summary
description: |
This is my-snap's description. You have a paragraph or two to tell the
most important story about your snap. Keep it under 100 words though,
we live in tweetspace and your description wants to look good in the snap
store.
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: devmode # use 'strict' once you have the right plugs and slots
parts:
my-part:
# See 'snapcraft plugins'
plugin: nil
snapcraft. yaml 파일 은 다음 필드 로 구성 되 어 있 습 니 다. name - snap 가방 의 이름 은 8195; version - snap 가방 의 버 전 번호 입 니 다.소스 코드 git 라 이브 러 리 의 분기 나 태그 일 수도 있 습 니 다. 현재 날짜 나 사용자 정의 일 수도 있 습 니 다.snap store 의 stable channel 에 snap 패 키 지 를 발표 하려 면 stable * 8195 °, confinement - snap 가 실 행 될 때 시스템 과 의 격 리 도 를 표시 해 야 합 니 다.3 개의 등급 이 있 습 니 다: devmode, strict, classic. 보통 개발 할 때 devmode 로 설정 합 니 다. snap 패키지 검증 이 완료 되면 classic * 8195 ° parts 로 바 꿉 니 다. snap 패키지 에서 코드 를 어떻게 가 져 오 는 지, 의존 관계 와 어떻게 컴 파일 하 는 지 설명 합 니 다. 다른 중요 한 필드 는 apps 입 니 다. snap 패키지 가 외부 에 호출 된 명령 이나 서비스 이름 을 설명 합 니 다.
2.3 nginx 소프트웨어 의 snap 패 키 지 는 8195 입 니 다. 다음은 nginx 의 실제 상황 과 결합 하여 snapcraft. yaml 파일 을 수정 하여 포장 을 완성 합 니 다.nginx 소스 코드 에서 다운로드 주소http://nginx.org/download/최신 nginx 소스 버 전 은 1.17.7 이 고 소스 코드 컴 파일 은 autotools 를 사용 하기 때문에 파일 은 다음 과 같이 수정 되 었 습 니 다.
name: nginx
version: '1.17.7'
summary: nginx server
description: |
nginx is a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server.
grade: stable
confinement: devmode
apps:
nginx:
command: nginx
plugs: [home]
parts:
nginx:
source: http://nginx.org/download/nginx-1.17.7.tar.gz
source-type: tar
plugin: autotools
configflags:
- --conf-path=/var/snap/nginx/common/conf/nginx.conf
- --error-log-path=/var/snap/nginx/common/logs/error.log
- --http-log-path=/var/snap/nginx/common/logs/access.log
- --pid-path=/var/snap/nginx/common/run/nginx.pid
- --lock-path=/var/snap/nginx/common/lock/nginx.lock
- --http-client-body-temp-path=/var/snap/nginx/common/lib/nginx_client_body
- --http-proxy-temp-path=/var/snap/nginx/common/lib/nginx_proxy
- --http-fastcgi-temp-path=/var/snap/nginx/common/lib/nginx_fastcgi
- --http-uwsgi-temp-path=/var/snap/nginx/common/lib/nginx_uwsgi
- --http-scgi-temp-path=/var/snap/nginx/common/lib/nginx_scgi
- --with-http_ssl_module
* 8195: 8195, configflags 필드 는 configure 명령 을 실행 하 는 인 자 를 설명 하고 구체 적 인 인 인 자 는 구체 적 으로 설명 하지 않 습 니 다.여기 서 / var / snap / nginx / common / 이 디 렉 터 리 를 중점적으로 설명 합 니 다. 저 희 는 nginx snap 패 키 지 를 예 로 들 면 snap 패 키 지 를 설치 한 후에 파일 시스템 은 읽 기와 쓰기 만 가능 한 두 가지 서로 다른 권한 의 구역 으로 나 뉘 어 집 니 다. 일반적인 상황 에서 읽 기 전용 구역 은 / snap / nginx 디 렉 터 리 입 니 다. 읽 기 전용 구역 은 / var / snap / nginx / common / 입 니 다. 사용자 가 nginx 의 설정 파일 을 수정 해 야 하기 때문에 nginx 서비스 도 각종 로 그 를 생 성 합 니 다.따라서 우 리 는 컴 파일 된 매개 변수 중의 디 렉 터 리 를 모두 이 읽 기 가능 한 디 렉 터 리 로 수정 해 야 한다. 이것 은 apt 에 설 치 된 nginx 서비스 와 큰 차이 가 있다.
snapcraft. yaml 파일 을 수정 한 후에 우 리 는 스냅 백 을 치기 시 작 했 지만 포장 과정 에서 다음 과 같은 오류 가 발생 할 수 있 습 니 다.
pp@pp-ThinkPad-S2-2nd-Gen:~/nginx-snap/snap$ sudo snapcraft
......
./configure: error: the HTTP rewrite module requires the PCRE library.
......
./configure: error: the HTTP gzip module requires the zlib library.
......
./configure: error: SSL modules require the OpenSSL library.
......
우 리 는 parts 에서 컴 파일 에 의존 하 는 가방 을 추가 합 니 다.
build-packages: [ libpcre3, libpcre3-dev, zlib1g, zlib1g-dev, openssl, libssl-dev ]
『 8195 』 가방 에 의존 하 는 가방 이름 은 apt 명령 을 통 해 찾 을 수 있 습 니 다. 예 를 들 어:
pp@pp-ThinkPad-S2-2nd-Gen:~/nginx-snap/snap$ sudo apt-cache search PCRE
......
libpcre3 - Old Perl 5 Compatible Regular Expression Library - runtime files
libpcre3-dbg - Old Perl 5 Compatible Regular Expression Library - debug symbols
libpcre3-dev - Old Perl 5 Compatible Regular Expression Library - development files
libpcre32-3 - Old Perl 5 Compatible Regular Expression Library - 32 bit runtime files
......
포장 과정 에서 문제 가 발생 하여 수정 한 후에 다시 포장 할 때 clean 을 제거 하고 다시 컴 파일 해 야 합 니 다.
sudo snapcraft clean
sudo snapcraft
의존 가방 을 추가 한 후에 드디어 포장 에 성 공 했 습 니 다.
pp@pp-ThinkPad-S2-2nd-Gen:~/nginx-snap/snap$ sudo snapcraft
......
usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
usr/lib/x86_64-linux-gnu/libssl.so.1.1
Snapping 'nginx' /
Snapped nginx_1.17.7_amd64.snap
pp@pp-ThinkPad-S2-2nd-Gen:~/nginx-snap/snap$ ls
nginx_1.17.7_amd64.snap parts prime snap snapcraft.yaml stage
3. 설치 검증 nginx 의 snap 이 완료 되 었 습 니 다. 인증 nginx snap 패 키 지 를 설치 하 겠 습 니 다.
pp@pp-ThinkPad-S2-2nd-Gen:~/nginx-snap/snap$ sudo snap install ./nginx_1.17.7_amd64.snap --dangerous --devmode
nginx 1.17.7 installed
pp@pp-ThinkPad-S2-2nd-Gen:~/nginx-snap/snap$ which nginx
/snap/bin/nginx
nginx snap 패 키 지 를 설치 하면 snap 패키지 의 기본 설치 디 렉 터 리 가 / snap 아래 인 것 을 볼 수 있 습 니 다.nginx 가 정상적으로 작 동 할 수 있 는 지 검증 해 봅 시다.
pp@pp-ThinkPad-S2-2nd-Gen:~/nginx-snap/snap$ sudo nginx
nginx: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.27' not found (required by nginx)
nginx: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by /snap/nginx/x1/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1)
『 8195 』 nginx 명령 을 실행 하여 정상적으로 실행 할 수 없습니다. libc. so 라 이브 러 리 가 없습니다. snapcraft. yaml 파일 을 수정 하고 stage - packages 필드 를 통 해 parts 에 실행 중인 의존 라 이브 러 리 를 추가 합 니 다.
stage-packages: [ libc6, libc6-dev ]
snapcraft 명령 을 다시 실행 하고 nginx snap 패 키 지 를 다시 설치 합 니 다.
pp@pp-ThinkPad-S2-2nd-Gen:~/nginx-snap/snap$ sudo snap remove nginx
nginx removed
pp@pp-ThinkPad-S2-2nd-Gen:~/nginx-snap/snap$ which nginx
pp@pp-ThinkPad-S2-2nd-Gen:~/nginx-snap/snap$ sudo snap install ./nginx_1.17.7_amd64.snap --dangerous --devmode
nginx 1.17.7 installed
pp@pp-ThinkPad-S2-2nd-Gen:~/nginx-snap/snap$ nginx
nginx: [alert] could not open error log file: open() "/var/snap/nginx/common/logs/error.log" failed (2: No such file or directory)
2020/01/28 17:39:10 [emerg] 17947#0: open() "/var/snap/nginx/common/conf/nginx.conf" failed (2: No such file or directory)
log 파일 을 열 수 없고 설정 파일 을 찾 을 수 없 는 오류 가 발생 했 습 니 다. nginx snap 패 키 지 를 설치 할 때 snapcraft. yaml 파일 에 정 의 된 파일 이 읽 기 가능 한 쓰기 영역 디 렉 터 리 에 복사 되 지 않 았 고 읽 기 전용 디 렉 터 리 에 있 기 때 문 입 니 다. 살 펴 보 겠 습 니 다.
pp@pp-ThinkPad-S2-2nd-Gen:/snap/nginx/current/var/snap/nginx/common$ ls
conf logs run
pp@pp-ThinkPad-S2-2nd-Gen:/snap/nginx/current/var/snap/nginx/common$ cd /var/snap/nginx/common
pp@pp-ThinkPad-S2-2nd-Gen:/var/snap/nginx/common$ ls
pp@pp-ThinkPad-S2-2nd-Gen:/var/snap/nginx/common$
읽 기 전용 common 디 렉 터 리 의 내용 을 읽 기 전용 디 렉 터 리 에 복사 하고 lib 디 렉 터 리 를 수 동 으로 만 들 며 nginx 명령 을 다시 실행 하 는 데 성공 하 였 습 니 다.
pp@pp-ThinkPad-S2-2nd-Gen:~/nginx-snap/snap$ sudo nginx
pp@pp-ThinkPad-S2-2nd-Gen:~/nginx-snap/snap$ ps -A | grep "nginx"
18109 ? 00:00:00 nginx
18110 ? 00:00:00 nginx
4. 후속 작업 은 81955 ℃ 이상 입 니 다. snapcraft 도 구 를 사용 하여 snap 가방 을 포장 하 는 과정 과 snap 가방 의 초기 검증 과정, 그리고 두 부분의 작업 을 잘 알 고 있 습 니 다. 저 희 는 후속 적 인 튜 토리 얼 에서 상세 하 게 설명 할 것 이 니 지속 적 으로 관심 을 가 져 주 십시오. 1) snap hooks 를 사용 하여 설치 할 때 자동 으로 설정 파일 을 읽 기 전용 영역 에서 읽 기 전용 영역 으로 복사 합 니 다.
nginx 패키지 의 snapcraft 프로젝트 파일 에 접근 하 십시오.https://github.com/dangelzjj/enjoy_snap.git
5. 참고 자료: https://tutorials.ubuntu.com/tutorial/create-your-first-snap https://snapcraft.io/docs/t/pre-built-apps/6739 https://snapcraft.io/docs/snapcraft-parts-metadata https://snapcraft.io/docs/snapcraft-app-and-service-metadata https://snapcraft.io/docs/supported-plugins https://snapcraft.io/docs/autotools-plugin
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
snap, Rocket을 사용합니다.메시지 생성전제 조건 VirtualBox Debian10 Redmine4.0.5 설치 의 목적 Rocket.Chat 설치 Redmine Rocket 업데이트알림 메시지 보내기 Nat 설정 VirtualBox의 NAT 설정을 통...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.