puppet默认使用基于Ruby的WEBRickHTTP来处理HTTPS请求,html
单个服务器使用Apache+Passenger替换掉WEBRickHTTP,linux
Passenger是用于将Ruby程序进行嵌入执行的Apache模块,web
在安装前,首先至少要执行一次service puppetmaster start,生成本地证书apache
官方配置指南:https://docs.puppetlabs.com/guides/passenger.htmlwindows
二、安装apacheruby
[root@puppet ~]# yum install -y httpd httpd-devel openssl mod_ssl ruby-devel libcurl-devel rubygems gcc
前面已安装了apache,这里主要安装mod_ssl ruby-devel libcurl-devel三个。
bash
三、安装passenger服务器
[root@puppet ~]# gem install rack passenger 这一步安装会失败 能够经过网站下载passenger-4.0.19.gem,经过本地安装gem install --local passenger-4.0.19.gem; gem install -v rack-1.5.2 [root@puppet ~]# passenger-install-apache2-module
直接回车app
默认选择了Ruby,直接回车curl
检查须要安装的包,根据提示安装须要的软件包,再从新执行
[root@puppet ~]# yum install libcurl-devel
须要将此段写入passenger.conf中:
[root@puppet ~]# vi /etc/httpd/conf.d/passenger.conf LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.53/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.53 PassengerDefaultRuby /usr/bin/ruby </IfModule>
继续回车完成,能够看到一个虚拟主机的配置样例。
四、配置rack
config.ru文件会告诉Rack如何生成puppet master进程
[root@puppet ~]# cd /usr/share/puppet [root@puppet puppet]# mkdir -p rack/puppetmasterd/{public,tmp} [root@puppet puppet]# cp ext/rack/config.ru rack/puppetmasterd/ [root@puppet puppet]# chown puppet:puppet rack/puppetmasterd/config.ru
五、配置passenger和vhost
[root@puppet puppet]# cp ext/rack/example-passenger-vhost.conf /etc/httpd/conf.d/puppetmaster.conf [root@puppet puppet]# vi /etc/httpd/conf.d/puppetmaster.conf # This Apache 2 virtual host config shows how to use Puppet as a Rack # application via Passenger. See # http://docs.puppetlabs.com/guides/passenger.html for more information. # You can also use the included config.ru file to run Puppet with other Rack # servers instead of Passenger. # you probably want to tune these settings PassengerHighPerformance on PassengerMaxPoolSize 12 PassengerPoolIdleTime 1500 # PassengerMaxRequests 1000 PassengerStatThrottleRate 120 #RackAutoDetect Off #注释掉这行 #RailsAutoDetect Off #注释掉这行 Listen 8140 <VirtualHost *:8140> SSLEngine on SSLProtocol ALL -SSLv2 -SSLv3 SSLCipherSuite EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA SSLHonorCipherOrder on SSLCertificateFile /var/lib/puppet/ssl/certs/puppet.ewin.com.pem #修改路径和证书名称 SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/puppet.ewin.com.pem #修改路径和证书名称 SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem #修改路径 SSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pem #修改路径 # If Apache complains about invalid signatures on the CRL, you can try disabling # CRL checking by commenting the next line, but this is not recommended. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem #修改路径 # Apache 2.4 introduces the SSLCARevocationCheck directive and sets it to none # which effectively disables CRL checking; if you are using Apache 2.4+ you must # specify ‘SSLCARevocationCheck chain‘ to actually use the CRL. # SSLCARevocationCheck chain SSLVerifyClient optional SSLVerifyDepth 1 # The `ExportCertData` option is needed for agent certificate expiration warnings SSLOptions +StdEnvVars +ExportCertData # This header needs to be set if using a loadbalancer or proxy RequestHeader unset X-Forwarded-For RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e DocumentRoot /usr/share/puppet/rack/puppetmasterd/public #修改路径 RackBaseURI / <Directory /usr/share/puppet/rack/puppetmasterd/> #修改路径 Options None AllowOverride None Order allow,deny allow from all </Directory> </VirtualHost>
检查配置
检查 Passenger/Apache 配置文件是否正确:
service httpd configtest
若是执行结果显示 Syntax OK,则说明配置文件格式正确,能够准备启动了。若是出现错误,就要根据报错信息进行修正。
复制pulic目录到/usr/local/puppet/rack/puppetmasterd/,里面有dispatch.cgi,dispatch.fcgi,以及dispatch.rb等文件
cp -rf /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/test/stub/rails_apps/1.2/empty/public/* /etc/puppet/rack/puppetmaster/public/
ll /etc/puppet/rack/puppetmaster/public
rw-r-r- 1 apache apache 947 Mar 22 19:16 404.html
-rw-r-r- 1 apache apache 941 Mar 22 19:16 500.html
-rwxr-xr-x 1 apache apache 473 Mar 22 19:16 dispatch.cgi
-rwxr-xr-x 1 apache apache 855 Mar 22 19:16 dispatch.fcgi
-rwxr-xr-x 1 apache apache 474 Mar 22 19:16 dispatch.rb
-rw-r-r- 1 apache apache 0 Mar 22 19:16 favicon.ico
drwxr-xr-x 2 apache apache 4096 Mar 22 19:16 p_w_picpaths
-rw-r-r- 1 apache apache 99 Mar 22 19:16 robots.txt
cat /etc/puppet/rack/puppetmaster/config.ru
# a config.ru, for use with every rack-compatible webserver.
$0 = “master”
# if you want debugging:
# ARGV << “-debug”
ARGV << “-rack”
require ‘puppet/application/master’
run Puppet::Application[:master].run
# EOF /etc/puppet/rack/puppetmaster/config.ru
mkdir -p /var/run/puppet
chown puppet:puppet /var/run/puppet
chmod 755 /var/run/puppet
六、服务
[root@puppet ~]# service puppetmaster stop [root@puppet ~]# service httpd restart [root@puppet ~]# chkconfig httpd on [root@puppet ~]# netstat -nlp | grep 8140
七、测试
(1)WEB网页访问测试
客户端修改IE设置,去掉标黄的勾:
使用IE浏览https://10.188.1.73:8140/
出现这一行表示配置成功,下一节配置Dashboard后就有内容了。
(2)linux客户端测试
[root@zabbix ~]# puppet agent --server puppet.ewin.com --test
没有报错,显示配置版本号及完成时间表示成功。
(3)puppet服务端测试
[root@puppet ~]# tailf /var/log/httpd/access_log
10.188.1.172是windows客户机ywzhou-pc:
10.188.1.103是linux客户机zabbix:
客户机发出HTTP GET请求,状态码200表示请求成功,再使用PUT请求提交了一个报告
本文出自http://www.bubuko.com/infodetail-468079.html