相信经过上篇博文的学习,聪明的你已经学会了如何在Centos7 上通过yum 方式安装Nginx ,但是有时候有些场景或者特俗情况下,我们往往需要通过编译源码方式安装,以便于更灵活地定制我们的Nginx.

这节课我们将一起学习如何在centos7 上使用编译源码的方式安装Nginx.

本博文翻译自Youtube, 看英文原版请移步  YouTube视频资料  文档资料


在开始之前,我们先来看看源码编译安装的优缺点,这样以便于我们更好地理解什么时候用哪种安装方式比较好。

要知道,源码编译安装并不是件容易的事情,所以这种方式有一些缺点,如下所示:

  • 所用的时间。
  • 单独安装软件的所有依赖项。
  • 完整掌握软件编译。

但是在以下情况下重新编译是有用的:(优点)

  • 编译你的有用模块而不是全部。
  • 使用最新版本而不是旧版本。
  • 可以使用您自己的对您的项目有用的配置。
  • 创建一个新的Centos机器:

本博文教程在Centos7 上演示,所以没有Linux 环境的可以参考鄙人的另外一篇博文  VMWare Workstation虚拟机 安装Centos7 图文指南

1. 安装前我们最好使用yum更新下

yum -y update 

2. 我们还是最好退一个层级目录

因为当我们打开终端,默认是这样的,

所以我们最好退一个目录,否则可能运行命令会失败

cd ..

Tips: cd 和.. 之间要有空格哦

2. 安装Nginx 编译所需所有依赖项

yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel

3. 编译我们需要下载源代码。

有两个地方都可以进行下载

下载一: http://nginx.org/download/

centos7 下载命令

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

下载成功后如图所示:

下载二: https://github.com/nginx/nginx

git clone git@github.com:nginx/nginx.git

4. 下载完毕后我们需要解压他们

tar -xzf nginx-1.9.15.tar.gz

5. 进入nginx-1.9.15.tar.gz 文件夹

cd nginx-1.9.

6.选择安装的模块

nginx是非常大的软件,它内部有很多模块。 在这里你必须选择哪个模块对你的网站有用。 您可以查看下面的列表。 您也可以按照以下命令通过自己的系统进行检查:

./configure \
--user=nginx \
--group=nginx \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-pcre \
--with-file-aio \
--with-http_realip_module \
--without-http_scgi_module \
--without-http_uwsgi_module \
--without-http_fastcgi_module

执行完上面的指令后会看到这样的回显

7.执行编译指令,输入以下命令

make

8.执行成功后再输入安装指令

make install

编译安装成功后会有如下回显

9. 我们需要在init.d文件夹中创建nginx启动文件。 这样每次服务器重新启动init进程都会自动启动我们的Web服务器

cd /etc/init.d

成功进入后会有这样的回显

8. 创建nginx 配置文件

touch nginx

执行前后如图所示:

10. 编辑这个文件

nano nginx

打开成功的话可以看到这样

11. 复制以下内容到这个编辑器中

编辑文件内容如下:

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# 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
# pidfile: /var/run/nginx.pid
# user: nginx # 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" lockfile=/var/run/nginx.lock start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
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
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

备用下载地址一  备用下载地址二

12. Ctrl +O 快捷键保存,看到下面提示,按下回车键

13. 然后再按下 Ctrl + X 离开

14. 会到上层目录

cd

执行前后效果如图所示

15. 创建一个用户

useradd -r nginx

16. 校验配置文件依次输入下列命令

chkconfig --add nginx
chkconfig --level 345 nginx on

执行成功后如图所示:

17. 进入init.d 文件夹

cd /etc/init.d/

当前文件所在目录

18. 给这个文件添加执行权限

chmod +x nginx

执行成功后看到这样的回显

19.退出当前目录

cd ..

20. 打开Nginx 配置文件

nano /etc/nginx/nginx.conf

21. 在配置文件中default_type 下面添加这两行内容

types_hash_bucket_size 64;
server_names_hash_bucket_size 128;

效果如图所示:

Ctrl +O 写入,然后键盘快捷键Ctrl+X 退出编辑器

有时候由于Linux 服务器上防火墙会端口拦截,所以我们需要在防火墙中开放80 端口,方便我们待会在物理机上查看

firewall-cmd --permanent --add-port=80/tcp --zone=public

执行成功看到回显

重新加载防火墙配置

firewall-cmd --reload

防火墙配置重新加载成功回看到这个

22. 启动nginx服务

service nginx start

23. 查看当前IP地址输入命令:

ifconfig

执行成功后可以看到我们的Linux 操作系统IP地址是 192.168.233.129

然后在我们的windows 主机Chrome 浏览器上输入IP地址:

http://192.168.233.129

可以看到结果

停止Nginx服务

