安装好虚拟机,没安装的可以参考

然后就要搭建环境啦!以往都是Apache 这次选择了nginx,因为apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程,抗并发妥妥的,而且负载均衡,HTTP代理就不多解释了,可以自行百度。

在这里我安装的软件都在/usr/local/src下,你们随意看各自的喜好

cd /usr/local/src

nginx download 下载稳定版(Stable version)。

wget http://nginx.org/download/nginx-1.8.1.tar.gz

解压进入目录

tar -zxvf nginx-1.8.1.tar.gz
cd nginx-1.8.1

执行 configure

./configure

接着安装 PCRE:

yum -y install pcre-devel

再次执行 ./configure 然后安装zlib-devel:

yum -y install zlib-devel

编译,安装。

make && make install

如果安装nginx在执行make && make install时报错:make: XXX No rule to make target build, needed by default. Stop. 出现这种情况,是linux系统没有安装先决条件,一般在执行./configure 会提示你有哪些东西没有安装,仔细看就知道了

GCC——GNU编译器集合(GCC可以使用默认包管理器的仓库(repositories)来安装,包管理器的选择依赖于你使用的Linux发布版本,包管理器有不同的实现:yum是基于Red Hat的发布版本;apt用于Debian和Ubuntu;yast用于SuSE Linux等等。)
RedHat中安装GCC:

yum install gcc

Ubuntu中安装GCC:
apt-get install gcc

PCRE库(Nginx编译需要PCRE(Perl Compatible Regular Expression),因为Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法。这里需要安装两个安装包pcre和pcre-devel。第一个安装包提供编译版本的库,而第二个提供开发阶段的头文件和编译项目的源代码,这正是我们需要的理由。)
RedHat中安装PCRE:

yum install pcre pcre-devel

Ubuntu中安装PCRE:
apt-get install libpcre3 libpcre3-dev

zlib库(zlib库提供了开发人员的压缩算法,在Nginx的各种模块中需要使用gzip压缩。如同安装PCRE一样,同样需要安装库和它的源代码:zlib和zlib-devel。)
RedHat中安装zlib:

yum install zlib zlib-devel

Ubuntu中安装zlib:
apt-get install zlib1g zlib1g-dev

OpenSSL库(在Nginx中,如果服务器提供安全网页时则会用到OpenSSL库,我们需要安装库文件和它的开发安装包(openssl和openssl-devel)。)
RedHat中安装OpenSSL:

yum install openssl openssl-devel

Ubuntu中安装OpenSSL:(注:Ubuntu14.04的仓库中没有发现openssl-dev):
apt-get install openssl openssl-dev


安装完后启动

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

这个时候可以查看nginx是否启动

ps -ef | grep nginx

启动成功后的效果如图:
nginx

将nginx做成系统服务制作启动脚本,这样就可以开机自启动了

vi /etc/init.d/nginx

写入内容:

#! /bin/sh
# chkconfig: 2345 55 25
# Description: Startup script for nginx webserver on Debian. Place in /etc/init.d and
# run 'update-rc.d -f nginx defaults', or use the appropriate command on your
# distro. For CentOS/Redhat run: 'chkconfig --add nginx'
### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO
# Author:   licess
# website:  http://lnmp.org
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=nginx
NGINX_BIN=/usr/local/nginx/sbin/$NAME
CONFIGFILE=/usr/local/nginx/conf/$NAME.conf
PIDFILE=/usr/local/nginx/logs/$NAME.pid
case "$1" in
    start)
        echo -n "Starting $NAME... "
        if netstat -tnpl | grep -q nginx;then
            echo "$NAME (pid `pidof $NAME`) already running."
            exit 1
        fi
        $NGINX_BIN -c $CONFIGFILE
        if [ "$?" != 0 ] ; then
            echo " failed"
            exit 1
        else
            echo " done"
        fi
        ;;
    stop)
        echo -n "Stoping $NAME... "
        if ! netstat -tnpl | grep -q nginx; then
            echo "$NAME is not running."
            exit 1
        fi
        $NGINX_BIN -s stop
        if [ "$?" != 0 ] ; then
            echo " failed. Use force-quit"
            exit 1
        else
            echo " done"
        fi
        ;;
    status)
        if netstat -tnpl | grep -q nginx; then
            PID=`pidof nginx`
            echo "$NAME (pid $PID) is running..."
        else
            echo "$NAME is stopped"
            exit 0
        fi
        ;;
    force-quit)
        echo -n "Terminating $NAME... "
        if ! netstat -tnpl | grep -q nginx; then
            echo "$NAME is not running."
            exit 1
        fi
        kill `pidof $NAME`
        if [ "$?" != 0 ] ; then
            echo " failed"
            exit 1
        else
            echo " done"
        fi
        ;;
    restart)
        $0 stop
        sleep 1
        $0 start
        ;;
    reload)
        echo -n "Reload service $NAME... "
        if netstat -tnpl | grep -q nginx; then
            $NGINX_BIN -s reload
            echo " done"
        else
            echo "$NAME is not running, can't reload."
            exit 1
        fi
        ;;
    configtest)
        echo -n "Test $NAME configure files... "
        $NGINX_BIN -t
        ;;
    *)
        echo "Usage: $0 {start|stop|force-quit|restart|reload|status|configtest}"
        exit 1
        ;;
esac

保存退出后,将启动脚本添加到服务管理

chkconfig --add nginx
service nginx start

如果有的人 执行 service nginx start 失败,报错:env: /etc/init.d/nginx: Permission denied
一般是说没有权限导致失败 运行

chmod 750 /etc/init.d/nginx

赋予nginx权限即可,也可以进入到/etc/init.d里,chmod 750 nginx 也行,再执行就不会报错了
还有一个赋予权限的地方, /usr/local/nginx/conf/nginx.conf 文件,第一行将user的注释去掉,打开写为

user root

添加shell别名

vim ./.bashrc
alias nginx="/usr/local/nginx/sbin/nginx"

这个时候,就有人想访问下nginx部署完后的页面,输入虚拟机外网连接后,有的人可能会提示找不到服务器,那么就有可能是服务器防火墙的问题,也可能是你开启了iptables

/etc/init.d/iptables stop

关闭即可,再访问就成功啦!
nginx


推荐nginx文档以供参考!!!

最后修改:2019 年 12 月 14 日 03 : 46 PM
如果觉得我的文章对你有用,请随意赞赏