xzhuz / blog-gitment

博客备份和comment记录
https://meisen.pro
0 stars 0 forks source link

我是如何在服务器上配置nginx的 #9

Open xzhuz opened 6 years ago

xzhuz commented 6 years ago

https://meisen.pro/article/626ea22e0d1446a0bbda4848543d1b97

书到用时方恨少。之前配置过nginx,但没有记录。今天在重新配置nginx的时候,遇到了问题还要重新去找一遍。

此文定义适用干货篇

准备包

 要配置服务器,怎么也得有个包吧。这也就是第一步了。

 准备包有两种方式,一种是自己手动下载包,然后将包上传到服务器。一种是通过wget指令从指定URL下载包到服务器位置。

如果当前系统有FTP工具,可以使用方式一。如果没有FTP工具或者不想这么麻烦,可以使用方式二。

方式一: 将包上传到服务器

1. 从官网下载包:官网链接

这里下载nginx-1.12.2这个版本:下载链接。当然,也可以下载其它版本。

2. 下载完成后,通过ftp工具将包上传到服务器

如果所使用的系统有ftp工具,那么通过工具将包传到服务器的指定位置。

这里可以推荐一个很好用的ftp工具:FillZilla

这个工具支持MacUbuntuWindows。在没有好的FTP工具的Ubuntu下可谓是神器。附一个官网链接

方式二: 通过wget

 笔者在部署配置Nginx的时候,是使用的该方式,所以就通过该方式来讲解准备包的完整步骤。

1. 登陆服务器,在服务器上创建一个文件夹(主要是方便管理)

➜  ~ mkdir /usr/local/nginx

2. 进入上面创建的文件夹,下载安装包

➜  ~ cd /usr/local/nginx
➜  ~ wget http://nginx.org/download/nginx-1.12.2.tar.gz
## 执行ls -l 指令查看当前文件夹下文件
-rwxr-xr-x  1 root root 981687 Jun  5 22:30 nginx-1.12.2.tar.gz*

3. 解压nginx-1.12.2.tar.gz

➜  ~ tar -xvf nginx-1.12.2.tar.gz
## 这里可以看到解压的文件信息
## 解压完成之后执行ls -l
drwxr-xr-x  9 1001 1001   4096 May  7 22:32 nginx-1.12.2/
-rwxr-xr-x  1 root root 981687 Jun  5 22:30 nginx-1.12.2.tar.gz*
## 在nginx-1.12.2目录下可以看到以下文件
total 1400
-rw-r--r--   1 1001  1001   272K 10 17  2017 CHANGES
-rw-r--r--   1 1001  1001   414K 10 17  2017 CHANGES.ru
-rw-r--r--   1 1001  1001   1.4K 10 17  2017 LICENSE
-rw-r--r--   1 1001  1001    49B 10 17  2017 README
drwxr-xr-x  25 1001  1001   800B 10 17  2017 auto
drwxr-xr-x  11 1001  1001   352B 10 17  2017 conf
-rwxr-xr-x   1 1001  1001   2.4K 10 17  2017 configure
drwxr-xr-x   6 1001  1001   192B 10 17  2017 contrib
drwxr-xr-x   4 1001  1001   128B 10 17  2017 html
drwxr-xr-x   3 1001  1001    96B 10 17  2017 man
drwxr-xr-x   9 1001  1001   288B 10 17  2017 src

4. 进入nginx-1.12.2,这时候就可以来编译安装了

➜  ~ ./configure --prefix=/usr/local/nginx --with-http_v2_module --with-http_stub_status_module --with-http_ssl_module
➜  ~ make
➜  ~ make install

./configure 说明

如果不想指定安装的目录,就不用指定--prefix

如果不想额外的添加编译包,也不用添加后面额--with*

这里使用--with*是配置https需要的编译包

我部署在服务器上面的nginx还额外编译了http_gzip_static_module的包,这里没有同时编译,放到后面需要新添加模块的时候

5. 查看nginx版本

