centos7 源码编译安装 nginx
安装步骤
下载 nginx 源码包 官网
$ wget http://nginx.org/download/nginx-1.16.0.tar.gz
解压 nginx 压缩包
$ tar -zxvf nginx-1.16.0.tar.gz
创建 www 用户 (已存在可以跳过)
$ groupadd www
$ useradd -g www -s /sbin/nologin -M www
运行 configure 文件检测程序
$ cd nginx-1.16.0 $ ./configure --prefix=/usr/local/nginx --user=www --group=www checking for OS + Linux 3.10.0-957.12.2.el7.x86_64 x86_64 checking for C compiler ... not found ./configure: error: C compiler cc is not found
# 此处是因为没有 gcc 和 gcc-c++ 依赖包,由于我是 centos 可以直接通过yum进行安装
$ yum -y install gcc gcc-c++
... 此处省略安装步奏
# 再次执行上面的 configure 步骤
$ ./configure --prefix=/usr/local/nginx --user=www --group=www
... 此处省略一部分
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
# 这次根据提示是因为没有 PCRE 库 ,执行 yum 安装 pcre-devel即可
$ yum -y install pcre-devel
... 此处省略一部分
Running transaction
正在安装 : pcre-devel-8.32-17.el7.x86_64 1/1
验证中 : pcre-devel-8.32-17.el7.x86_64 1/1 已安装:
pcre-devel.x86_64 0:8.32-17.el7 完毕!
# 再次执行 configure 步骤
$ ./configure --prefix=/usr/local/nginx --user=www --group=www
... 此处省略一部分
./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.
# 这此根据提示是因为没有 zlib 库 ,执行 yum 安装 zlib 和 zlib-devel 即可
$ yum -y install zlib zlib-devel
... 此处省略一部分
Running transaction
正在安装 : zlib-devel-1.2.7-18.el7.x86_64 1/1
验证中 : zlib-devel-1.2.7-18.el7.x86_64 1/1 已安装:
zlib-devel.x86_64 0:1.2.7-18.el7 完毕!
# 再次执行 configure 步骤
$ ./configure --prefix=/usr/local/nginx --user=www --group=www
... 此处省略一部分
Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
+ using system zlib library nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
# 总算通过了下面进行编译和安装
$ make && make install
# 检测是否安装成功
$ /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
# 辛苦总算没有白费,成功了.
启动 nginx 服务
$ /usr/local/nginx/sbin/nginx
# 启动了一个nginx服务,然我测试下是否启动成功
$ lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 17440 root 6u IPv4 35217 0t0 TCP *:http (LISTEN)
nginx 17441 nobody 6u IPv4 35217 0t0 TCP *:http (LISTEN)
# 完成。
# PS:如果 lsof 没有这个操作可以使用 yum -y install lsof 安装
配置防火墙80端口
$ firewall-cmd --zone=public --add-port=80/tcp --permanent
$ systemctl restart firewalld
安装总结
# 下载、解压 源码包
$ wget http://nginx.org/download/nginx-1.16.0.tar.gz
$ tar -zxvf nginx-1.16.0.tar.gz
# 创建 www 用户 (已存在可以跳过)
$ groupadd www
$ useradd -g www -s /sbin/nologin -M www
# 安装 前置服务
$ yum -y install gcc gcc-c++ pcre-devel zlib zlib-devel
# 检测安装环境
$ ./configure --prefix=/usr/local/nginx --user=www --group=www
# 编译 和 安装
$ make && make install
# 启动服务
$ /usr/local/nginx/sbin/nginx
# 打开防火墙
$ firewall-cmd --zone=public --add-port=80/tcp --permanent
$ systemctl restart firewalld
操作命令
# 停止
[1]
$ pkill -9 nginx
[2]
$ nginx -s stop
# 检查配置是否正确
$ nginx -t
# 重启
$ nginx -s reload
配置开机自启
由于我是 centos 7 ,我打算用 systemctl 作为我的管理工具,下面是我的操作步骤。
还有一个原因是因为我配置 nginx 启动脚本总是报错,我懒得去弄官网给的那个脚本了。
$ vim /lib/systemd/system/nginx.service
# 输入以下代码,并且保存
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx reload
ExecStop=/usr/local/nginx/sbin/nginx quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
$ systemctl start nginx.service
Failed to execute operation: Access denied
# 这里报了一个错误,提示我没有权限
$ setenforce 0 # 临时关闭 selinux ,如果想长久关闭请自行搜索
$ systemctl start nginx
# 没有报错,测试一下
$ lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1398 root 6u IPv4 19609 0t0 TCP *:http (LISTEN)
nginx 1399 www 6u IPv4 19609 0t0 TCP *:http (LISTEN)
# 成功,设置为开机自动启动
$ systemctl enable nginx.service
centos7 源码编译安装 nginx的更多相关文章
- CentOS7 源码编译安装Nginx
源码编译安装nginx 1.下载nginx源码包(这里以nginx-1.18.0为例) wget http://nginx.org/download/nginx-1.18.0.tar.gz 2 ...
- centos7 源码编译安装nginx教程 nginx安装脚本 lua-nginx-module
安装nginx需要pcre zlib openssl的库,下文都是在官网直接下载用作编译安装 该nginx安装教程,有安装maxmind IP 库 该nginx安装教程有安装lua-nginx-mod ...
- Centos7源码编译安装PHP7.2(生产环境)
安装PHP依赖包,否则在编译的过程中可能会出现各种报错 # Centos 安装epel-release源并将系统包更新到最新版本 $ yum install epel-release-y $ yum ...
- centos7源码编译安装lamp/lnmp
centos7源码编译安装lamp/lnmp 进程:是包工头(相当于是个门,只管开门关门,不管门内的事儿) 线程:是各种工种(cpu调度的是线程) 进程 是一件事情, 线程 是 同一个时间范围内 同时 ...
- 源码编译安装nginx及设置开机启动项
1.上传nginx文档:解压到/data目录下,并安装依赖包tar xf nginx-1.20.1.tar.gz -C /data/cd /data/nginx-1.20.1/ && ...
- Centos7通过yum跟源码编译安装Nginx
源码编译安装 http://nginx.org/en/download.html 到官网下载,然后用XFTP上传到root目录 把文件解压出来 tar -zxvf nginx-1.16.0.tar.g ...
- Linux系统 - 源码编译安装Nginx
什么是Nginx? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下N ...
- centos7 源码编译安装TensorFlow CPU 版本
一.前言 我们都知道,普通使用pip安装的TensorFlow是万金油版本,当你运行的时候,会提示你不是当前电脑中最优的版本,特别是CPU版本,没有使用指令集优化会让TensorFlow用起来更慢. ...
- Centos7源码编译安装mysql8
前面介绍了很多关于mysql的文章,下面主要介绍一下mysql8的源码编译安装 一 基本环境 [root@CentOS-7-x86-64-Minimal-1810 ~]# cd /usr/local/ ...
随机推荐
- C/C++ - 指针 与 引用
一.指针 1.指针与指针变量的区分 a.指针:指针就是内存编号,也就是内存地址,通俗的讲,指针就是变量的地址. 注1:指针的大小是根据计算机的操作系统而定的,跟变量类型无关 注2:如果是32位的操作系 ...
- 使用word2vec对中文维基百科数据进行处理
一.下载中文维基百科数据https://dumps.wikimedia.org/zhwiki/并使用gensim中的wikicorpus解析提取xml中的内容 二.利用opencc繁体转简体 三.利用 ...
- phpexcel 导出数字类型字段导出错误或者为空解决办法 (原)
跟我们写excel时候一样,手机号或者较长的数字类型,或被科学计数法和谐,但是如果类型是字符串,长一些的数字就不受影响了. 解决导出被和谐的最简单易懂的,就是最前面拼接‘ ’ 空格,或者字母符号之类, ...
- python学习之路(20)
装饰器 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数. >>> def now(): print('2019.0519') >>> ...
- 【学习】SpringBoot之自定义拦截器
/** * 自定义拦截器 **/ @Configuration//声明这是一个拦截器 public class MyInterceptor extends WebMvcConfigurerAdapte ...
- 最近给几个CRM软件配套开发了Outlook插件,讲讲Outlook插件开发注意事项
原始出处:www.cnblogs.com/Charltsing/p/OutlookAddinsTips.html联系QQ:564955427 从去年到现在,写了四五个Outlook插件,其中两个是给C ...
- Jenkins发布
右键查看图片显示全图
- python3下import MySQLdb出错问题
原因:python2下是使用的MySQLdb,python3下用的是pymysql 安装 pip install pymysql
- C# 中的字符串内插
$ 特殊字符将字符串文本标识为内插字符串. 内插字符串是可能包含内插表达式的字符串文本. 将内插字符串解析为结果字符串时,带有内插表达式的项会替换为表达式结果的字符串表示形式. 此功能在 C# 6 及 ...
- Cocos2d-X多线程(3) cocos2dx中的线程安全
在使用多线程时,总会遇到线程安全的问题.cocos2dx 3.0系列中新加入了一个专门处理线程安全的函数performFunctionInCocosThread(),他是Scheduler类的一个成员 ...