Linux安装Nginx

    Hello World ! 是一种心态,也是一种格局。力透纸背,写小白看得懂的技术文章!

一、准备工作

    1、Linux系统服务器,例如这里使用的系统是CentOS7.7

    2、SSH连接工具,用于远程连接Linux服务器,推荐使用SecureCRT

    3、Nginx安装文件,这里安装的版本为nginx-1.17.5,官网下载地址:http://nginx.org/download/nginx-1.17.5.tar.gz

nginx-1.17.5.tar.gz下载

    4、下载后的Nginx安装文件nginx-1.17.5.tar.gz,通过SecureCRT中的文件上传工具SecureFX上传到Linux服务器(在Linux服务器上也可以直接使用wget http://nginx.org/download/nginx-1.17.5.tar.gz下载)

使用SecureFX工具上传文件
将文件上传到服务器

二、编译安装

    1、解压Nginx安装包nginx-1.17.5.tar.gz/usr/local/src/目录,解压出来的目录为nginx-1.17.5

[root@localhost ~]# ll
total 692696
-rw-------. 1 root root      1430 Oct 22 11:05 anaconda-ks.cfg
-rw-r--r--. 1 root root  10267082 Oct 27 16:29 apache-tomcat-8.5.47.tar.gz
-rw-r--r--. 1 root root 194151339 Oct 27 12:39 jdk-8u231-linux-x64.tar.gz
-rw-r--r--. 1 root root 503854832 Oct 27 19:19 mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
-rw-r--r--. 1 root root   1036056 Oct 27 16:35 nginx-1.17.5.tar.gz
[root@localhost ~]# tar -zxvf nginx-1.17.5.tar.gz -C /usr/local/src/

    2、编译准备

进入解压后的安装文件目录/usr/local/src/nginx-1.17.5/,执行./configure命令。这一步用来生成 Makefile,为下一步的编译做准备,可以通过在./configure后加参数来对安装进行控制,比如./configure --prefix=/usr/意思是将该软件安装在 /usr/目录下,不指定时默认的安装目录为/usr/local/(这里我们安装在默认的安装目录下)。

[root@localhost src]# cd nginx-1.17.5/
[root@localhost nginx-1.17.5]# ll
total 760
drwxr-xr-x. 6 1001 1001   4096 Nov  7 11:04 auto
-rw-r--r--. 1 1001 1001 300262 Oct 22 23:16 CHANGES
-rw-r--r--. 1 1001 1001 458263 Oct 22 23:16 CHANGES.ru
drwxr-xr-x. 2 1001 1001    168 Nov  7 11:04 conf
-rwxr-xr-x. 1 1001 1001   2502 Oct 22 23:16 configure
drwxr-xr-x. 4 1001 1001     72 Nov  7 11:04 contrib
drwxr-xr-x. 2 1001 1001     40 Nov  7 11:04 html
-rw-r--r--. 1 1001 1001   1397 Oct 22 23:16 LICENSE
drwxr-xr-x. 2 1001 1001     21 Nov  7 11:04 man
-rw-r--r--. 1 1001 1001     49 Oct 22 23:16 README
drwxr-xr-x. 9 1001 1001     91 Nov  7 11:04 src
[root@localhost nginx-1.17.5]# ./configure

./configure编译选项如下:

–prefix=<path>  Nginx安装路径。如果没有指定,默认为 /usr/local/nginx

–sbin-path=<path>  Nginx可执行文件安装路径。只能安装时指定,如果没有指定,默认为 <prefix>/sbin/nginx

–conf-path=<path> 在没有给定`–c`选项下默认的`nginx.conf`的路径。如果没有指定,默认为 <prefix>/conf/nginx.conf

–pid-path=<path>  在nginx.conf中没有指定pid指令的情况下,默认的Nginx.pid的路径。如果没有指定,默认为 <prerix>/logs/nginx.pid

如果报错(Error),一般是因为CCGCC环境不具备。首次编译安装需先安装编译环境,CentOS7下使用yum -y install进行安装

[root@localhost src]# yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

模块依赖:Nginx的一些模块需要其他第三方库的支持,例如gzip模块需要zlib库,rewrite模块需要pcre库,ssl功能需要openssl库等,这里一并安装

安装好GCC环境后重新执行./configure预编译,编译成功提示如下:

预编译成功提示

预编译成功在目录中会出现Makefile文件:

预编译成功出现Makefile文件

    3、编译安装

使用make命令编译、make install命令安装(make uninstall是卸载):

[root@localhost nginx-1.17.5]# make
[root@localhost nginx-1.17.5]# make install

安装后的目标目录为/usr/local/nginx,包含conf配置文件目录、html静态页面目录、logs日志文件存放目录、sbin可执行文件所在目录,四个子目录。

[root@localhost src]# cd /usr/local/nginx/
[root@localhost nginx]# ll
total 4
drwxr-xr-x. 2 root root 4096 Nov  6 09:32 conf
drwxr-xr-x. 2 root root   40 Nov  2 10:11 html
drwxr-xr-x. 2 root root   58 Nov  6 09:04 logs
drwxr-xr-x. 2 root root   19 Nov  2 10:11 sbin

三、启动运行

运行/usr/local/nginx/sbin目录下的nginx文件即可开启Nginx。

[root@localhost nginx]# cd sbin/
[root@localhost sbin]# ll
total 3748
-rwxr-xr-x. 1 root root 3835368 Nov  2 10:11 nginx
[root@localhost sbin]# ./nginx

使用ps -ef|grep nginx命令查看Nginx进程(master process代表主进程,worker process代表工作进程):

[root@localhost sbin]# ps -ef|grep nginx
root       3911      1  0 15:38 ?        00:00:00 nginx: master process ./nginx
bobo       3912   3911 19 15:38 ?        00:00:01 nginx: worker process
bobo       3913   3911 19 15:38 ?        00:00:01 nginx: worker process
bobo       3914   3911 20 15:38 ?        00:00:01 nginx: worker process
bobo       3915   3911 20 15:38 ?        00:00:01 nginx: worker process
root       3918   1588  0 15:38 pts/0    00:00:00 grep --color=auto nginx

Nginx默认监听80端口,使用lsof -i:80查看80端口监听情况(可使用yum -y install lsof安装lsof工具):

[root@localhost sbin]# lsof -i:80
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   3911 root    6u  IPv4  23215      0t0  TCP *:http (LISTEN)
nginx   3912 bobo    6u  IPv4  23215      0t0  TCP *:http (LISTEN)
nginx   3913 bobo    6u  IPv4  23215      0t0  TCP *:http (LISTEN)
nginx   3914 bobo    6u  IPv4  23215      0t0  TCP *:http (LISTEN)
nginx   3915 bobo    6u  IPv4  23215      0t0  TCP *:http (LISTEN)

浏览器打开http://192.168.2.128/(你的地址)访问Nginx页面:

Welcome to nginx!

如果不能正常访问服务,可尝试关闭防火墙:

systemctl stop firewalld.service

四、配置环境变量

为了后续方便操作Nginx,可将/usr/local/nginx/sbin/nginx可执行文件所在目录添加到系统环境变量中,添加后可在任意目录执行nginx命令。

1、编辑/etc/profile系统配置文件

[root@localhost sbin]# vi /etc/profile

    2、在配置文件/etc/profile末尾添加如下内容(vi命令:使用上下左右键移动光标到目标位置,按i键进入输入模式编辑内容,按Esc键退回到命令模式,按:wq保存并退出)

export NGX_HOME=/usr/local/nginx
export NGX_PATH=${NGX_HOME}/sbin

export PATH=$PATH:${JAVA_PATH}:${NGX_PATH}

注意:export PATH=多个环境变量之间使用:(冒号)分割,变量使用${}表示。

    3、使用source命令让配置生效

[root@localhost sbin]# source /etc/profile

五、常用命令

    1、Nginx常用命令(配置了环境变量之后可在任意目录执行nginx命令)

启动命令(默认使用/usr/local/nginx/conf/nginx.conf配置文件):

/usr/loacl/nginx/sbin/nginx

指定配置文件启动:

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

测试当前Nginx配置文件是否正确:

nginx -t

测试指定的Nginx配置文件是否正确:

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

修改配置后重新加载生效:

nginx -s reload

当新的配置文件测试通过后,通过nginx -s reload命令加载修改后的配置文件,命令下达后:

a. Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,Nginx继续采用原配置文件进行工作(因为worker进程未受到影响);
b. Nginx启动新的worker进程,采用新的配置文件;
c. Nginx将新的请求分配新的worker进程;
d. Nginx等待以前的worker进程的全部请求响应完毕,关闭相关worker进程;
e. 重复上面过程,直到全部旧的worker进程都被关闭掉。

重新加载日志文件:

nginx -s reopen

开启日志后(例如access.log),日志文件中存放着所有的访问记录,时间长了文件会越积越大。必要时需要做日志切割(由于Linux系统文件句柄的特点,当文件被打开的情况下使用mv移动文件,原来操作这个文件的进程还是有该文件的inode信息,会继续读写原来的文件,因此在不关闭进程的情况下简单的mv是无法切割文件的)

Nginx文件切割过程如下:

a. mv当前日志文件到其他目录,这个时候Nginx继续写原来的文件(写入到新位置文件中);
b. 使用nginx -s reopen命令生成日志文件,这时Nginx会把新产生的日志信息写到新生成的日志文件中。

这样就完成了日志的切割工作,同时切割过程中没有日志的丢失。

快速停止Nginx:

nginx -s stop

优雅的停止Nginx:

nginx -s quit

下一篇,我们深入探索Nginx配置文件,完成:1、反向代理;2、热备;3、负载均衡(轮询、权重、IP_HASH)4、缓存;5、静态资源访问等的配置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335