最近要在Linux系统中实现推流和解码,需要安装nginx,研究了一天,终于安装成功了,记录一下。因为不通外网,所以我是直接下载源码,然后上传到服务器上,再配置并安装的。步骤如下:
1. 安装OpenSSL
OpenSSL是什么东东?下面是来自百度百科的一个定义:
OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
由于nginx可能需要支持https协议(在SSL协议上传输的HTTP),因此以防将来用到,这里需要安装一下。
源码下载地址:https://www.openssl.org/source/
通过ftp上传服务器,然后解压、配置、安装(可通过./config --help查看配置选项):
tar -axvf openssl-1.1.0g.tar.gz
cd openssl-1.1.0g
./config --prefix=/usr/local/openssl
make
sudo make install
2. 安装PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,因此需要在linux上安装pcre库。
源码下载地址:
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
上传服务器后,执行以下步骤:
(1) 解压,进入解压后的路径:
tar -zxvf pcre-8.41.tar.gz
cd pcre-8.41/
(2) 配置路径:
./configure --prefix=/usr/local/pcre-8.41
(3) 安装
make
sudo make install
3. 安装zlib
zlib库是为http数据提供压缩和解压缩方法的库,因此,这个库也需要安装。
源码下载路径: http://zlib.net/
下载并上传后,解压,
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
配置:
./configure --prefix=/usr/local/zlib
安装:
make
sudo make install
4. 安装nginx
安装完以上几个主要的依赖库以后,就可以安装nginx了。
源码下载路径:http://nginx.org/en/download.html
或 http://nginx.org/download/nginx-1.12.2.tar.gz
放到服务器上并解压:
tar -zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2
配置,通过./configure --help可查看配置选项,也可通过查阅官方文档http://nginx.org/en/docs/configure.html了解各个配置选项的详细说明。
./configure --prefix=/usr/local/nginx
--sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid
--with-openssl=../openssl-1.1.0g
--with-pcre=../pcre-8.41
--with-zlib=../zlib-1.2.11
注意,--with-openssl、--with-pcre和--with-zlib几个选项后面都是这几个库的源码位置,设置中,我们将这几个库的源码放在了与nginx源码相同的目录下。
执行上面的配置后,显示的执行结果如下:
然后安装:
make
sudo make install
至此,nginx就安装完成了。
5. 执行nginx
想要普通用户也能对nginx服务进行操作,需要赋予普通用户执行的权限:
sudo chmod u+s /usr/local/nginx/nginx
然后,我们进入到/usr/local/nginx目录下,执行./nginx,通过如下命令查看nginx是否启动成功:
ps aux | grep nginx
执行结果如下:
可以看到,系统中包含两个nginx进程,一个是master process,一个是worker process。实际上,nginx服务中包含一个主进程(master process)和若干个工作进程(worker process),主进程的主要任务是读取与评估配置文件,并维护工作进程;而工作进程负责执行实际请求的处理。nginx采用基于事件的模型和依赖于操作系统的机制,在不同的worker process之间有效分发请求。worker process的数量在配置文件中定义,可配置为某个固定值,也可根据可用的CPU核数来自动调整。
那么,nginx启动后,如何停止、重载呢?可以通过下面的命令:
nginx -s signal
其中,signal可根据需要设置成如下几个选项之一:
- stop — fast shutdown
- quit — graceful shutdown
- reload — reloading the configuration file
- reopen — reopening the log files
例如,在worker process处理完当前请求后就关闭nginx,可用如下命令:
nginx -s quit
修改配置文件后,可通过执行下面命令使修改生效:
nginx -s reload
当然,对于退出nginx,也可以通过Linux系统工具kill命令来杀掉主进程(kill + PID),例如,
kill 32515
6. 修改nginx可执行文件路径
每次执行nginx都要到安装目录下很麻烦,时间久了容易忘记安装的位置,可以把它放在系统路径下,这样,在任何路径下都可以直接执行nginx命令。我用的方法如下:
vi /etc/profile
或 gedit /etc/profile
进入对profile的编辑,在文件末尾,添加
export PATH=$PATH:/usr/local/nginx
注意,上面“PATH:”后面跟的路径截止到可执行文件上面一层路径即可,不需要包含可执行文件名称,例如在我的示例中,可执行文件全路径为/usr/local/nginx/nginx,那么这里只需要写/usr/local/nginx即可。
该方法需要重启系统后生效。重启后,在当前目录下执行nginx,然后通过ps -aux | grep nginx查看,截图如下:
可见,做以上路径添加操作后,nginx在任意路径下都可以执行了。停止nginx也一样: