手动处理Nginx遇到的一些问题

前几天给nginx添加扩展rtmp模块,骚操作删除了很多文件而导致遇到非常多的问题(一般人还真遇不到,哈哈),弄完之后觉得没什么,那会儿还是花了我挺多时间的,给大家分享下

正确的做法

当前有正在运行的nginx,添加rtmp模块:

1.先下载rtmp模块

 git clone https://github.com/arut/nginx-rtmp-module.git  

2.查看nginx运行的命令, 注意V是大写

nginx -V

在这里插入图片描述
把新加的rtmp模块配置到nginx,要在原有的模块设置–add-module=/path to rtmp/

3.进入nginx的源文件目录(有configure文件),然后添加rtmp模块,对nginx再次进行编译

注意,这里不要make install,否则会覆盖

cd /usr/local/src/nginx.1.25.1
./configure --prefix=/usr/local/nginx-1.25.1 --with-openssl=/usr/local/src/openssl-1.0.2s --with-pcre=/usr/local/src/pcre-8.43 --with-zlib=/usr/local/src/zlib-1.2.11 --add-module=/usr/local/nginx-rtmp-module-master --with-http_ssl_module
make

4.配置nginx.conf文件,添加rtmp模块

rtmp {
    server {
        listen 8787;
        chunk_size 4000;
        application live {
             live on;
             record all;
             record_path /tmp/av;
             record_max_size 1K;
             record_unique on;
             allow publish all;
             deny publish all;
             allow play all;
        }
    }
}

5.重新载入nginx配置文件,重启nginx

nginx -s reload
systemctl restart nginx

6.可以查看是否有绑定上rtmp模块

systemctl status nginx.service

7.一切就绪用OBS Studio测试一下吧

配置场景-显示器采集,设置推流地址
在这里插入图片描述

在这里插入图片描述

接下来是遇到的一些问题

-bash: /usr/sbin/nginx: 没有那个文件或目录
是/etc/profile 文件配置的Nginx路径问题
使用vim编辑此文件:vim /etc/profile

[emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
显示端口已被占用,杀掉进程即可
netstat -nlp | grep :80
看到进程后杀掉: kill -9 xxxx

-bash: nginx: 未找到命令
可能是修改了/etc/profile文件未重新加载
profile文件重加载: source /etc/profile

Can’t open PID file /var/run/nginx.pid (yet?) after start
出现这种问题是因为nginx服务启动就会搜索nginx.pid文件,但是nginx此时还未创建nginx.pid文件,因此需要睡它一会儿,在/usr/lib/systemd/system/nginx.service加上ExecStartPost=/bin/sleep 0.1 即可

nginx如果起来了,配置nginx.conf也没问题,但是服务访问不了,很可能是防火墙原因

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
# 安装PCRE库 cd /usr/local/src sudo wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz sudo tar -zxvf pcre-8.41.tar.gz cd pcre-8.41 sudo ./configure sudo make sudo make install # 安装zlib库 cd /usr/local/src sudo wget http://zlib.net/zlib-1.2.11.tar.gz sudo tar -zxvf zlib-1.2.11.tar.gz cd zlib-1.2.11 sudo ./configure sudo make sudo make install # 安装ssl(某些vps默认没装ssl) cd /usr/local/src sudo wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz sudo tar -zxvf openssl-1.0.1t.tar.gz # 安装nginx # Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个,下面是把 Nginx 安装到 /usr/local/nginx 目录下的详细步骤: cd /usr/local/src sudo wget http://nginx.org/download/nginx-1.4.2.tar.gz sudo tar -zxvf nginx-1.4.2.tar.gz cd nginx-1.4.2 cd /usr/local/src sudo wget http://nginx.org/download/nginx-1.13.5.tar.gz sudo tar -zxvf nginx-1.13.5.tar.gz cd nginx-1.13.5 sudo ./configure --sbin-path=/usr/local/nginx/nginx \ --conf-path=/usr/local/nginx/nginx.conf \ --pid-path=/usr/local/nginx/nginx.pid \ --with-http_ssl_module \ --with-pcre=/usr/local/src/pcre-8.41 \ --with-zlib=/usr/local/src/zlib-1.2.11 \ --with-openssl=/usr/local/src/openssl-1.0.1t sudo make sudo make install #运行 sudo vim /usr/local/nginx/nginx.conf sudo ./nginx sudo ./nginx -s reload root实例: location ^~ /t/ { root /www/root/html/; } 如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/t/a.html的文件。 alias实例: location ^~ /t/ { alias /www/root/html/new_t/; } location /data/ { proxy_pass http://localhost:9003/; } 如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/new_t/a.html的文件。注意这里是new_t,因为alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值