systemctl stop nginx

(本篇完~)

Centos7 编译安装Nginx 教程的更多相关文章

  1. Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Mariadb 10.1.20 + Nginx 1.10.2 + PHP 7.1.0 + Laravel 5.3 )

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...

  2. CentOS7 编译安装 Nginx (实测 笔记 Centos 7.0 + nginx 1.6.2)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  3. Centos7 编译安装 Nginx Mariadb Asp.net Core2 (实测 笔记 Centos 7.3 + Openssl 1.1.0h + Mariadb 10.3.7 + Nginx 1.14.0 + Asp.net. Core 2 )

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...

  4. Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Openssl 1.1.0e + Mariadb 10.1.22 + Nginx 1.12.0 + PHP 7.1.4 + Laravel 5.4 )

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...

  5. Centos7 编译安装 Nginx、MariaDB、PHP

    前言 本文主要大致介绍CentOS 7下编译安装Nginx.MariaDB.PHP.面向有Linux基础且爱好钻研的朋友.技艺不精,疏漏再所难免,还望指正. 环境简介: 系统: CentOS 7,最小 ...

  6. Centos7 编译安装 Nginx PHP Mariadb Memcache扩展 ZendOpcache扩展 (实测 笔记 Centos 7.0 + Mariadb 10.1.9 + Nginx 1.9.9 + PHP 5.5.30)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1503-01.iso 安装步骤: 1.准备 1.1 ...

  7. centos7编译安装nginx及无缝升级https

    安装依赖: yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel 下载nginx: wget -c  ...

  8. Centos7编译安装Nginx+keepalived

    一.安装环境.主机信息及软件版本 Nginx:1.12.2keepalived:2.0.12时间同步(同步后确认各服务器时间是否一致,不一致需要修改一下时区) 关闭防火墙 二.编译安装Nginx 1. ...

  9. centos7 源码编译安装nginx教程 nginx安装脚本 lua-nginx-module

    安装nginx需要pcre zlib openssl的库,下文都是在官网直接下载用作编译安装 该nginx安装教程,有安装maxmind IP 库 该nginx安装教程有安装lua-nginx-mod ...

随机推荐

  1. HBase运维经验

    http://www.qconbeijing.com/download/Nicolas.pdf 重点看了下facebook做了哪些改进以及他们的运维经验,比较重要的有以下几点: 改进: 1 加强了行级 ...

  2. DB Query Analyzer 6.01 is released, SQL Execute Schedule function can be used

       DB Query Analyzer is presented by Master Gen feng, Ma from Chinese Mainland. It has English versi ...

  3. 和菜鸟一起学linux之dlna的学习记录

    关于DLNA框架 1.Networking & Connectivity 为了解决物理设备连通问题, 主要依赖于Ethernet,802.11,Ipv4协议栈,Ipv6协议栈. TCP/IP协 ...

  4. java并发包分析之———Deque和LinkedBlockingDeque

    一.双向队列Deque   Queue除了前面介绍的实现外,还有一种双向的Queue实现Deque.这种队列允许在队列头和尾部进行入队出队操作,因此在功能上比Queue显然要更复杂.下图描述的是Deq ...

  5. 深入理解SpringCloud之配置刷新

    我们知道在SpringCloud中,当配置变更时,我们通过访问http://xxxx/refresh,可以在不启动服务的情况下获取最新的配置,那么它是如何做到的呢,当我们更改数据库配置并刷新后,如何能 ...

  6. Android之Drawable

    Android 中图片和常见的颜色都可以是一个Drawable. Drawable可以方便我们做出一些特殊的UI效果,这一点在UI相关的开发工作中尤其重要.其主要优点有: 使用简单,比自定义View成 ...

  7. Ubuntu系统下配置IP地址方法介绍

    配置IP方式有两种: 1.通过命令直接配置 sudo ifconfig eth0 IP地址 netmask 子网掩码------配置IP地 sudo route add default gw 网关-- ...

  8. 服务器禁止ping

    禁止ping后,不让别人通过域名ping到你的ip, 如果禁用后,你在ping自己的域名会给你返回服务商的IP并提示超时, 这样你就可以减少IP暴露,增加一点安全. 禁止方法: 编辑 /etc/sys ...

  9. linux上nginx新建站点

    遇到一个要将后台部分模块剥离出来,重新放到一个新的后台上的问题: 这样一来,就要在服务器上新建站点,but,服务器是linux系统的,不是很熟,经过多方努力,搞定了 在这记录一下,用到的linux命令 ...

  10. CentOS-Minimal版本下安装telnet服务和xinetd服务

    默认在CentOS-Minimal版本下没有安装telnet和xinetd服务. 1.安装telnet [root@localhost ~]# rpm -qa | grep telnet  --检查是 ...