原文来自http://www.hoohack.me/2016/01/27/compile-install-nginx-in-opensuse/
下载源码
在nginx官网上选择稳定的版本Nginx。解压到/usr/local/src/
目录。
笔者使用的是nginx-1.9.9。
准备工作
进入/usr/local/src继续操作)
编译安装pcre库
下载:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
安装:
.configure
make && make install
高版本会出现No rule to make target 'libpcre.la
错误,建议选择版本低一些,因为nginx暂不支持,可以使用8.37版本。
编译错误:'aclocal-1.14' is missing on your system.
解决:输入命令touch configure.ac aclocal.m4 configure Makefile.am Makefile.in
,然后重新编译。
安装zlib库
安装:
.configure
make && make install
安装ssl
http://www.openssl.org/source/
解压即可
编译安装
常用编译选项说明
--prefix=PATH
: 指定nginx的安装目录。默认/usr/local/nginx
--conf-path=PATH
: 设置nginx.conf配置文件的路径。nginx允许通过命令行中的-c
选项使用不同的配置文件启动。默认为prefix/conf/nginx.conf
--with-pcre
: 设置PCRE库的源码路径
--with-zlib=PATH
: 指定 zlib的安装目录。
--with-http_ssl_module
: 使用https协议模块。默认情况下,该模块没有被构建。前提是openssl与openssl-devel已安装
--with-openssl
:openssl解压目录
--pid-path
:nginx运行时的进程ID保存目录
编译方案
./configure\
--sbin-path=/usr/local/nginx/nginx\
--conf-path=/usr/local/nginx/nginx.conf\
--pid-path=/usr/local/nginx/nginx.pid\
--with-http_ssl_module\
--with-pcre=/usr/local/src/pcre-8.37\
--with-zlib=/usr/local/src/zlib-1.2.8\
--with-openssl=/usr/local/src/openssl-1.0.1c
编译安装
make && make install
测试安装结果
通过命令/usr/local/nginx/nginx
运行nginx
在命令行下输入 netstat -ptnl | grep 'nginx'
查看nginx是否启动成功
打开浏览器,输入localhost,如果看到下面的Welcome nginx页面说明安装成功了
添加启动脚本
安装完成后,如果需要在命令行下启动和停止nginx,或者添加开机启动任务,需要添加脚本到/etc/init.d/
目录。
脚本文件:
#! /bin/sh
# Description: Startup script for nginx on CentOS、SuSE、redhat. cp it in /etc/init.d and
# chkconfig --add nginx && chkconfig nginx on
# then you can use server command control nginx
#
# chkconfig: 2345 08 99
# description: Starts, stops nginx
set -e
PATH=$PATH:/usr/local/nginx/sbin/
DESC="nginx daemon"
NAME=nginx
DAEMON=/usr/local/nginx/sbin/$NAME
CONFIGFILE=/usr/local/nginx/conf/nginx.conf
PIDFILE=/usr/local/nginx/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
d_start() {
$DAEMON -c $CONFIGFILE || echo -n " already running"
}
d_stop() {
kill -QUIT `cat $PIDFILE` || echo -n " not running"
}
d_reload() {
kill -HUP `cat $PIDFILE` || echo -n " can't reload"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
reload)
echo -n "Reloading $DESC configuration..."
d_reload
echo "reloaded."
;;
restart)
echo -n "Restarting $DESC: $NAME"
d_stop
sleep 1
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
exit 0
使用方法:
vim /etc/init.d/nginx
chmod +x /etc/init.d/nginx
chkconfig nginx on
chkconfig --level 2345 nginx on
启动方法:
service nginx xxx
/etc/init.d/nginx xxx
参考文章:openSUSE Nginx 启动脚本