1 votos

El problema al ejecutar Nginx instalado por macport en Mac, Permiso denegado para /opt/local/var/log/nginx

He cambiado nginx.conf para escuchar en 8080, no en 80. Pero cuando lo ejecuto sin sudo, recibo el error could not open error log file: open() "/opt/local/var/log/nginx/error.log" failed (13: Permission denied). Si lo ejecuto con sudo nginx nginx inicia correctamente.

¿Por qué necesito hacer sudo nginx cuando no está vinculado al puerto 80? ¿Siempre debo hacer sudo nginx sin importar qué? No puedo encontrar una respuesta definitiva en macOS porque todos los artículos que encontré en Google simplemente inician nginx con sudo nginx sin más explicaciones.

Sospecho que este es un problema relacionado con macport. Porque más tarde, cuando ejecuto redis-server(también instalado por macport) sin sudo y cuando quiero apagar redis-server, obtengo el mismo error, Permiso denegado para /opt/local/var/log/nginx

8712:M 31 Oct 2023 11:35:39.339 # User requested shutdown...
8712:M 31 Oct 2023 11:35:39.339 * Saving the final RDB snapshot before exiting.
8712:M 31 Oct 2023 11:35:39.340 # Failed opening the temp RDB file temp-8712.rdb (in server root dir /opt/local/var/log/nginx) for saving: Permission denied
8712:M 31 Oct 2023 11:35:39.340 # Error trying to save the DB, can't exit.
8712:M 31 Oct 2023 11:35:39.340 # Errors trying to shut down the server. Check the logs for more information.

¿Por qué redis necesita escribir log en /opt/local/var/log/nginx ahora? Siento que esto es un error de macport y he abierto un ticket con macport.

Pero mientras tanto, ¿cómo puedo solucionar este problema? ¿Debo cambiar el propietario de /opt/local/var/log/nginx a mi usuario de inicio de sesión (no recuerdo que necesite cambiar el propietario de la carpeta a administrador (no hay solicitud para eso después de la instalación) o siempre debo iniciar nginx y redis con sudo?

Pienso que ambos métodos pueden funcionar pero quiero saber la manera "correcta".

1voto

Como dice el mensaje de error: no puedes escribir el archivo de registro como un usuario normal.

Ya identificaste las formas de solucionar esto: ya sea ejecutar los procesos a través de sudo o cambiar la propiedad/derechos de acceso de los directorios de registro. No estoy seguro si hay una forma correcta o incorrecta y otros factores no mencionados en la pregunta pueden jugar un papel, pero en general cambiar la propiedad/derechos de acceso tiene menos riesgos que ejecutar a través de sudo.

0voto

Patrick Puntos 1413

Descubrí por qué mi redis necesitaba acceder al directorio /opt/local/var/log/nginx. Fue un error tonto mío olvidar que cuando redis se apaga escribiría algunos log en el directorio donde se inició y resulta que inicié redis en /opt/local/var/log/nginx/ y ahora no puedo apagarlo. Así que normalmente no necesito ejecutar redis con sudo.

Pero ejecutar nginx sin sudo en un puerto personalizado resulta ser demasiado problema para la versión instalada de macport debido al problema de propiedad de /opt/local/var/log/nginx

También probé la versión de homebrew y puede funcionar sin sudo (después de la instalación, brew mostrará "El puerto predeterminado se ha establecido en /opt/homebrew/etc/nginx/nginx.conf en 8080 para que nginx pueda ejecutarse sin sudo”)

Así que ahora uso la versión de homebrew cuando no ejecuto nginx como servicio y no quiero hacerlo con sudo.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X