[Nginx] Hướng dẫn fix lỗi ‘getpwnam(“www”) failed’ khi khởi động Nginx

Trường hợp, bạn tiến hành cài đặt compile Nginx xong rồi khởi động dịch vụ thì gặp ngay thông báo lỗi ‘getpwnam(“www”) failed‘ như sau :

# /etc/init.d/nginx start
getpwnam(“www”) failed in /etc/nginx/nginx.conf

 
Một số thông báo lỗi tương đương :

getpwnam(“root”) failed
getpwnam(“nginx”) failed
getpwnam(“www-data”) failed

Vậy thông báo đó là gì và fix như thế nào ?

 
1. Nguyên nhân

Khi mà bạn compile Nginx từ source code, thường bạn sẽ chỉ định thông tin ‘user‘ và ‘group‘ sẽ được sử dụng để chạy dịch vụ dưới quyền user đó.

Ví dụ lúc compile Nginx có 2 option chỉ định thông tin như sau :

# ./configure --user=www --group=www

 
Thì bạn cần phải tuyệt đối đảm bảo rằng user đó đã được tạo và tồn tại trên hệ thống thì mới có thể khởi chạy dịch vụ dưới quyền user đó. Trong trường hợp bạn quên khởi tạo user tương ứng thì bạn sẽ gặp ngay thông báo lỗi này, vì Nginx không tìm thấy thông tin user sử dụng cho hoạt động dịch vụ web server.

Ok, vậy tóm lại nguyên nhân là ‘không tồn tại user trên hệ thống dùng để hoạt động dịch vụ Nginx Web Server dưới quyền user đó‘. Lỗi này thường gặp khi compile source Nginx .

 
2. Khắc phục

Đơn giản vô cùng, chỉ cần khởi tạo ra user đó trên hệ thống là được rồi. Mình sẽ tạo user đó với 2 lệnh đơn giản như sau :

# groupadd -r www
# useradd -r -s /sbin/nologin -d /dev/null -g www www

 
Rồi sau đó bạn khởi động lại dịch vụ Nginx là xong. Nếu có bất kì thắc mắc nào thì các bạn bình luận ở dưới nhé !

Previous article[SNMP] Phân biệt giữa 2 giá trị SNMP OID ifAdminStatus và ifOperStatus
Next article[Ebook] Nginx HTTP Server 3rd Edition – Download PDF
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !