Last active
October 22, 2016 22:43
-
-
Save jukbot/5a76656bf4a83f97d9b0d23a0c8ef9f7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
How to install and build nginx from source with ALPN support (used by http2 in Google Chrome) | |
1. download, config, make and then make install lastest openssl, zlib, pcre from source website (Note that pcre) | |
2. yum groupinstall 'Development Tools' -y && yum update | |
3. sudo yum install wget curl unzip gcc-c++ pcre-devel zlib-devel | |
4. download latest nginx source and cd into it | |
5. config below | |
./configure \ | |
--prefix=/etc/nginx \ | |
--sbin-path=/usr/sbin/nginx \ | |
--modules-path=/usr/lib64/nginx/modules \ | |
--conf-path=/etc/nginx/nginx.conf \ | |
--error-log-path=/var/log/nginx/error.log \ | |
--http-log-path=/var/log/nginx/access.log \ | |
--pid-path=/var/run/nginx.pid \ | |
--lock-path=/var/run/nginx.lock \ | |
--http-client-body-temp-path=/var/cache/nginx/client_temp \ | |
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \ | |
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \ | |
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \ | |
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \ | |
--user=nginx \ | |
--group=nginx \ | |
--with-pcre=/usr/local/src/pcre-8.39 \ | |
--with-zlib=/usr/local/src/zlib-1.2.8 \ | |
--with-openssl=/usr/local/src/openssl-1.0.2j \ | |
--with-http_ssl_module \ | |
--with-http_stub_status_module \ | |
--with-http_gunzip_module \ | |
--with-http_gzip_static_module \ | |
--with-file-aio \ | |
--with-threads \ | |
--with-ipv6 \ | |
--with-http_addition_module \ | |
--with-http_auth_request_module \ | |
--with-http_dav_module \ | |
--with-http_flv_module \ | |
--with-http_mp4_module \ | |
--with-http_random_index_module \ | |
--with-http_realip_module \ | |
--with-http_secure_link_module \ | |
--with-http_slice_module \ | |
--with-http_sub_module \ | |
--with-http_v2_module \ | |
--with-mail \ | |
--with-mail_ssl_module \ | |
--with-stream \ | |
--with-stream_ssl_module \ | |
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' | |
6. make && make install | |
7. config firewall | |
firewall-cmd --permanent --zone=public --add-service=http | |
firewall-cmd --permanent --zone=public --add-service=https | |
systemctl restart firewalld.service | |
8. start nginx service by using below command | |
/usr/sbin/nginx -c /etc/nginx/nginx.conf | |
9. check nginx process | |
ps -ef|grep nginx | |
10. to stop nginx service using below command | |
kill -9 PID-Of-Nginx | |
11. add nginx as systemd service by create a file "nginx.service" in /lib/systemd/system/nginx.service | |
then copy below into the file | |
[Unit] | |
Description=The NGINX HTTP and reverse proxy server | |
After=syslog.target network.target remote-fs.target nss-lookup.target | |
[Service] | |
Type=forking | |
PIDFile=/var/run/nginx.pid | |
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf | |
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf | |
ExecReload=/bin/kill -s HUP $MAINPID | |
ExecStop=/bin/kill -s QUIT $MAINPID | |
PrivateTmp=true | |
[Install] | |
WantedBy=multi-user.target | |
then reload the system files | |
systemctl daemon-reload | |
12. create startup script | |
sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx | |
sudo nano /etc/init.d/nginx then copy script below | |
#!/bin/sh | |
# | |
# nginx - this script starts and stops the nginx daemon | |
# | |
# chkconfig: - 85 15 | |
# description: NGINX is an HTTP(S) server, HTTP(S) reverse \ | |
# proxy and IMAP/POP3 proxy server | |
# processname: nginx | |
# config: /etc/nginx/nginx.conf | |
# config: /etc/sysconfig/nginx | |
# pidfile: /var/run/nginx.pid | |
# Source function library. | |
. /etc/rc.d/init.d/functions | |
# Source networking configuration. | |
. /etc/sysconfig/network | |
# Check that networking is up. | |
[ "$NETWORKING" = "no" ] && exit 0 | |
nginx="/usr/sbin/nginx" | |
prog=$(basename $nginx) | |
NGINX_CONF_FILE="/etc/nginx/nginx.conf" | |
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx | |
lockfile=/var/lock/subsys/nginx | |
make_dirs() { | |
# make required directories | |
user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` | |
if [ -z "`grep $user /etc/passwd`" ]; then | |
useradd -M -s /bin/nologin $user | |
fi | |
options=`$nginx -V 2>&1 | grep 'configure arguments:'` | |
for opt in $options; do | |
if [ `echo $opt | grep '.*-temp-path'` ]; then | |
value=`echo $opt | cut -d "=" -f 2` | |
if [ ! -d "$value" ]; then | |
# echo "creating" $value | |
mkdir -p $value && chown -R $user $value | |
fi | |
fi | |
done | |
} | |
start() { | |
[ -x $nginx ] || exit 5 | |
[ -f $NGINX_CONF_FILE ] || exit 6 | |
make_dirs | |
echo -n $"Starting $prog: " | |
daemon $nginx -c $NGINX_CONF_FILE | |
retval=$? | |
echo | |
[ $retval -eq 0 ] && touch $lockfile | |
return $retval | |
} | |
stop() { | |
echo -n $"Stopping $prog: " | |
killproc $prog -QUIT | |
retval=$? | |
echo | |
[ $retval -eq 0 ] && rm -f $lockfile | |
return $retval | |
} | |
restart() { | |
configtest || return $? | |
stop | |
sleep 1 | |
start | |
} | |
reload() { | |
configtest || return $? | |
echo -n $"Reloading $prog: " | |
killproc $nginx -HUP | |
RETVAL=$? | |
echo | |
} | |
force_reload() { | |
restart | |
} | |
configtest() { | |
$nginx -t -c $NGINX_CONF_FILE | |
} | |
rh_status() { | |
status $prog | |
} | |
rh_status_q() { | |
rh_status >/dev/null 2>&1 | |
} | |
case "$1" in | |
start) | |
rh_status_q && exit 0 | |
$1 | |
;; | |
stop) | |
rh_status_q || exit 0 | |
$1 | |
;; | |
restart|configtest) | |
$1 | |
;; | |
reload) | |
rh_status_q || exit 7 | |
$1 | |
;; | |
force-reload) | |
force_reload | |
;; | |
status) | |
rh_status | |
;; | |
condrestart|try-restart) | |
rh_status_q || exit 0 | |
;; | |
*) | |
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" | |
exit 2 | |
esac | |
13. set permission to make this script be executable | |
chmod +x /etc/init.d/nginx | |
sudo systemctl enable nginx | |
14. To make sure that Nginx starts and stops every time with the Droplet, add it to the default runlevels with the command: | |
sudo chkconfig nginx on | |
sudo service nginx restart | |
NOTE: If you want to install speedtest module (By Google) you must installed following libraries | |
gcc | |
gcc-c++ | |
pcre-devel | |
zlib-devel | |
make | |
unzip | |
openssl-devel | |
libaio-devel | |
glibc | |
glibc-devel | |
glibc-headers | |
libevent | |
linux-vdso.so.1 | |
libpthread.so.0 | |
libcrypt.so.1 | |
libstdc++.so.6 | |
librt.so.1 | |
libm.so.6 | |
libpcre.so.0 | |
libssl.so.10 | |
libcrypto.so.10 | |
libdl.so.2 | |
libz.so.1 | |
libgcc_s.so.1 | |
libc.so.6 | |
/lib64/ld-linux-x86-64.so.2 | |
libfreebl3.so | |
libgssapi_krb5.so.2 | |
libkrb5.so.3 | |
libcom_err.so.2 | |
libk5crypto.so.3 | |
libkrb5support.so.0 | |
libkeyutils.so.1 | |
libresolv.so.2 | |
libselinux.so.1 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment