#freeze
#author("2018-11-26T11:25:46+09:00","","")
**今の作り方 [#s7acccf8]

#contents

----
***本体 [#f3fb8a0a]
暫定。~
~
PHPがOpenSSL1.1.1系にまだ対応していないようでビルド時にこけるので ~
当方ではRPM版OpenSSLとの分離としてOpenSSL1.1.1系は従来通り/usr/local/ssl以下へ配置する。~
OpenSSL1.1.1系をデフォルトでインストールする場合は ~
LDFLAGS="-L/usr/local/lib64" ~
を指定する。
APR/APUが入ってないので別途落とし、httpdソースのsrclibへ展開する。~
今のところ必要なモジュール類が定まらないので暫定的に全部入りにして、設定ファイルで制御する。

 cp apr-1.6.x.tar.gz httpd-2.4.x/srclib
 cp apr-util-1.6.x.tar.gz httpd-2.4.x/srclib
 cd httpd-2.4.x/srclib
 tar zxf apr-1.6.x.tar.gz
 tar zxf apr-util-1.6.x.tar.gz
 mv apr-1.6.x apr
 mv apr-util-1.6.x apr-util
 
 ./configure --enable-http2 \
             --with-nghttp2=/usr/local \
             --enable-brotli \
             --with-brotli=/usr/local \
             --enable-pie \
             --enable-modules=all \
             --with-ssl=/usr/local/ssl \
             --with-included-apr \
             --enable-mpms-shared=all \
             --enable-threads \
             --with-openssl=/usr/local/ssl \
             --with-crypto
 
 --with-included-aprで展開したAPR/APUを使用する。
 
 --enable-threads はAPR用オプション。
 --with-openssl=/usr/local/ssl 以下はAPU用オプション。
 
 --with-openssl=/usr/local/ssl と --with-crypto は
 --enable-session-crypto に必要で、1セットで指定し
 
 WARNING: Your APR does not include SSL/EVP support. 
 
 を回避する。

----
***systemd対応 [#z8d00f6b]
Apache2.5から対応のようで、現状別途ビルドする必要がある。

 yum -y install systemd-devel

 cd /usr/local/src/httpd-2.4.x/modules/arch/unix
 wget https://raw.githubusercontent.com/apache/httpd/trunk/modules/arch/unix/mod_systemd.c -O mod_systemd.c
 libtool \
 --silent \
 --mode=compile gcc -std=gnu99 -prefer-pic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong \
 --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_LARGEFILE64_SOURCE  -DLINUX -D_REENTRANT -D_GNU_SOURCE \
 -pthread -I/usr/local/apache2/include -I/usr/local/apr/include/apr-1 -c -o mod_systemd.lo mod_systemd.c && touch mod_systemd.slo
 libtool \
 --silent \
 --mode=link gcc -std=gnu99 -Wl,-z,relro,-z,now,-L/usr/lib64 -o mod_systemd.la -rpath /usr/local/apache2/modules -module -avoid-version mod_systemd.lo
 libtool \
 --silent \
 --mode=link gcc -std=gnu99 -Wl,-z,relro,-z,now,-L/usr/lib64 -o mod_systemd.la -rpath /usr/local/apache2/modules -module -avoid-version mod_systemd.lo -lsystemd
 /usr/local/apache2/bin/apxs -i -a -n systemd mod_systemd.la

----
***サービス登録 [#y66eb2b0]

 cat <<EOT > /etc/systemd/system/httpd2.service
 [Unit]
 Description=The Apache HTTP Server Source Build
 After=network.target remote-fs.target nss-lookup.target
 Documentation=man:httpd(8)
 Documentation=man:apachectl(8)
 
 [Service]
 Type=notify
 PIDFile=/usr/local/apache2/logs/httpd.pid
 ExecStart=/usr/local/apache2/bin/httpd -DFOREGROUND
 ExecReload=/usr/local/apache2/bin/httpd -k graceful
 ExecStop=/bin/kill -WINCH \$\{MAINPID\}
 KillSignal=SIGCONT
 PrivateTmp=true
 
 [Install]
 WantedBy=multi-user.target
 EOT

 /usr/bin/systemctl daemon-reload
 /usr/bin/systemctl enable httpd2

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS