#!/bin/sh ### Read config if [ ! -f "config.inc" ]; then echo "--- The configuration file (config.inc) could not be found. Apply as default setting. ---" echo "--- All additional modules are not used. ---" else . ./config.inc fi ### If the value is incorrect, convert to normal data. if [ ! "$SERVER_HEADER" ]; then SERVER_HEADER="hakase"; fi if [ "$BITCHK" != 32 ] && [ "$BITCHK" != 64 ]; then BITCHK=32; fi if [ ! "$LTO" ]; then LTO=0; fi if [ ! "$BUILD_MTS" ]; then BUILD_MTS="-j2"; fi if [ ! "$NGX_PREFIX" ]; then NGX_PREFIX="/usr/local/nginx"; fi if [ ! "$NGX_SBIN_PATH" ]; then NGX_SBIN_PATH="/usr/sbin/nginx"; fi if [ ! "$NGX_CONF" ]; then NGX_CONF="/etc/nginx/nginx.conf"; fi if [ ! "$NGX_LIB" ]; then NGX_LIB="/var/lib/nginx"; fi if [ ! "$NGX_LOG" ]; then NGX_LOG="/var/log/nginx"; fi if [ ! "$NGX_PID" ]; then NGX_PID="/var/run/nginx.pid"; fi if [ ! "$NGX_LOCK" ]; then NGX_LOCK="/var/lock/nginx.lock"; fi ### Remove Old file rm -f ${NGX_SBIN_PATH}.old ### Multithread build BUILD_MTS="-j$(expr $(nproc) \+ 1)" git submodule update --init --recursive --force ### BoringSSL Build...... cd lib/boringssl && mkdir -p build && cd build && \ cmake -GNinja .. && ninja && cd ../../../ ### PCRE reconf if [ ! -f "lib/pcre/configure" ]; then cd lib/pcre autoreconf -f -i cd ../.. fi ### ZLIB reconf if [ -f "lib/zlib-ng/configure" ]; then cd lib/zlib-ng ./configure cd ../.. fi ### ZLIB reconf #if [ "$BITCHK" = 64 ]; then # if [ ! -f "lib/zlib/Makefile" ]; then # cd lib/zlib # ./configure --64 # cd ../.. # fi #else # if [ ! -f "lib/zlib_x86/Makefile" ]; then # git submodule add --force https://github.com/madler/zlib.git lib/zlib_x86 # cd lib/zlib_x86 # ./configure # cd ../.. # fi #fi ### PSOL Download (PageSpeed) if [ ! -d "lib/pagespeed" ] && [ "$PAGESPEED" = 1 ]; then ### Download pagespeed cd lib wget -c https://github.com/apache/incubator-pagespeed-ngx/archive/v1.13.35.2-stable.zip unzip v1.13.35.2-stable.zip rm -f v1.13.35.2-stable.zip cd incubator-pagespeed-ngx-1.13.35.2-stable ### Download psol curl "$(scripts/format_binary_url.sh PSOL_BINARY_URL)" | tar xz cd .. mv incubator-pagespeed-ngx-1.13.35.2-stable pagespeed cd .. fi ### x86, x64 Check (Configuration) if [ "$BITCHK" = 64 ]; then # Temporary remove #BUILD_BIT="-m64 " BUILD_ZLIB="./lib/zlib-ng" BUILD_LD="-lrt -ljemalloc -Wl,-z,relro -Wl,-z,now -fPIC" else BUILD_BIT="" BUILD_ZLIB="./lib/zlib-ng" BUILD_LD="" fi ### LTO Build if [ "$LTO" = 1 ]; then BUILD_LTO="-flto -ffat-lto-objects" BUILD_OPENSSL_LTO="-flto -ffat-lto-objects" else BUILD_LTO="" BUILD_OPENSSL_LTO="" fi ### Temporary Ubuntu/Debian build error (libxslt/libxml2) ### URL : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=721602 TEMP_OPT="-lm" ### Module check if [ "$PAGESPEED" = 1 ]; then BUILD_MODULES="--add-module=./lib/pagespeed ${PS_NGX_EXTRA_FLAGS}"; fi if [ "$FLV" = 1 ]; then BUILD_MODULES="${BUILD_MODULES} --add-module=./lib/nginx-http-flv-module"; fi #if [ "$NAXSI" = 1 ]; then BUILD_MODULES="${BUILD_MODULES} --add-module=./lib/naxsi/naxsi_src"; fi if [ "$DAV_EXT" = 1 ]; then BUILD_MODULES="${BUILD_MODULES} --add-module=./lib/nginx-dav-ext-module"; fi if [ "$FANCYINDEX" = 1 ]; then BUILD_MODULES="${BUILD_MODULES} --add-module=./lib/ngx-fancyindex"; fi if [ "$GEOIP2" = 1 ]; then BUILD_MODULES="${BUILD_MODULES} --add-module=./lib/ngx_http_geoip2_module"; fi if [ "$VTS" = 1 ]; then BUILD_MODULES="${BUILD_MODULES} --add-module=./lib/nginx-module-vts"; fi if [ "$ZSTD" = 1 ]; then BUILD_MODULES="${BUILD_MODULES} --add-module=./lib/zstd-nginx-module"; fi if [ "$DYNAMIC_ETAG" = 1 ]; then BUILD_MODULES="${BUILD_MODULES} --add-module=./lib/ngx_dynamic_etag"; fi if [ "$CACHE_PURGE" = 1 ]; then BUILD_MODULES="${BUILD_MODULES} --add-module=./lib/ngx_cache_purge"; fi auto/configure \ --with-cc-opt="-Wno-stringop-truncation -DTCP_FASTOPEN=23 ${BUILD_BIT}${BUILD_LTO} ${TEMP_OPT} -g -O3 -march=native -fstack-protector-strong -fuse-ld=gold -fuse-linker-plugin --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wno-strict-aliasing -Wp,-D_FORTIFY_SOURCE=2 -gsplit-dwarf -I./lib/boringssl/include -DNGX_HTTP_HEADERS" \ --with-ld-opt="${BUILD_LD} ${BUILD_LTO} -L./lib/boringssl/build/ssl -L./lib/boringssl/build/crypto -lstdc++" \ --builddir=objs --prefix=${NGX_PREFIX} \ --conf-path=${NGX_CONF} \ --pid-path=${NGX_PID} \ --lock-path=${NGX_LOCK} \ --http-log-path=${NGX_LOG}/access.log \ --error-log-path=${NGX_LOG}/error.log \ --sbin-path=${NGX_SBIN_PATH} \ --http-client-body-temp-path=${NGX_LIB}/client_body_temp \ --http-proxy-temp-path=${NGX_LIB}/proxy_temp \ --http-fastcgi-temp-path=${NGX_LIB}/fastcgi_temp \ --http-scgi-temp-path=${NGX_LIB}/scgi_temp \ --http-uwsgi-temp-path=${NGX_LIB}/uwsgi_temp \ --with-pcre=./lib/pcre \ --with-pcre-jit \ --with-zlib=${BUILD_ZLIB} \ --with-http_realip_module \ --with-http_addition_module \ --with-http_sub_module \ --with-http_dav_module \ --with-http_stub_status_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_slice_module \ --with-http_xslt_module \ --with-http_gzip_static_module \ --with-http_auth_request_module \ --with-http_dav_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_image_filter_module \ --with-file-aio \ --with-threads \ --with-libatomic \ --with-mail \ --with-compat \ --with-stream \ --with-http_ssl_module \ --with-mail_ssl_module \ --with-http_v2_module \ --with-http_v2_hpack_enc \ --with-http_v3_module \ --with-stream_ssl_module \ --with-stream_realip_module \ --with-stream_ssl_preread_module \ --add-module=./lib/ngx_devel_kit \ --add-module=./lib/ngx_brotli \ --add-module=./lib/headers-more-nginx-module \ ${BUILD_MODULES} ### OpenSSL Skip ### Do not use it for the FIRST BUILD. #touch lib/openssl/.openssl/include/openssl/ssl.h ### SERVER HEADER CONFIG NGX_AUTO_CONFIG_H="objs/ngx_auto_config.h";have="NGINX_SERVER";value="\"${SERVER_HEADER}\""; . auto/define ### Install make $BUILD_MTS install ### Make directory NGX_LIB mkdir -p ${NGX_LIB} ### Check for old files if [ -f "${NGX_SBIN_PATH}.old" ]; then ### Test nginx configuration. "$NGX_SBIN_PATH" -t > /dev/null 2>&1 if test $? -ne 0; then echo "Failed nginx configuration test." exit 1 fi sleep 1 rm ${NGX_SBIN_PATH}.old systemctl restart nginx fi