阿里云centos7服务器nginx配置及常见问题解答
前言:
本文参考了jackyzm的博客:https://www.cnblogs.com/jackyzm/p/9600738.html,进行了内容的更新,并请注意这里适用的版本是centos7的版本。并且本文的配置方式曾经在版本8上失败过,因此查看本文前最好先确定服务器的版本。
而关于nginx部分问题的处理,则是参考了文章:http://www.mamicode.com/info-detail-3008792.html进行,其中包括的部分错误如下:
1.make[1]: *** [objs/Makefile:473: objs/src/core/ngx_murmurhash.o] Error 1
2.make[1]: *** [objs/Makefile:774: objs/src/os/unix/ngx_user.o] Error 1
3.make[1]: *** [objs/Makefile:769: objs/src/event/ngx_event_openssl.o] Error 1
本文针对这些问题和一些其他问题的解决方案都进行了阐述和流程上的改良
内容流程:
0.前置说明,1.安装gcc环境,2.安装PCRE库,3.安装SSL库,4.安装zlib库,5.安装nginx,附:nginx在make过程中可能出现的问题,6.nginx启动与使用,7.nginx启动后无法访问的问题解决
具体内容:
0.前置说明
在centos系统中,yum源不直接提供nginx的安装,因此可以通过切换yum源的方法进行nginx的安装,也可以通过直接下载依赖库和nginx安装包的方法来实现,本文介绍的是后者。
一些必要的库和nginx的关系:nginx 中gzip模块需要 zlib 库,rewrite模块需要 pcre 库,ssl 功能需要openssl库
然后本文将选定/usr/local为安装目录,一些库的具体版本号各位可根据实际改变,但由于互相依赖,所以最新的可能存在一些问题,谨慎选择。
且以下命令均需在root权限下执行
1.安装gcc gcc-c++(如新环境,未安装请先安装)
$ yum install -y gcc gcc-c++
2.安装PCRE库
$ cd /usr/local/
$ wget https://sourceforge.net/projects/pcre/files/pcre/8.36/pcre-8.36.tar.gz
(注:pcre版本会实时更新,8.36版本同样是旧版本,如果需要最新版本自行搜索pcre即可,然后选择新版本,不过新版本可能会不太稳定,需要注意。
当前网址获取新版本的方法为访问:https://sourceforge.net/projects/pcre/files/pcre/)
$ tar -zxvf pcre-8.36.tar.gz
$ cd pcre-8.36
$ ./configure
$ make && make install
如报错:configure: error: You need a C++ compiler for C++ support
解决方案:yum install -y gcc gcc-c++
3.安装SSL库
$ cd /usr/local/
$ wget https://www.openssl.org/source/openssl-1.0.1j.tar.gz
(注:openssl同样有版本更新,这里为2020.04的版本,当前网址获取新版本的方法为访问:https://www.openssl.org/source/
这里没有采用1.1.x等版本是因为在后面安装nginx出现了无法解决的错误,所以选择了这一较久的版本,如果可以解决,可以进行尝试,如果能告知解决方案或者成功案例就更感谢了)
$ tar -zxvf openssl-1.0.1j.tar.gz
$ cd openssl-1.0.1j
$ ./config
$ make && make install
4.安装zlib库
$ cd /usr/local/
$ wget http://zlib.net/zlib-1.2.11.tar.gz
(注:同前,版本更新网址为:http://zlib.net/)
$ tar -zxvf zlib-1.2.11.tar.gz
$ cd zlib-1.2.11
$ ./configure
$ make && make install
5.安装nginx
$ cd /usr/local/
$ wget http://nginx.org/download/nginx-1.8.0.tar.gz
(注:同前,获取新版本的网址为:http://nginx.org/download/)
$ tar -zxvf nginx-1.8.0.tar.gz
$ cd nginx-1.8.0
$ ./configure --user=nobody --group=nobody --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.36 --with-zlib=/usr/local/zlib-1.2.11 --with-openssl=/usr/local/openssl-1.0.1j
(注: --with-http_ssl_module:这个不加后面在nginx.conf配置ssl:on后,启动会报nginx: [emerg] unknown directive "ssl" in /opt/nginx/conf/nginx.conf 异常;儿针对pcre、zlib和openssl等等的指定,则是为了保证nginx能够和之前下载的版本匹配一致,注意路径和版本号需要修改为和之前下载对应的样子)
$ make && make install
附:nginx在make过程中可能出现的问题:
报错1:make[1]: *** [objs/Makefile:460: objs/src/core/ngx_murmurhash.o] Error 1
将警告视为报错进行了程序终止
解决方案:进入到nginx安装目录的objs文件夹中,修改Makefile文件:

按下a进入编辑模式,将CFLAGS中的-Werror去除,然后按下esc,输入:wq保存退出

然后再次进行尝试make && make install指令
报错2:make[1]: *** [objs/Makefile:747: objs/src/os/unix/ngx_user.o] Error 1
提示我们struct crypt_data’没有名为‘current_salt’的成员:cd.current_salt[0] = ~salt[0];原文作者说最好的办法是换一个版本,这里开始选择的1.9出现了报错,但是切换成了nginx1.8后还是没有效果,因此便在nginx1.8的基础上使用了替代方案:代码注释
即在nginx安装目录下通过执行vim src/os/unix/ngx_user.c,对ngx_user.c第36行的代码进行注释,前后如下:


然后保存退出,再次尝试make && make install
报错3:make[1]: *** [objs/Makefile:769: objs/src/event/ngx_event_openssl.o] Error 1
说明ssl版本没有告知nginx,应该是前面./configure的时候没有指定ssl版本导致的,需要重新configure,即需要在configure时增加ssl的指定。
--with-openssl=/usr/local/openssl-1.0.1j
报错4:./configure: error: SSL modules require the OpenSSL library.
支持此命令:
yum -y install openssl openssl-devel
报错5:./configure: error: the HTTP gzip module requires the zlib library
configure时没有制定好另外两个库的路径,在–prefix后面接以下命令:
--with-pcre=/usr/local/pcre-8.36 指的是pcre-8.36 的源码路径。--with-zlib=/usr/local/zlib-1.2.11 指的是zlib-1.2.11 的源码路径。
如果以上报错还是无法解决问题,最好查看centos版本是否是7,我就是在更换系统版本后直接成功的。如果遇到其他报错,最好进行检索,无法解决十分抱歉。
6.nginx启动与使用
$ /usr/local/nginx/sbin/nginx
启动成功的标志:打开浏览器访问服务器的ip地址,如果浏览器出现Welcome to nginx! 则表示 nginx 已经安装并运行成功。
其他的一些命令如下:
重启:
$ /usr/local/nginx/sbin/nginx -s reload
停止:
$ /usr/local/nginx/sbin/nginx -s stop
测试配置文件是否正常:
$ /usr/local/nginx/sbin/nginx -t
强制关闭:
$ pkill nginx
这里我没有设置软链接,因此只能通过这么长的指令进行管理,如有需要可自行检索处理,后面如果我有时间也会更新到本文中。
7.nginx启动后无法访问的问题解决
这里如果还看不到nginx的页面,可能是服务器的安全组没有配置导致的,例如阿里云就需要在这里添加http,端口80的配置,如下:


安全组配置之后只需刷新页面即可看到nginx的成功页面。
最后祝各位配置顺利。
阿里云centos7服务器nginx配置及常见问题解答的更多相关文章
- 阿里云ECS服务器相关配置以及操作---上(初学者)
最近买了一台阿里云的ECS服务器 linux系统 centos镜像,把我相关的一些操作记录下来,供大家参考,不足之处欢迎指正. 首先买的过程就不用介绍了,根据自己的实际需要选择自己想要的配置,点击付钱 ...
- 阿里云ECS服务器Ubuntu配置MySQL远程访问
root账户登录服务器Ubuntu16.04 apt-get update apt-get install mysql-server mysql-client; 安装时会让你设置root密码,输入2次 ...
- 阿里云Linux服务器,配置JDK,MySQL
云服务器配置:低配 Linux CentOS 7.4 64位 选择空白镜像: 安装图形界面 yum groups install "MATE Desktop" yum groups ...
- 阿里云ECS服务器源配置
前段时间领取了阿里云ECS免费试用6个月的福利,此处记录一下服务器源配置过程和服务器用户创建过程. 一.CentOS源配置 1.备份 mv /etc/yum.repos.d/CentOS-Base.r ...
- 在阿里云Centos7.6上面配置Mysql主从数据库(master/slave),实现读写分离
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_85 在之前的一篇文章中,阐述了如何在高并发高负载的场景下使用nginx做后台服务的负载均衡:在阿里云Centos上配置nginx+ ...
- 阿里云CentOS7服务器利用LVM分区挂载磁盘全记录
1.进入服务器后,首先利用fdisk -l来观察磁盘信息,可以看出红线标注处,有两块硬盘信息,分别是40G和300G 2.同时你也可以观察到分区信息,40G的硬盘已经分了一个区vda1,大小(Bloc ...
- 阿里云centos7.2 lamp配置
安装apache 1.安装yum -y install httpd 2.设置apache服务开机启动systemctl enable httpd.service 3.开启apache服务systemc ...
- 阿里云centOS7.4 nginx: [emerg] "server" directive is not allowed here in /etc/nginx/vhost/xxxxxx.conf:2
里云centOS7.4配置多个站点遇到的问题nginx: [emerg] "server" directive is not allowed here in /etc/nginx/ ...
- 阿里云CentOS7系列三 -- 配置防火墙
前面讲到了安装JDK以及Tomcat.但是大家会发现,当我们访问 http:// XXX.XXX.XXX.XXX:8080/80 时候,tomcat 猫并没有出现.原因就是没有设置防火墙. 再次介绍下 ...
随机推荐
- 小谢第23问: chorme的性能优化工具
问题场景:在前端日趋工程化的今天,前端性能优化是一名合格的前端工程师必备的技能,那么,如何正确的使用性能分析工具呢? 解决方案: 性能分析的流程: 在开发中我一般使用公司开发的测试脚本-kbase-w ...
- 【JUC系列】01、之大话并发
学习方法 学习技术的方法都很类似,大部分都有着类似的步骤: 场景 需求 解决方案 应用 原理 并发的目的 充分利用CPU 和 I/O资源 提高效率 并发的维度 分工 同步/协作 互斥 分工 线程池 f ...
- Java学习之多线程详解
一.多线程的实现 1.继承Thread类 a.子类继承Thread类具备多线程能力 b.启动线程:子类对象.start() c.不建议使用:避免OOP单继承局限性 package com. ...
- 解决:gradle 前言中不允许有内容
将Android Studio 升级到4.0然后创建一个新项目,编译出现“ gradle 前言中不允许有内容” 的错误,在网上找了很多资料,众说纷纭,但都没有解决我的问题,最后反复摸索把问题解决了. ...
- Python惯用法
目录 1. 不要使用可变类型作为参数的默认值 1. 不要使用可变类型作为参数的默认值 摘自<流畅的Python>8.4.1 class HauntedBus: ""&q ...
- OpenSSL & 加密解密
OpenSSL&加密解密(思维导图) 1. 网络通信概述 传输层协议 进程间通信 监听端口 SSL 裸套接字 2. 加密和解密 2.1 加密的方式 对称加密 公钥加密 单向加密 认证加密 2. ...
- [noi.ac省选模拟赛20200606]赌怪
题目 点这里看题目. 分析 先特判掉\(K=2\)的情况. 首先可以考虑到一个简单 DP : \(f(i)\):前\(i\)张牌的最大贡献. 转移可以\(O(n^2)\)地枚举区间 ...
- Charles抓包2-Charles抓包https请求
目录 1.开启SSL代理 2.安装证书 3.导出证书 4.浏览器安装证书 1.开启SSL代理 菜单,代理-->SSL代理设置 勾选启用SSL代理 在包括选项,添加主机:*,端口:443 确定保存 ...
- pycharm 配置 git 方法
1.打开pycharm ,点击 file——Default-setting——version control 2.配置github账号密码 3.Path to Git executable中填写git ...
- S7-1200视频教程: S7-1200的功能与特点-跟我学 - 1/112
S7-1200视频教程: S7-1200的功能与特点-跟我学 - 1/112 观看连接: http://www.elearning.siemens.com.cn/video/Course/201012 ...