検索条件
全15件
(1/2ページ)
# gem install passenger # passenger-install-apache2-moduleとやるんですが、これがどうも上手く行かない。調べると、上記手順を実施する前に、
# setenv APXS2 '/usr/local/apache2/bin/apxs' # setenv PATH '/bin:/usr/local/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/pgsql/bin:/usr/local/apache2/bin'といった、環境変数の設定が必要な模様。
# gem install passengerは、上手く行きます。しかし、
# passenger-install-apache2-moduleは、途中でコンパイルエラーになります。こんな感じ:
/usr/include/c++/v1/string_view:771:37: note: 'Passenger::ApiAccountUtils::string_view' declared here調べると、どうも C++17 からでないと、サポートしていない構文を使っている模様。
typedef basic_string_viewstring_view;
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
1 warning and 20 errors generated.
rake aborted!
Command failed with status (1): [c++ -o buildout/support-binaries/WatchdogMain.o -Isrc/agent -Isrc/cxx_supportlib -Isrc/cxx_supportlib/vendor-copy -Isrc/cxx_supportlib/vendor-modified -Isrc/cxx_supportlib/vendor-modified/libev -Wno-ambiguous-member-template -Isrc/cxx_supportlib/vendor-copy/libuv/include -Isrc/cxx_supportlib/vendor-copy/websocketpp -I/usr/local/include -DHAS_CURL_EASY_RESET -D_REENTRANT -I/usr/local/include -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-long-long -Wno-missing-field-initializers -Wno-ambiguous-member-template -fvisibility=hidden -DVISIBILITY_ATTRIBUTE_SUPPORTED -DHAVE_ACCEPT4 -DHAS_SFENCE -DHAS_LFENCE -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS -g -fno-limit-debug-info -Wno-unused-local-typedefs -Wno-format-nonliteral -DHAS_UNORDERED_MAP -c src/agent/Watchdog/WatchdogMain.cpp]
Tasks: TOP => apache2 => buildout/support-binaries/PassengerAgent => buildout/support-binaries/WatchdogMain.o
# setenv EXTRA_CXXFLAGS '-std=c++17'要するに、上記の環境変数にて、追加のコンパイラオプションを設定し、再度
# passenger-install-apache2-moduleと、するのです。ですが、これで解決するはずが、別の場所でエラーが出ました。こんな感じ:
pedefs -Wno-format-nonliteral -DHAS_UNORDERED_MAP -std=c++17 -c src/cxx_supportlib/IOTools/IOUtils.cppん~、、調べると、この random_shuffle という関数は C++17では「廃止」されたらしい。
src/cxx_supportlib/IOTools/IOUtils.cpp:288:3: error: use of undeclared identifier 'random_shuffle'
random_shuffle(result.begin(), result.end());
^
1 error generated.
rake aborted!
Command failed with status (1): [c++ -o buildout/apache2/module_libpassenger_common/IOTools/IOUtils.o -Isrc/cxx_supportlib -Isrc/cxx_supportlib/vendor-copy -Isrc/cxx_supportlib/vendor-modified -Isrc/cxx_supportlib/vendor-modified/libev -Wno-ambiguous-member-template -Isrc/cxx_supportlib/vendor-copy/libuv/include -O -fPIC -I/usr/local/apache2/include -I/usr/local/apache2/include -I/usr/local/apache2/include -D_REENTRANT -I/usr/local/include -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-long-long -Wno-missing-field-initializers -Wno-ambiguous-member-template -fvisibility=hidden -DVISIBILITY_ATTRIBUTE_SUPPORTED -DHAVE_ACCEPT4 -DHAS_SFENCE -DHAS_LFENCE -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS -g -fno-limit-debug-info -Wno-unused-local-typedefs -Wno-format-nonliteral -DHAS_UNORDERED_MAP -std=c++17 -c src/cxx_supportlib/IOTools/IOUtils.cpp]
Tasks: TOP => apache2 => buildout/apache2/mod_passenger.so => buildout/apache2/module_libpassenger_common/IOTools/IOUtils.o
37 #include <algorithm> 38 #include <string> 39 #include <vector> + 40 #include <random> 41 #include <sys/socket.h> 42 #include <sys/types.h> 287 freeaddrinfo(res); 288 if (shuffle) { 289 // random_shuffle(result.begin(), result.end()); + 290 std::shuffle(result.begin(), result.end(),std::mt19937()); 291 } 292 return result; 293 }/usr/local/lib/ruby/gems/2.5/gems/passenger-6.0.2/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/memory.hpp
65 #ifdef _WEBSOCKETPP_CPP11_MEMORY_ 66 using std::shared_ptr; 67 using std::weak_ptr; 68 // using std::auto_ptr; 69 using std::enable_shared_from_this; 70 using std::static_pointer_cast; 71 using std::make_shared; 72 using std::unique_ptr;ソースコード修正後、
# setenv EXTRA_CXXFLAGS '-std=c++17' # passenger-install-apache2-moduleとすることで、使用できるモジュールが出来上がるようです。
のようにコマンドを入力します。# certbot certonly --standalone -d 《FQDN名》-m 《通知電子メールアドレス》
# certbot certonly --standalone --non-interactive --agree-tos --keep --expand --email 《通知電子メールアドレス》 --no-eff-email --domains 《FQDN名》
Saving debug log to /var/log/letsencrypt/letsencrypt.log使用条件・契約条件を許諾するか否かの問いです。Agree のA を入力します。
Plugins selected: Authenticator standalone, Installer None
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -次に、各種の連絡を電子メールで送るけれど、本当に良いか? という趣旨の問いです。
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate上記で、'Congratulation' のメッセージが含まれていたら、作成は成功です。
Performing the following challenges:
http-01 challenge for server.example.com
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/usr/local/etc/letsencrypt/live/server.example.com/fullchain.pem
Your key file has been saved at:
/usr/local/etc/letsencrypt/live/server.example.com/privkey.pem
Your cert will expire on 2019-10-10. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /usr/local/etc/letsencrypt. You should
make a secure backup of this folder now. This configuration
directory will also contain certificates and private keys obtained
by Certbot so making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
上記のコマンドを入力してみましょう。# certbot certonly --standalone -d 《FQDN名》-m 《通知電子メールアドレス》
# certbot certonly --standalone --non-interactive --agree-tos --keep --expand --email 《通知電子メールアドレス》 --no-eff-email --domains 《FQDN名》
SSLCACertificateFile /usr/local/etc/letsencrypt/live/server.example.com/chain.pem'server.example.com' の部分を、使用するFQDN に合わせて変更します。
SSLCertificateFile /usr/local/etc/letsencrypt/live/server.example.com/cert.pem
SSLCertificateKeyFile /usr/local/etc/letsencrypt/live/server.example.com/privkey.pem
0 6,21 * * * /usr/local/bin/certbot renew --agree-tos --webroot -w#表示の便宜上3行に分けているが、実際に適用の際は半角スペースで区切って1行にすること。
/home/webroot/server.example.com/public --renew-by-default
&& /usr/local/etc/rc.d/apache2 restart
# setenv CPPFLAGS '-I/usr/local/include -I/usr/local/include/db5 -I/usr/include -I/usr/local/include/sasl' # setenv LDFLAGS '-L/usr/local/lib -L/usr/local/lib/db5 -L/usr/lib' # setenv LD_LIBRARY_PATH '/usr/local/lib /usr/local/lib/db5 /usr/lib'これやらないと、当方の環境ではコンパイル自体が上手く行かないんです。
# make -f Makefile.init makefiles 'CCARGS=-DUSE_TLS -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/include -I/usr/local/include/sasl -I/usr/include/openssl' 'AUXLIBS=-L/usr/lib -lssl -lcrypto -L/usr/local/lib -lsasl2 -licudata -licui18n -licuio -licutest -licutu -licuuc -L/usr/local/lib/db5 -ldb'これが上手く出来れば、あとは普通に
# make # make install # rehashとすれば、Cyrus SASL 認証サポート対応の Postfix が出来るはず。
pwcheck_method: auxpropこの設定は、cyrus SASL 独自で認証ユーザを管理することを意味します。
# saslpasswd2 -c -u example.com xxxxuser (ユーザ新規追加) # saslpasswd2 -d -u example.com xxxxuser (ユーザの削除) # sasldblistusers2 (登録ユーザの確認)ここで、example.com は実際に使用するドメイン名、 xxxxuser は、メールアドレスの@マークの左側を指定します。
smtpd_sasl_auth_enable = yes smtpd_sasl_type = cyrus smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $mydomain smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination最後に自動起動の設定です。/etc/rc.conf に
saslauthd_enable="YES" saslauthd_flags="-a pam"の2行を追加しておきましょう。
# cd /usr/ports/sysutils/devcpu-data # make installインストール完了時にこのようなメッセージが出ます:
The first method ensures that any CPU features introduced by a microcode update are visible to the kernel. In other words, the update is loaded before the kernel performs CPU feature detection. To enable updates using the first method, add the following lines to the system's /boot/loader.conf: cpu_microcode_load="YES" cpu_microcode_name="/boot/firmware/intel-ucode.bin" This method will not load the microcode update until the system is rebooted. To enable updates using the second method, add the following line to the system's /etc/rc.conf: microcode_update_enable="YES" Updating CPU Microcode... /usr/local/share/cpucontrol/m32306c3_00000022.fw: updating cpu /dev/cpuctl0 from rev 0x17 to rev 0x22... done. /usr/local/share/cpucontrol/m32306c3_00000022.fw: updating cpu /dev/cpuctl2 from rev 0x17 to rev 0x22... done. /usr/local/share/cpucontrol/m32306c3_00000022.fw: updating cpu /dev/cpuctl4 from rev 0x17 to rev 0x22... done. /usr/local/share/cpucontrol/m32306c3_00000022.fw: updating cpu /dev/cpuctl6 from rev 0x17 to rev 0x22... done. Done.インストール時にマイクロコードの更新は出来ているようですが、上記の英文見ると、どうやら自動更新させるために更に設定が必要なようです。
cpu_microcode_load="YES" cpu_microcode_name="/boot/firmware/intel-ucode.bin"再起動で必要に応じ、マイクロコードの更新がされる模様。
microcode_update_enable="YES"OSブート時に必要に応じ、マイクロコードの更新がされる模様。
-----BEGIN CERTIFICATE----- MIIC4TCCAkqgAwIBAgIBADANBgkqhkiG9w0BAQUFADB4MQswCQYDVQQGEwJKUDER MA8GA1UECBMISG9ra2FpZG8xGzAZBgNVBAoTEkJhc2UgS2VybmVsIENvIEx0ZDEg MB4GA1UECxMXTmV0d29yayBPcHJhdGlvbiBDZW50ZXIxFzAVBgNVBAMTDkJhc2Ug S2VybmVsIENBMB4XDTA4MDcxMzEzMTU0NVoXDTI4MDcxMzEzMTU0NVoweDELMAkG ・・・・一部省略・・・・ A1UEBhMCSlAxETAPBgNVBAgTCEhva2thaWRvMRswGQYDVQQKExJCYXNlIEtlcm5l +6EEruiOlNKYnViRTdjEoAPRYfgM+eqjnfbVOxB0wEV7w5GjcqbGe9ePrEUs1wYS ktnZC7H0p5H01z92udKE3BaCEACQ -----END CERTIFICATE-----これは、pem 形式と呼ばれるディジタル証明書で、通常はこの形式で管理します。
#!/usr/local/bin/perl use MIME::Base64 ; # Base64ライブラリ使用宣言 use Crypt::X509 ; # 証明書内容参照ライブラリ使用宣言 $csr_pem = "" ; $status = open (CSRPEM,"hoge.pem") ; if ($status) { local $/ = undef ; $csr_pem = <CSRPEM> ; close(CSRPEM) ; } $csr_pem =~ /\-\-\-\-\-BEGIN\s+CERTIFICATE\-\-\-\-\-(.+)\-\-\-\-\-END\s+CERTIFICATE\-\-\-\-\-/s ; $x509_tmp = $1 ; %outstr = {} ; $x509_decode = Crypt::X509->new(cert => decode_base64($x509_tmp)) ; @nb = localtime($x509_decode->not_before) ; @na = localtime($x509_decode->not_after) ; @jw = ('日','月','火','水','木','金','土') ; $outstr{'not_before'} = sprintf("%d/%02d/%02d(%s) %02d:%02d:%02d",$nb[5] + 1900,$nb[4] + 1,$nb[3],$jw[$nb[6]],$nb[2],$nb[1],$nb[0]) ; $outstr{'not_after'} = sprintf("%d/%02d/%02d(%s) %02d:%02d:%02d",$na[5] + 1900,$na[4] + 1,$na[3],$jw[$na[6]],$na[2],$na[1],$na[0]) ; $outstr{'subj_country'} = $x509_decode->subject_country ; $outstr{'subj_state'} = $x509_decode->subject_state ; $outstr{'subj_local'} = $x509_decode->subject_locality ; $outstr{'subj_org'} = $x509_decode->subject_org ; $outstr{'subj_ou'} = $x509_decode->subject_ou ; $outstr{'subj_cn'} = $x509_decode->subject_cn ; $outstr{'issuer_cn'} = $x509_decode->issuer_cn ; $serial16 = sprintf("%X",$x509_decode->serial) ; $serial16 = '0' . $serial16 if (length($serial16) % 2) ; 1 while $serial16 =~ s/^([\da-fA-F]+)([\da-fA-F][\da-fA-F])/$1\:$2/ ; $outstr{'issuer_serial'} = $serial16 ; $outstr{'issuer_country'} = $x509_decode->issuer_country ; $outstr{'issuer_state'} = $x509_decode->issuer_state ; $outstr{'issuer_local'} = $x509_decode->issuer_locality ; $outstr{'issuer_org'} = $x509_decode->issuer_org ; $outstr{'sigalgo'} = $x509_decode->sig_algorithm ;上記サンプルにて、連想配列 %outstr に表示可能な文字列にて解析内容が入ります。
#!/usr/local/bin/perl # use utf8 ; binmode(STDOUT, ":utf8") ; use IO::Socket::INET ; # ソケットインタフェース使用宣言 $comm_queue = 5 ; # コネクション待ち受けキューの数 $port = 9999 ; # port no. ### 通信ソケット生成 # ソケットオープン $reqsock = IO::Socket::INET->new (LocalPort => $port, Listen => $comm_queue, Proto => 'tcp', Reuse => 1, ) ; if (not $reqsock) { err_trap("通信ソケットが作成できません。",$!) ; exit ; } ### サーバメインルーチン for (;;) { $sock = $reqsock->accept() ; if (not $sock) { err_trap("クライアントの要求受け付けに失敗しました。(accept error)",$!) ; exit ; } if ($child = fork()) { # 親プロセスの実行コード $sock->close() ; waitpid($child,0) ; next ; # 次のコネクション要求を待つ } elsif (defined($child)) { # 子プロセスの実行コード(メインルーチン) $reqsock->close() ; select($sock) ; $| = 1; # 常に flash するようにする select(STDOUT) ; binmode $sock ,':encoding(UTF-8)' ; 以下、サーバの処理プログラム・・・・ } }IO::Socket:INET の部分を、IO::Socket::IP に書き換えても、IPv6 しか受け付けない状態になります。
#!/usr/local/bin/perl # use utf8 ; binmode(STDOUT, ":utf8") ; use IO::Socket::INET ; # IPv4 Socket インタフェースライブラリ使用宣言 use IO::Socket::INET6 ; # IPv6 Socket インタフェースライブラリ使用宣言 use IO::Select ; $comm_queue = 5 ; # コネクション待ち受けキューの数 $port = 9999 ; # port no. ### 通信ソケット生成 $select = IO::Select->new ; # ソケットオープン[IPv6] $psock6 = IO::Socket::INET6->new (LocalPort => $port, Listen => $comm_queue, Type => SOCK_STREAM, Reuse => 1, Proto => "tcp" ) ; if (not $psock6) { err_trap("通信ソケットが作成できません。[IPv6]",$!) ; exit ; } else { $select->add($psock6) ; } # ソケットオープン[IPv4] $psock4 = IO::Socket::INET->new (LocalPort => $port, Listen => $comm_queue, Type => SOCK_STREAM, Reuse => 1, Proto => "tcp" ) ; if (not $psock4) { err_trap("通信ソケットが作成できません。[IPv4]",$!) ; exit ; } else { $select->add($psock4) ; } ### サーバメインルーチン for (;;) { while (my @ready = $select->can_read) { foreach my $reqsock (@ready) { $sock = $reqsock->accept() ; if (not $sock) { err_trap("クライアントの要求受け付けに失敗しました。(accept error)",$!) ; exit ; } if ($child = fork()) { # 親プロセスの実行コード $sock->close() ; waitpid($child,0) ; next ; # 次のコネクション要求を待つ } elsif (defined($child)) { # 子プロセスの実行コード(メインルーチン) select($sock) ; $| = 1; # 常に flash するようにする select(STDOUT) ; binmode $sock ,':encoding(UTF-8)' ; 以下、サーバの処理プログラム・・・・ } } } }参考になったのは、これ → How best to support IPv4/v6 in Perl server
===> Cleaning for ImageMagick7-nox11-7.0.8.22 ---> Cleaning out obsolete shared libraries No such file or directory @ realpath_rec - /usr/local/lib/compat/pkg/db5 No such file or directory @ realpath_rec - /usr/local/lib/compat/pkg/db5 No such file or directory @ realpath_rec - /usr/local/lib/compat/pkg/db5 No such file or directory @ realpath_rec - /usr/local/lib/compat/pkg/db5 No such file or directory @ realpath_rec - /usr/local/lib/compat/pkg/db5 No such file or directory @ realpath_rec - /usr/local/lib/compat/pkg/db5のようなメッセージが毎回出るようにになります。実害は無いのでほったらかし状態だったが、気になるものは気になるので、対策を。。
# cd /usr/local/lib/compat/pkg # ls -al lrwxr-xr-x 1 root wheel 22 7月 4 2018 libdb_cxx-5.3.so.0@ -> db5/libdb_cxx-5.3.so.0 lrwxr-xr-x 1 root wheel 18 7月 4 2018 libdb_cxx-5.so.0@ -> libdb_cxx-5.3.so.0 lrwxr-xr-x 1 root wheel 22 7月 4 2018 libdb_stl-5.3.so.0@ -> db5/libdb_stl-5.3.so.0 lrwxr-xr-x 1 root wheel 18 7月 4 2018 libdb_stl-5.so.0@ -> libdb_stl-5.3.so.0 lrwxr-xr-x 1 root wheel 18 7月 4 2018 libdb-5.3.so.0@ -> db5/libdb-5.3.so.0 lrwxr-xr-x 1 root wheel 14 7月 4 2018 libdb-5.so.0@ -> libdb-5.3.so.0実に簡単。上記6つのシンボリックリンクを削除するだけ。これで解決しました。