From f1685e371fe8a3bb9442fe2c5e0e33f5da0ac4f9 Mon Sep 17 00:00:00 2001 From: Max Romanov Date: Tue, 5 Sep 2017 10:22:44 -0700 Subject: Introducing working_directory directive for applications. --- src/nxt_application.c | 13 +++++++++++++ src/nxt_application.h | 2 ++ src/nxt_conf_validation.c | 15 +++++++++++++++ src/nxt_main_process.c | 6 ++++++ 4 files changed, 36 insertions(+) (limited to 'src') diff --git a/src/nxt_application.c b/src/nxt_application.c index b887c819..232f5a7e 100644 --- a/src/nxt_application.c +++ b/src/nxt_application.c @@ -297,6 +297,19 @@ nxt_app_start(nxt_task_t *task, void *data) nxt_app = nxt_app_module_load(task, lang->file); } + if (app_conf->working_directory != NULL && + app_conf->working_directory[0] != 0) + { + ret = chdir(app_conf->working_directory); + + if (nxt_slow_path(ret != 0)) { + nxt_log(task, NXT_LOG_WARN, "chdir(%s) failed %E", + app_conf->working_directory, nxt_errno); + + return NXT_ERROR; + } + } + if (nxt_slow_path(nxt_thread_mutex_create(&nxt_app_mutex) != NXT_OK)) { return NXT_ERROR; } diff --git a/src/nxt_application.h b/src/nxt_application.h index 5998e3e9..ca968299 100644 --- a/src/nxt_application.h +++ b/src/nxt_application.h @@ -57,6 +57,8 @@ struct nxt_common_app_conf_s { nxt_str_t user; nxt_str_t group; + char *working_directory; + uint32_t workers; union { diff --git a/src/nxt_conf_validation.c b/src/nxt_conf_validation.c index 5cc2569f..94371ca8 100644 --- a/src/nxt_conf_validation.c +++ b/src/nxt_conf_validation.c @@ -80,6 +80,11 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_python_members[] = { NULL, NULL }, + { nxt_string("working_directory"), + NXT_CONF_STRING, + NULL, + NULL }, + { nxt_string("path"), NXT_CONF_STRING, NULL, @@ -115,6 +120,11 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_php_members[] = { NULL, NULL }, + { nxt_string("working_directory"), + NXT_CONF_STRING, + NULL, + NULL }, + { nxt_string("root"), NXT_CONF_STRING, NULL, @@ -155,6 +165,11 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_go_members[] = { NULL, NULL }, + { nxt_string("working_directory"), + NXT_CONF_STRING, + NULL, + NULL }, + { nxt_string("executable"), NXT_CONF_STRING, NULL, diff --git a/src/nxt_main_process.c b/src/nxt_main_process.c index 34fc7ea0..a7e1adb1 100644 --- a/src/nxt_main_process.c +++ b/src/nxt_main_process.c @@ -104,6 +104,12 @@ static nxt_conf_map_t nxt_common_app_conf[] = { offsetof(nxt_common_app_conf_t, group), }, + { + nxt_string("working_directory"), + NXT_CONF_MAP_CSTRZ, + offsetof(nxt_common_app_conf_t, working_directory), + }, + { nxt_string("workers"), NXT_CONF_MAP_INT32, -- cgit