Ubuntu18.04编译安装nginx-kafka-module

本文介绍如何在 Ubuntu 系统上安装 Nginx,并编译配置 ngx_kafka_module 插件以实现与 Kafka 的消息传递功能。文章详细记录了从安装依赖、下载编译 librdkafka 到最终配置 Nginx 的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装依赖

sudo apt-get update
sudo apt-get install -y build-essential zlib1g-dev libpcre3 libpcre3-dev  libssl-dev libxslt1-dev libxml2-dev libgd-dev libgeoip-dev  libgoogle-perftools-dev libperl-dev libtool libpcrecpp0v5 openssl gcc g++

下载librdkafka并编译

git clone https://github.com/edenhill/librdkafka
cd librdkafka
./configure
make && make install

下载ngx_kafka_module

git clone https://github.com/brg-liuwei/ngx_kafka_module

下载nginx源码包

wget http://nginx.org/download/nginx-1.12.2.tar.gz

解压

tar -zxvf nginx-1.12.2.tar.gz

编译nginx,然后将将插件同时编译

cd nginx-1.12.2
./configure --add-module=/你"ngx_kafka_module"的安装路径/ngx_kafka_module/
make && make install

配置目录在/usr/local/nginx/conf/

启动nginx

cd /usr/local/nginx/sbin
./nginx

报错,error while loading shared libraries: librdkafka.so.1: cannot open shared object file: No such file or directory

加载so库:

echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig

修改nginx的配置文件:设置一个location和kafaka的topic

http块下

kafka;
kafka_broker_list kafka节点1IP:9092 kafka节点2IP:9092 kafka节点3IP:9092;

server块

location = /kafka/主题名(topic) {
            kafka_topic kafka主题名(topic);
        }

nginx自启动

Ubuntu 16.10开始不再使用initd管理系统,改用systemd,包括用systemctl命令来替换了service和chkconfig的功能。

比如以前启动mysql服务用sudo service mysql start,现在用sudo systemctl start mysqld.service。

systemd 默认读取 /etc/systemd/system 下的配置文件,该目录下的文件会链接/lib/systemd/system/下的文件。

1.建立服务文件
vim /lib/systemd/system/nginx.service

复制如下内容写入到nginx.service中

[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target

Description:描述服务
After:依赖,当依赖的服务启动之后再启动自定义的服务

[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令(需要根据路径适配)
ExecReload为重启命令(需要根据路径适配)
ExecStop为停止命令(需要根据路径适配)
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径

[Install]服务安装的相关设置,可设置为多用户

Type
Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。
Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。
Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes使得systemd在服务进程退出之后仍然认为服务处于激活状态
Type=notify:与 Type=simple相同,但约定服务会在就绪后向systemd发送一个信号。这一通知的实现由 libsystemd-daemon.so提供。
Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。
PIDFile : pid文件路径
ExecStartPre :启动前要做什么,上文中是测试配置文件 -t
2.保存目录
/usr/lib/systemd/system
3.设置开机自启动
systemctl enable nginx.service //任意目录下执行
4.使用命令

systemctl start nginx.service //启动nginx服务
systemctl enable nginx.service //设置开机自动启动
systemctl disable nginx.service //停止开机自动启动
systemctl status nginx.service //查看状态
systemctl restart nginx.service //重启服务
systemctl list-units --type=service //查看所有服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值