1.下载压缩包:
1)如果无法访问外网,先去http://nginx.org/en/download.html下载需要安装包,再上传
以 nginx-1.20.2.tar.gz 版本为例:
下载完成以后,上传服务器对应用户下面
su zcjkcd /home/zcjk/mkdir nginxcd nginxrz -be回车选择要上传的文件解压tar -zxvf nginx-1.20.2.tar.gz
2)如果有外网,则直接wget下载
wget http://nginx.org/download/nginx-1.20.2.tar.gz
解压
tar -zxvf nginx-1.20.2.tar.gz
2.设置nginx的安装目录
最好指定安装位置,有可能默认路径没有权限,所以这里安装到当前用户目录下。 同时安装相关模块。
cd nginx-1.20.2/./configure --prefix=/home/zcjk/nginx/ --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module
如果缺少pcre依赖,则先安装一下依赖。
这里遇到一个坑,因为需要pcre和zlib的依赖,但是普通用户安装完,安装nginx执行make && make install时,报错,这里给root用户安装相关依赖
sudo yum -y install gcc automake autoconf libtool makesudo yum install gcc gcc-c++sudo yum -y install pcre-develsudo yum -y install openssl openssl-devel
3.安装
make && make install
因为之前已经给整个文件夹/home/zcjk/授过权了,如果新用户没有授权过,则先授权
chown zcjk:zcjk -R /home/zcjk/nginx
4.启动:
cd /home/zcjk/nginx/./sbin/nginx
关于此目录下文件说明:
conf 配置文件
html 网页文件
logs 日志文件
sbin 主要二进制程序
注:以非root权限启动时,会出现 nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied) 错误。
原因:Linux只有root用户可以使用1024以下的端口
解决办法:
1.用root权限启动
2.将nginx.conf文件中的80端口改为1024以上
5.允许启动80端口
一开始我们查看nginx的权限描述:
cd /home/zcjk/nginx/sbinll-rwxr-xr-x 1 nginx dev 2408122 Sep 5 16:01 nginx
这个时候必然是无法正常启动的。
首先修改文件所属用户为root:
chown root nginx
然后再加上s权限:
chmod u+s nginx
再次查看权限描述的时候:
-rwsrwxr-x 1 root zcjk 6651176 Apr 25 14:39 nginx
最后修改nginx的配置文件,把#user nobody;改成user root;
cd /home/zcjk/nginx/confsudo vim nginx.conf#user nobody;# 注释打开 用户改成rootuser root;
为了支持开机自启,需要把nginx配置文件的 #pid logs/nginx.pid;注释打开
# 把注释打开pid logs/nginx.pid;
保存修改。
这样就能启动了。
cd /home/zcjk/nginx/./sbin/nginx
6.验证

成功。
最后访问一下,因为有可能会提示类似403没有权限问题,第5步修改nginx配置就是为了获取权限。
curl -i localhost

页面正常访问,OK。
7.设置开机自启
7.1在/etc/init.d/目录下创建nginx文件
sudo vim /etc/init.d/nginx
7.2加下面的内容复制到nginx配置文件中
#!/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/nginxpidfile="/home/zcjk/nginx/logs/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 0nginx="/home/zcjk/nginx/sbin/nginx"prog=$(basename $nginx)NGINX_CONF_FILE="/home/zcjk/nginx/conf/nginx.conf"[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginxlockfile=/var/lock/subsys/nginxmake_dirs() {# make required directoriesuser=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=([^ ]*).*/1/g' -`if [ -z "`grep $user /etc/passwd`" ]; thenuseradd -M -s /bin/nologin $userfioptions=`$nginx -V 2>&1 | grep 'configure arguments:'`for opt in $options; doif [ `echo $opt | grep '.*-temp-path'` ]; thenvalue=`echo $opt | cut -d "=" -f 2`if [ ! -d "$value" ]; then# echo "creating" $valuemkdir -p $value && chown -R $user $valuefifidone}start() {[ -x $nginx ] || exit 5[ -f $NGINX_CONF_FILE ] || exit 6make_dirsecho -n $"Starting $prog: "daemon $nginx -c $NGINX_CONF_FILEretval=$?echo[ $retval -eq 0 ] && touch $lockfilereturn $retval}stop() {echo -n $"Stopping $prog: "killproc $prog -QUITretval=$?echo[ $retval -eq 0 ] && rm -f $lockfilereturn $retval}restart() {configtest || return $?stopsleep 1start}reload() {configtest || return $?echo -n $"Reloading $prog: "killproc $nginx -HUPRETVAL=$?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" instart)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 2esac
7.3设置nginx文件的权限
sudo chmod 755 /etc/init.d/nginx# sudo chmod a+x /etc/init.d/nginx 这个权限不行,必须是上面那个,否则普通用户无法关闭、启动程序
7.4将nginx服务加入chkconfig管理列表
sudo chkconfig --add /etc/init.d/nginx
7.5设置终端模式开机启动
sudo chkconfig nginx on
7.6使用service管理服务
sudo service nginx start #启动服务sudo service nginx stop #停止服务sudo service nginx restart #重启服务sudo service nginx status #查询服务的状态sudo service nginx relaod #刷新配置文
如果之前因为配置,导致执行报错,刷新systemctl
sudo systemctl daemon-reload #刷新
