nginx在CentOS上的安装步骤
准备工作
1、检查系统环境
确保你的CentOS版本为7或更高。
确保系统中没有其他服务占用80和443端口,如Apache。
2、更新系统软件包
```bash
sudo yum update y
```
3、安装EPEL源
EPEL(Extra Packages for Enterprise Linux)提供了许多额外的软件包,包括Nginx。
```bash
sudo yum install epelrelease y
```
安装Nginx所需的依赖库
Nginx需要一些依赖库才能正常运行,以下是安装这些依赖的命令:
命令 | 说明 |
sudo yum install gcc y | 安装GCC编译器,用于编译Nginx源码。 |
sudo yum install pcre pcredevel y | 安装PCRE库及其开发包,用于解析正则表达式。 |
sudo yum install zlib zlibdevel y | 安装zlib压缩库及其开发包。 |
sudo yum install openssl openssldevel y | 安装OpenSSL库及其开发包,用于支持HTTPS。 |
执行以下命令来安装所有这些依赖:
sudo yum install gcc pcre pcredevel zlib zlibdevel openssl openssldevel y
下载并解压Nginx源码
1、创建存放目录
```bash
cd /home
mkdir nginx
cd nginx
```
2、下载Nginx源码
```bash
wget https://nginx.org/download/nginx1.24.0.tar.gz
```
3、解压Nginx源码
```bash
tar zxvf nginx1.24.0.tar.gz
cd nginx1.24.0
```
编译和安装Nginx
1、配置Nginx
```bash
./configure
```
2、解决依赖问题
如果在配置过程中遇到错误,例如缺少某些依赖,可以通过以下命令解决:
```bash
sudo yum install make zlibdevel gccc++ libtool openssl openssldevel y
./configure user=nobody group=nobody prefix=/usr/local/nginx withhttp_stub_status_module withhttp_gzip_static_module withhttp_realip_module withhttp_sub_module withhttp_ssl_module
```
3、编译Nginx
```bash
make
```
4、安装Nginx
```bash
make install
```
启动Nginx并设置开机自启
1、启动Nginx
进入安装目录并启动Nginx:
```bash
cd /usr/local/nginx/sbin
./nginx
```
2、检查Nginx状态
使用以下命令查看Nginx进程是否成功启动:
```bash
ps ef | grep nginx
```
3、设置开机自启动
创建一个systemd服务文件:
```bash
sudo vi /etc/systemd/system/nginx.service
```
添加以下内容:
```ini
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target remotefs.target nsslookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx t q g 'daemon on; master_process on;'
ExecStart=/usr/local/nginx/sbin/nginx g 'daemon on; master_process on;'
ExecReload=/usr/local/nginx/sbin/nginx s reload
ExecStop=/usr/local/nginx/sbin/nginx s quit
PrivateTmp=true
[Install]
WantedBy=multiuser.target
```
4、启用并启动服务
```bash
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
```
5、检查Nginx服务状态
```bash
sudo systemctl status nginx.service
```
配置防火墙以开放HTTP和HTTPS端口
1、开放端口
```bash
sudo firewallcmd permanent zone=public addservice=http
sudo firewallcmd permanent zone=public addservice=https
sudo firewallcmd reload
```
2、验证端口是否打开
```bash
sudo firewallcmd listall
```
常见问题及解决方法
1、Q: Nginx启动报错“bind() to 0.0.0.0:80 failed (13: Permission denied)”
A: 该错误通常是由于SELinux的安全策略限制导致的,解决方法如下:
```bash
sudo setsebool P httpd_can_network_connect 1
```
或者将Nginx绑定到非标准端口,如8080,并在配置文件中修改监听端口:
```conf
server {
listen 8080;
server_name localhost;
...
}
```
2、Q: Nginx配置文件测试失败
A: 如果运行nginx t
命令时出现配置错误,可以按照以下步骤排查:
1. 检查配置文件路径是否正确。
2. 确保配置文件语法正确,特别是大括号的匹配情况。
3. 查看日志文件/var/log/nginx/error.log
获取更多错误信息。