Puppet 의 간단 한 설치 Nginx
puppet 를 한 지 3 일 이 되 었 지만, 일부 개념 은 아직 명확 하지 않다.실험 이 성공 하지 못 한 경우 가 많 습 니 다. 개념 이 명확 하지 않 고 문 서 를 다 보지 못 한 경우 가 많 습 니 다.다른 건 몰라 도 nginx 를 설치 하 겠 습 니 다. 한번 해 보 세 요.
1. nginx 모듈 작성 그 다음 에 우 리 는 먼저 모듈 정 보 를 수집 하여 Nginx 의 배 치 를 완성 합 니 다. 모듈 록, 가상 호스트 채 팅 을 만들어 야 합 니 다. 의 식 진 관리.모듈 을 만 드 는 정 보 는 다음 과 같은 지식 을 운반 해 야 합 니 다. 자원: yumrepo, package, file, service, cron. 템 플 릿: nginx. conf. erb. 모듈 을 만 들 때 README 부품 을 만 드 는 것 을 권장 합 니 다. 다음은 모듈 의 사용 과 설치 에 대한 상세 한 설명 입 니 다.
2. 모듈 록 을 만 듭 니 다. 코드 는 다음 과 같 습 니 다.
#mkdir -p /etc/puppet/modules/nginx/{manifests,templates,files,tests}
3. 모듈 메 인 구성 요 소 를 만 듭 니 다. 코드 는 다음 과 같 습 니 다.
#cat /etc/puppet/modules/nginx/manifests/init.pp
# Class: nginx
#
#Install nginx.
#
#Parameters:
# * $nginx_user. Defaults to 'nginx'.
# * worker_processes. Defaults to .
#
#Create config directories :
# * /etc/nginx/conf.d for sites includes
#
#Templates:
# - nginx.conf.erb => /etc/nginx/nginx.conf
#
class nginx {
$real_nginx_user = $nginx_user ? { '' => 'nginx', default => $nginx_user }
$nginx_conf = "/etc/nginx/conf.d"
$nginx_logrote = "/etc/nginx/conf.d/nginx_logrote.sh"
yumrepo { "nginx":
descr => "nginx repo",
baseurl => "http://nginx.org/packages/centos/\$releasever/\$basearch/",
gpgcheck => "0",
enabled => "1";
}
package { "nginx":
ensure => installed,
require => Yumrepo["nginx"],
allow_virtual => false;
}
service { 'nginx':
ensure => running,
enable => true,
hasrestart => true,
hasstatus => true,
subscribe => File["nginx.conf"],
}
file { 'nginx.conf':
ensure => present,
mode => 644,
owner => root,
group => root,
path => '/etc/nginx/nginx.conf',
content => template("nginx/nginx.conf.erb"),
notify => Exec["reload-nginx"],
require => Package["nginx"],
}
file { "$nginx_conf":
ensure => directory,
recurse => true,
force => true,
#purge => true,
source => "puppet:///modules/nginx/conf.d",
notify => Exec["reload-nginx"],
require => Package["nginx"],
}
file { "$nginx_logrote":
ensure => file,
mode => 755,
owner => root,
group => root,
source => "puppet:///modules/nginx/nginx_logrote.sh",
}
cron { 'nginx_logrote_cron':
command => "/bin/bash {$nginx_logrote} > /dev/null 2>&1",
user => root,
minute => '0',
hour => '0',
}
exec { 'reload-nginx':
command => "/etc/init.d/nginx reload",
refreshonly => true,
}
}
이상 코드 에서 정의 되 었 습 니 다: 변 수 는 nginx 가구, 가상 호스트 기록 과 지 부 를 변수 로 정의 하고 이 필드 에서 인용 합 니 다. yumrepo 자원, yumrepo 에서 Nginx 패키지 원본 을 정의 합 니 다. Puppet 은 yum 소프트웨어 원본 에서 만 듭 니 다. nginx. repo 부품. 이상 코드 에서 정의 되 었 습 니 다: File 자원, nginx. conf 채취 모듈 의 식 실현, 설정 부품 의 일부 매개 변 수 는 facts 나 변 수 를 전달 합 니 다.가상 호스트 가 삭 제 된 후 일치 하지 않 는 문제.또한 notify 속성 으로 exec 의 reload 동작 을 촉발 합 니 다. service 자원, Nginx 서비스의 상 태 를 정의 합 니 다. 기본 값 은 켜 짐 에 따라 시작 합 니 다. puppet. 에이전트 운송 시 Nginx 서버 검출 반드시이 자원 은 패키지 자원 인 Nginx 패키지 의 설치 에 의존 합 니 다. cron 자원, 스 크 립 트 를 지 울 때 실행 하도록 정의 합 니 다.매일 0 시 에 루트 를 채취 하여 절단 합 니 다. exec 자원, Nginx 서비스의 reload 명령 을 자원 으로 정의 하고 가상 호스트 가 변 경 될 때 불 러 옵 니 다.
4. nginx 메 인 설정 을 만 듭 니 다: 저 희 는 핵 을 선택 한 nginx. conf 설정 을 정의 합 니 다. 그 중의 nginx 프로 세 스 개 수 는 facts 로 전달 되 고 서버 스 레 드 수 와 같 습 니 다. 같다구체 적 인 코드 는 다음 과 같다.
# cat /etc/puppet/modules/nginx/templates/nginx.conf.erb
user ;
worker_processes ;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
use epoll;
worker_connections 51200;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
charset utf-8;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_body_buffer_size 8m; #256k
sendfile on;
#timeouts
keepalive_timeout 0;
#TCP Options
tcp_nopush on;
tcp_nodelay on;
client_max_body_size 50m;
include /etc/nginx/conf.d/*.conf;
}
4. 가상 호스트 기록 과 부품 을 만 듭 니 다. 모든 가상 호스트 의 입 록 동기 화 관 리 를 위해 에이전트. domain. com 가상 호스트 를 만 들 고 그 내용 을 다음 과 같이 정의 합 니 다.
# mkdir -p /etc/puppet/files/nginx/conf.d # vim /etc/puppet/files/nginx/conf.d/agent1.jeffery.com.conf server {
listen 80;
server_name agent1.jeffery.com
root /var/www/html/agent1.jeffery.com;
location /nginx_status {
stub_status on;
access_log off;
}
}
5. 지 륜 스 크 립 트 를 만 듭 니 다. 구체 적 으로 다음 과 같 습 니 다.
# cat /etc/puppet/modules/nginx/files/nginx_logrote.sh
#!/bin/bash
# This script run at 00:00
# The Nginx logs path
logs_path="/var/log/nginx/"
PIDFILE=/var/run/nginx.pid
ACCESS_LOG="${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" ERROR_LOG="${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/error_$(date -d "yesterday" mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_path}access.log $ACCESS_LOG
mv ${logs_path}error.log $ERROR_LOG
kill -USR1 `cat $PIDFILE`
#gzip
/bin/gzip -9 $ACCESS_LOG
/bin/gzip -9 $ERROR_LOG
#rm
find ${logs_path} -name "*.log.gz" -mtime +7|xargs rm –f
6. 동기 호스트, 모듈 설정
# cat /etc/puppet/manifests/site.pp
$fileserver = "master.jeffery.com"
import "nodes/cnc/*.pp"
#import '/etc/puppet/manifests/nodes/cnc/agent1.jeffery.com.pp'
# cat /etc/puppet/manifests/nodes/cnc/agent1.jeffery.com.pp
node 'agent1.jeffery.com' {
include nginx
#include httpd
#include memcached
}
7. 클 라 이언 트 에서 puppet 명령 을 실행 하면 Finished 가 완성 한 제 시 를 볼 수 있 습 니 다. 구체 적 으로 다음 과 같 습 니 다. notice: Finished catalog run in 18.76 seconds 이 때 우 리 는 / etc / nginx / conf. d 녹 화 를 볼 수 있 습 니 다. Nginx 서비스 가 시작 되 었 습 니 다. 여기까지 저 희 는 nginx 모듈 을 만 들 었 고 클 라 이언 트 에서 성공 적 으로 대응 하 였 습 니 다.전체 과정 은 늘 복잡 한 것 이 아니다. 작성 할 때 모든 절차 와 그 실현 기능 만 알 면 쉽게 완성 할 수 있 습 니 다.
2. 다음은 Forge 가 제공 하 는 nginx 모듈 이 Nginx 배 치 를 어떻게 실현 하 는 지 살 펴 보 겠 습 니 다. 모듈 을 만 드 는 것 은 우리 가 생각 했 던 것 처럼 복잡 하지 않 고 유연 하 게 맞 출 수 있 습 니 다.물론 Puppetlabs 관 Forge 에서 제공 하 는 nginx 모듈 도 실현 할 수 있 습 니 다.참조 모듈 녹 음 된 README 건 이면 됩 니 다.
1. 명령 puppet modules 찾기 모듈, 코드 는 다음 과 같 습 니 다.
#puppet module search nginx # puppet module search nginx
Notice: Searching https://forgeapi.puppetlabs.com ...
NAME DESCRIPTION AUTHOR KEYWORDS
jfryman-nginx Puppet NGINX management module @jfryman nginx http proxy rack
puppetlabs-nginx Puppet NGINX management module
...
2. 인증 을 통과 한 많은 모듈 을 볼 수 있 습 니 다. 여기 서 저희 가 Puppetlabs 의 nginx 모듈 을 설치 하고 코드 를 수집 합 니 다. 다음 과 같다.
# puppet module install puppetlabs-nginx
Notice: Preparing to install into /etc/puppet/modules ...
Notice: Downloading from https://forgeapi.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/etc/puppet/modules
└─┬ puppetlabs-nginx (v99.99.99)
└── puppetlabs-stdlib (v4.3.2)
설치 가 완료 되면 modules 에서 두 개의 모듈 이 더 나 오 는 것 을 볼 수 있 습 니 다: stdlib 와 nginx.
stdlib 는 puppet 에서 제공 하 는 함수 입 니 다. 창고
nginx 모듈 은 이 함수 라 이브 러 리 의 함 수 를 사용 합 니 다.
nginx 모듈 내용 보기:
# ll -th modules/nginx
total 32K
-r--r--r-- 1 root root 2.6K May 2 02:36 metadata.json
-r--r--r-- 1 root root 369 May 2 02:35 Modulefile
drwxr-xr-x 4 root root 4.0K Apr 22 08:10 manifests
drwxr-xr-x 4 root root 4.0K Apr 22 08:10 templates
drwxr-xr-x 2 root root 4.0K Apr 22 08:10 tests
-r--r--r-- 1 root root 665 Sep 5 2013 README.markdown
-r--r--r-- 1 root root 2.5K Sep 5 2013 ChangeLog
-r--r--r-- 1 root root 0 Sep 5 2013 README
-r--r--r-- 1 root root 523 Sep 4 2013 LICENSE
# 설치 모듈 보기
# puppet module list
#puppet 마 운 트 해제 모듈
# puppet module install puppetlabs-nginx # 이 디 렉 터 리 를 직접 제거 하거나
3. 클 라 이언 트 설치 가 같 습 니 다. 더 많은 내용 을 보 세 요. README 문서.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.