xref: /OK3568_Linux_fs/yocto/meta-openembedded/meta-webserver/recipes-httpd/nginx/nginx.inc (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunSUMMARY = "HTTP and reverse proxy server"
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunDESCRIPTION = "Nginx is a web server and a reverse proxy server for \
4*4882a593SmuzhiyunHTTP, SMTP, POP3 and IMAP protocols, with a strong focus on high  \
5*4882a593Smuzhiyunconcurrency, performance and low memory usage."
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunHOMEPAGE = "http://nginx.org/"
8*4882a593SmuzhiyunLICENSE = "BSD-2-Clause"
9*4882a593Smuzhiyun
10*4882a593SmuzhiyunSECTION = "net"
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunDEPENDS = "libpcre zlib"
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunSRC_URI = " \
15*4882a593Smuzhiyun    http://nginx.org/download/nginx-${PV}.tar.gz \
16*4882a593Smuzhiyun    file://nginx-cross.patch \
17*4882a593Smuzhiyun    file://0001-Allow-the-overriding-of-the-endianness-via-the-confi.patch \
18*4882a593Smuzhiyun    file://nginx.conf \
19*4882a593Smuzhiyun    file://default_server.site \
20*4882a593Smuzhiyun    file://proxy_params \
21*4882a593Smuzhiyun    file://nginx.init \
22*4882a593Smuzhiyun    file://nginx-volatile.conf \
23*4882a593Smuzhiyun    file://nginx.service \
24*4882a593Smuzhiyun    file://nginx-fix-pidfile.patch \
25*4882a593Smuzhiyun"
26*4882a593Smuzhiyun
27*4882a593Smuzhiyuninherit siteinfo update-rc.d useradd systemd
28*4882a593Smuzhiyun
29*4882a593SmuzhiyunSYSTEMD_SERVICE:${PN} = "nginx.service"
30*4882a593Smuzhiyun
31*4882a593SmuzhiyunCFLAGS:append = " -fPIE -pie"
32*4882a593SmuzhiyunCXXFLAGS:append = " -fPIE -pie"
33*4882a593Smuzhiyun
34*4882a593SmuzhiyunNGINX_WWWDIR ?= "${localstatedir}/www/localhost"
35*4882a593SmuzhiyunNGINX_USER   ?= "www"
36*4882a593Smuzhiyun
37*4882a593SmuzhiyunEXTRA_OECONF = ""
38*4882a593SmuzhiyunDISABLE_STATIC = ""
39*4882a593Smuzhiyun
40*4882a593SmuzhiyunPACKAGECONFIG ??= "ssl"
41*4882a593Smuzhiyun
42*4882a593SmuzhiyunPACKAGECONFIG[gunzip] = "--with-http_gunzip_module,,"
43*4882a593SmuzhiyunPACKAGECONFIG[http2] = "--with-http_v2_module,,"
44*4882a593SmuzhiyunPACKAGECONFIG[ssl] = "--with-http_ssl_module,,openssl"
45*4882a593SmuzhiyunPACKAGECONFIG[http-auth-request] = "--with-http_auth_request_module,,"
46*4882a593Smuzhiyun
47*4882a593Smuzhiyundo_configure () {
48*4882a593Smuzhiyun    if [ "${SITEINFO_BITS}" = "64" ]; then
49*4882a593Smuzhiyun        PTRSIZE=8
50*4882a593Smuzhiyun    else
51*4882a593Smuzhiyun        PTRSIZE=4
52*4882a593Smuzhiyun    fi
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun    echo $CFLAGS
55*4882a593Smuzhiyun    echo $LDFLAGS
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun    # Add the LDFLAGS to the main nginx link to avoid issues with missing GNU_HASH
58*4882a593Smuzhiyun    echo "MAIN_LINK=\"\${MAIN_LINK} ${LDFLAGS}\"" >> auto/cc/conf
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun    ./configure \
61*4882a593Smuzhiyun    --crossbuild=Linux:${TUNE_ARCH} \
62*4882a593Smuzhiyun    --with-endian=${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \
63*4882a593Smuzhiyun    --with-int=4 \
64*4882a593Smuzhiyun    --with-long=${PTRSIZE} \
65*4882a593Smuzhiyun    --with-long-long=8 \
66*4882a593Smuzhiyun    --with-ptr-size=${PTRSIZE} \
67*4882a593Smuzhiyun    --with-sig-atomic-t=${PTRSIZE} \
68*4882a593Smuzhiyun    --with-size-t=${PTRSIZE} \
69*4882a593Smuzhiyun    --with-off-t=8 \
70*4882a593Smuzhiyun    --with-time-t=${PTRSIZE} \
71*4882a593Smuzhiyun    --with-sys-nerr=132 \
72*4882a593Smuzhiyun    --conf-path=${sysconfdir}/nginx/nginx.conf \
73*4882a593Smuzhiyun    --http-log-path=${localstatedir}/log/nginx/access.log \
74*4882a593Smuzhiyun    --error-log-path=${localstatedir}/log/nginx/error.log \
75*4882a593Smuzhiyun    --http-client-body-temp-path=/run/nginx/client_body_temp \
76*4882a593Smuzhiyun    --http-proxy-temp-path=/run/nginx/proxy_temp \
77*4882a593Smuzhiyun    --http-fastcgi-temp-path=/run/nginx/fastcgi_temp \
78*4882a593Smuzhiyun    --http-uwsgi-temp-path=/run/nginx/uwsgi_temp \
79*4882a593Smuzhiyun    --http-scgi-temp-path=/run/nginx/scgi_temp \
80*4882a593Smuzhiyun    --pid-path=/run/nginx/nginx.pid \
81*4882a593Smuzhiyun    --prefix=${prefix} \
82*4882a593Smuzhiyun    --with-threads \
83*4882a593Smuzhiyun    --with-http_gzip_static_module \
84*4882a593Smuzhiyun    ${EXTRA_OECONF} ${PACKAGECONFIG_CONFARGS}
85*4882a593Smuzhiyun}
86*4882a593Smuzhiyun
87*4882a593Smuzhiyundo_install () {
88*4882a593Smuzhiyun    oe_runmake 'DESTDIR=${D}' install
89*4882a593Smuzhiyun    rm -fr ${D}${localstatedir}/run ${D}/run
90*4882a593Smuzhiyun    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
91*4882a593Smuzhiyun        install -d ${D}${sysconfdir}/tmpfiles.d
92*4882a593Smuzhiyun        echo "d /run/${BPN} - - - -" \
93*4882a593Smuzhiyun            > ${D}${sysconfdir}/tmpfiles.d/${BPN}.conf
94*4882a593Smuzhiyun        echo "d ${localstatedir}/log/${BPN} 0755 root root -" \
95*4882a593Smuzhiyun            >> ${D}${sysconfdir}/tmpfiles.d/${BPN}.conf
96*4882a593Smuzhiyun    fi
97*4882a593Smuzhiyun    install -d ${D}${sysconfdir}/${BPN}
98*4882a593Smuzhiyun    ln -rs ${D}${localstatedir}/run/${BPN} ${D}${sysconfdir}/${BPN}/run
99*4882a593Smuzhiyun    install -d ${D}${NGINX_WWWDIR}
100*4882a593Smuzhiyun    mv ${D}${exec_prefix}/html ${D}${NGINX_WWWDIR}/
101*4882a593Smuzhiyun    chown ${NGINX_USER}:www-data -R ${D}${NGINX_WWWDIR}
102*4882a593Smuzhiyun
103*4882a593Smuzhiyun    install -d ${D}${sysconfdir}/init.d
104*4882a593Smuzhiyun    install -m 0755 ${WORKDIR}/nginx.init ${D}${sysconfdir}/init.d/nginx
105*4882a593Smuzhiyun    sed -i 's,/usr/sbin/,${sbindir}/,g' ${D}${sysconfdir}/init.d/nginx
106*4882a593Smuzhiyun    sed -i 's,/etc/,${sysconfdir}/,g'  ${D}${sysconfdir}/init.d/nginx
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun    install -d ${D}${sysconfdir}/nginx
109*4882a593Smuzhiyun    install -m 0644 ${WORKDIR}/nginx.conf ${D}${sysconfdir}/nginx/nginx.conf
110*4882a593Smuzhiyun    sed -i 's,/etc/,${sysconfdir}/,g' ${D}${sysconfdir}/nginx/nginx.conf
111*4882a593Smuzhiyun    sed -i 's,/var/,${localstatedir}/,g' ${D}${sysconfdir}/nginx/nginx.conf
112*4882a593Smuzhiyun    sed -i 's/^user.*/user ${NGINX_USER};/g' ${D}${sysconfdir}/nginx/nginx.conf
113*4882a593Smuzhiyun    install -Dm 0644 ${WORKDIR}/default_server.site ${D}${sysconfdir}/nginx/sites-available/default_server
114*4882a593Smuzhiyun    sed -i 's,/var/,${localstatedir}/,g' ${D}${sysconfdir}/nginx/sites-available/default_server
115*4882a593Smuzhiyun    install -d ${D}${sysconfdir}/nginx/sites-enabled
116*4882a593Smuzhiyun    ln -s ../sites-available/default_server ${D}${sysconfdir}/nginx/sites-enabled/
117*4882a593Smuzhiyun
118*4882a593Smuzhiyun    install -m 0644 ${WORKDIR}/proxy_params ${D}${sysconfdir}/nginx/proxy_params
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun    install -d ${D}${sysconfdir}/default/volatiles
121*4882a593Smuzhiyun    install -m 0644 ${WORKDIR}/nginx-volatile.conf ${D}${sysconfdir}/default/volatiles/99_nginx
122*4882a593Smuzhiyun    sed -i 's,/var/,${localstatedir}/,g' ${D}${sysconfdir}/default/volatiles/99_nginx
123*4882a593Smuzhiyun    sed -i 's,@NGINX_USER@,${NGINX_USER},g' ${D}${sysconfdir}/default/volatiles/99_nginx
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun    # cleanup configuration folder
126*4882a593Smuzhiyun    rm ${D}${sysconfdir}/nginx/*.default
127*4882a593Smuzhiyun
128*4882a593Smuzhiyun    # add additional configuration folders
129*4882a593Smuzhiyun    install -d ${D}${sysconfdir}/nginx/modules-available
130*4882a593Smuzhiyun    install -d ${D}${sysconfdir}/nginx/modules-enabled
131*4882a593Smuzhiyun    install -d ${D}${sysconfdir}/nginx/server-conf.d
132*4882a593Smuzhiyun    install -d ${D}${sysconfdir}/nginx/conf.d
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)};then
135*4882a593Smuzhiyun        install -d ${D}${systemd_unitdir}/system
136*4882a593Smuzhiyun        install -m 0644 ${WORKDIR}/nginx.service ${D}${systemd_unitdir}/system/
137*4882a593Smuzhiyun        sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' \
138*4882a593Smuzhiyun            -e 's,@LOCALSTATEDIR@,${localstatedir},g' \
139*4882a593Smuzhiyun            -e 's,@SBINDIR@,${sbindir},g' \
140*4882a593Smuzhiyun            -e 's,@BASE_BINDIR@,${base_bindir},g' \
141*4882a593Smuzhiyun            ${D}${systemd_unitdir}/system/nginx.service
142*4882a593Smuzhiyun    fi
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun    rm -rf ${D}${localstatedir}/log/
145*4882a593Smuzhiyun}
146*4882a593Smuzhiyun
147*4882a593Smuzhiyunpkg_postinst:${PN} () {
148*4882a593Smuzhiyun    if [ -z "$D" ]; then
149*4882a593Smuzhiyun        if type systemd-tmpfiles >/dev/null; then
150*4882a593Smuzhiyun            systemd-tmpfiles --create
151*4882a593Smuzhiyun        elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
152*4882a593Smuzhiyun            ${sysconfdir}/init.d/populate-volatile.sh update
153*4882a593Smuzhiyun        fi
154*4882a593Smuzhiyun    fi
155*4882a593Smuzhiyun}
156*4882a593Smuzhiyun
157*4882a593SmuzhiyunFILES:${PN} += " \
158*4882a593Smuzhiyun    ${localstatedir}/ \
159*4882a593Smuzhiyun    ${systemd_unitdir}/system/nginx.service \
160*4882a593Smuzhiyun"
161*4882a593Smuzhiyun
162*4882a593SmuzhiyunCONFFILES:${PN} = " \
163*4882a593Smuzhiyun    ${sysconfdir}/nginx/nginx.conf \
164*4882a593Smuzhiyun    ${sysconfdir}/nginx/fastcgi.conf \
165*4882a593Smuzhiyun    ${sysconfdir}/nginx/fastcgi_params \
166*4882a593Smuzhiyun    ${sysconfdir}/nginx/koi-utf \
167*4882a593Smuzhiyun    ${sysconfdir}/nginx/koi-win \
168*4882a593Smuzhiyun    ${sysconfdir}/nginx/mime.types \
169*4882a593Smuzhiyun    ${sysconfdir}/nginx/scgi_params \
170*4882a593Smuzhiyun    ${sysconfdir}/nginx/uwsgi_params \
171*4882a593Smuzhiyun    ${sysconfdir}/nginx/win-utf \
172*4882a593Smuzhiyun"
173*4882a593Smuzhiyun
174*4882a593SmuzhiyunINITSCRIPT_NAME = "nginx"
175*4882a593SmuzhiyunINITSCRIPT_PARAMS = "defaults 92 20"
176*4882a593Smuzhiyun
177*4882a593SmuzhiyunUSERADD_PACKAGES = "${PN}"
178*4882a593SmuzhiyunUSERADD_PARAM:${PN} = " \
179*4882a593Smuzhiyun    --system --no-create-home \
180*4882a593Smuzhiyun    --home ${NGINX_WWWDIR} \
181*4882a593Smuzhiyun    --groups www-data \
182*4882a593Smuzhiyun    --user-group ${NGINX_USER}"
183