➜  ~ /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.12.2

## 使用-V可以查看更详细的信息
➜  ~ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.12.2
built with OpenSSL 1.0.2g  1 Mar 2016
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_v2_module --with-http_stub_status_module --with-http_ssl_module

问题处理

 你认为这样子就结束了吗? 不是这么简单的,当时执行是./configure命令之后,你会发现会有一堆错误信息....What?接下来,笔者列出我自己遇到和网上收集到的错误信息,并说明解决办法。

问题一:缺少PCRE错误

 问题核心描述:error: the HTTP rewrite module requires the PCRE library.

 问题解决办法:

➜  ~ sudo apt-get install libpcre3 libpcre3-dev

其他下载地址:PCRE

PCRE 作用是让 Nginx 支持 Rewrite 功能。

问题二: 缺少zlib错误

 问题核心描述: error: the HTTP gzip module requires the zlib library.

 问题解决办法:

➜  ~ sudo apt-get install zlib1g-dev

其他下载地址:Zlib

以上两个问题是笔者自己在部署过程中遇到的问题,也是考这两个解决办法解决了问题。分享给大家!

问题三:缺少OpenSSL错误

 这个问题没有真实遇到,但是在网上收集到的,如有错误请指出。

 问题解决:

  ➜  ~ sudo apt-get install openssl libssl-dev

目前笔者也只是遇到和收集了这三个错误,如果以后越到其他错误。也会继续来更新此博客。

问题解决之后,就可以继续执行以下命令完成部署。

➜  ~ ./configure --prefix=/usr/local/nginx --with-http_v2_module --with-http_stub_status_module --with-http_ssl_module
➜  ~ make
➜  ~ make install

其他问题: 缺少GCC GCC-C++

之前在CentOs上面安装Nginx安装时遇到这个问题

 问题核心描述:checking for C compiler ... not found. ./configure: error: C compiler cc is not found

 问题解决办法:

➜  ~ yum -y install gcc gcc-c++

nginx相关指令

启动nginx

➜  ~ /usr/local/nginx/sbin/nginx

 每次这样子启动是不是很麻烦,来讲这个执行命令放到启动脚本中吧。

## 笔者是在放到/etc/profile
➜  ~  sudo echo \"alias nginx=/usr/local/nginx/sbin/nginx\" >> /etc/profile

## 以后就可以直接通过下面指令来启动nginx了
➜  ~ nginx

可以使用service的服务器可以通过以下方式

➜ ~ service nginx start

其实还可以通过制定配置文件的方式来启动nginx

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

重新加载配置文件

 每次修改nginx.conf配置文件之后,通过下面文件加载新配置文件.

➜  ~ nginx -s reload

可以使用service的服务器可以通过以下方式

➜ ~ service nginx reload

停止nginx

➜  ~ nginx -s stop
## 当然,也可以使用杀掉进程的方式来停止nginx

可以使用service的服务器可以通过以下方式

➜ ~ service nginx stop

汇总

## 启动
➜  ~ nginx
## 重新加载配置文件
➜  ~ nginx -s reload
## 停止
➜  ~ nginx -s stop

添加新模块

 在上面的编译安装讲解模块,笔者故意留了一个坑,没有添加安装http_gzip_static_module模块。这里就来讲讲怎么安装这个模块。

 添加新模块和编译安装过程基本一致,只是要在./configure后面新增--with-http_gzip_static_module就可以。

➜  ~ ./configure --prefix=/usr/local/nginx --prefix=/usr/local/nginx --with-http_v2_module --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module
➜  ~ make
## 这里很多人说直接make就可以,因为make install会覆盖安装,但是不知道为什么,我每次make之后都不可以,所以都只执行完make之后,还会执行make install命令.我没有找到原因,如果有同学知道了, 可以在评论中说明\uD83E\uDD23
➜  ~ make install

添加该模块可以支持gzip_static on;

转载请注明出处====

xzhuz commented 5 years ago

nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)