@@ -13,6 +13,9 @@ const template = require('lodash/template');
13
13
const { Extension, errors} = require ( '../../lib' ) ;
14
14
const { CliError, ProcessError} = errors ;
15
15
16
+ const nginxConfigPath = process . env . NGINX_CONFIG_PATH || '/etc/nginx' ;
17
+ const nginxProgramName = process . env . NGINX_PROGRAM_NAME || 'nginx' ;
18
+
16
19
class NginxExtension extends Extension {
17
20
migrations ( ) {
18
21
const migrations = require ( './migrations' ) ;
@@ -47,7 +50,7 @@ class NginxExtension extends Extension {
47
50
48
51
const confFile = `${ hostname } .conf` ;
49
52
50
- if ( fs . existsSync ( `/etc/nginx /sites-available/${ confFile } ` ) ) {
53
+ if ( fs . existsSync ( `${ nginxConfigPath } /sites-available/${ confFile } ` ) ) {
51
54
return 'Nginx configuration already found for this url. Skipping Nginx setup.' ;
52
55
}
53
56
@@ -74,15 +77,15 @@ class NginxExtension extends Extension {
74
77
return 'SSL certs cannot be generated for IP addresses, skipping' ;
75
78
}
76
79
77
- if ( fs . existsSync ( `/etc/nginx /sites-available/${ confFile } ` ) ) {
80
+ if ( fs . existsSync ( `${ nginxConfigPath } /sites-available/${ confFile } ` ) ) {
78
81
return 'SSL has already been set up, skipping' ;
79
82
}
80
83
81
84
if ( ! argv . prompt && ! argv . sslemail ) {
82
85
return 'SSL email must be provided via the --sslemail option, skipping SSL setup' ;
83
86
}
84
87
85
- if ( ! fs . existsSync ( `/etc/nginx /sites-available/${ hostname } .conf` ) ) {
88
+ if ( ! fs . existsSync ( `${ nginxConfigPath } /sites-available/${ hostname } .conf` ) ) {
86
89
return single ? 'Nginx config file does not exist, skipping SSL setup' : true ;
87
90
}
88
91
@@ -105,8 +108,8 @@ class NginxExtension extends Extension {
105
108
port : instance . config . get ( 'server.port' )
106
109
} ) ;
107
110
108
- return this . template ( instance , generatedConfig , 'nginx config' , confFile , '/etc/nginx/ sites-available' ) . then (
109
- ( ) => this . ui . sudo ( `ln -sf /etc/nginx/ sites-available/${ confFile } /etc/nginx /sites-enabled/${ confFile } ` )
111
+ return this . template ( instance , generatedConfig , 'nginx config' , confFile , ` ${ nginxConfigPath } / sites-available` ) . then (
112
+ ( ) => this . ui . sudo ( `ln -sf ${ nginxConfigPath } / sites-available/${ confFile } ${ nginxConfigPath } /sites-enabled/${ confFile } ` )
110
113
) . then (
111
114
( ) => this . restartNginx ( )
112
115
) . catch ( ( error ) => {
@@ -126,8 +129,8 @@ class NginxExtension extends Extension {
126
129
const acme = require ( './acme' ) ;
127
130
128
131
const rootPath = path . resolve ( instance . dir , 'system' , 'nginx-root' ) ;
129
- const dhparamFile = '/etc/nginx/ snippets/dhparam.pem' ;
130
- const sslParamsFile = '/etc/nginx/ snippets/ssl-params.conf' ;
132
+ const dhparamFile = ` ${ nginxConfigPath } / snippets/dhparam.pem` ;
133
+ const sslParamsFile = ` ${ nginxConfigPath } / snippets/ssl-params.conf` ;
131
134
const sslParamsConf = template ( fs . readFileSync ( path . join ( __dirname , 'templates' , 'ssl-params.conf' ) , 'utf8' ) ) ;
132
135
133
136
return this . ui . listr ( [ {
@@ -210,8 +213,8 @@ class NginxExtension extends Extension {
210
213
port : instance . config . get ( 'server.port' )
211
214
} ) ;
212
215
213
- return this . template ( instance , generatedSslConfig , 'ssl config' , confFile , '/etc/nginx/ sites-available' ) . then (
214
- ( ) => this . ui . sudo ( `ln -sf /etc/nginx/ sites-available/${ confFile } /etc/nginx /sites-enabled/${ confFile } ` )
216
+ return this . template ( instance , generatedSslConfig , 'ssl config' , confFile , ` ${ nginxConfigPath } / sites-available` ) . then (
217
+ ( ) => this . ui . sudo ( `ln -sf ${ nginxConfigPath } / sites-available/${ confFile } ${ nginxConfigPath } /sites-enabled/${ confFile } ` )
215
218
) . catch ( error => Promise . reject ( new ProcessError ( error ) ) ) ;
216
219
}
217
220
} , {
@@ -233,29 +236,29 @@ class NginxExtension extends Extension {
233
236
234
237
const promises = [ ] ;
235
238
236
- if ( fs . existsSync ( `/etc/nginx /sites-available/${ confFile } ` ) ) {
239
+ if ( fs . existsSync ( `${ nginxConfigPath } /sites-available/${ confFile } ` ) ) {
237
240
// Nginx config exists, remove it
238
241
promises . push (
239
242
Promise . all ( [
240
- this . ui . sudo ( `rm -f /etc/nginx /sites-available/${ confFile } ` ) ,
241
- this . ui . sudo ( `rm -f /etc/nginx /sites-enabled/${ confFile } ` )
243
+ this . ui . sudo ( `rm -f ${ nginxConfigPath } /sites-available/${ confFile } ` ) ,
244
+ this . ui . sudo ( `rm -f ${ nginxConfigPath } /sites-enabled/${ confFile } ` )
242
245
] ) . catch ( error => Promise . reject ( new CliError ( {
243
- message : `Nginx config file link could not be removed, you will need to do this manually for /etc/nginx /sites-available/${ confFile } .` ,
244
- help : `Try running 'rm -f /etc/nginx/ sites-available/${ confFile } && rm -f /etc/nginx /sites-enabled/${ confFile } '` ,
246
+ message : `Nginx config file link could not be removed, you will need to do this manually for ${ nginxConfigPath } /sites-available/${ confFile } .` ,
247
+ help : `Try running 'rm -f ${ nginxConfigPath } / sites-available/${ confFile } && rm -f ${ nginxConfigPath } /sites-enabled/${ confFile } '` ,
245
248
err : error
246
249
} ) ) )
247
250
) ;
248
251
}
249
252
250
- if ( fs . existsSync ( `/etc/nginx /sites-available/${ sslConfFile } ` ) ) {
253
+ if ( fs . existsSync ( `${ nginxConfigPath } /sites-available/${ sslConfFile } ` ) ) {
251
254
// SSL config exists, remove it
252
255
promises . push (
253
256
Promise . all ( [
254
- this . ui . sudo ( `rm -f /etc/nginx /sites-available/${ sslConfFile } ` ) ,
255
- this . ui . sudo ( `rm -f /etc/nginx /sites-enabled/${ sslConfFile } ` )
257
+ this . ui . sudo ( `rm -f ${ nginxConfigPath } /sites-available/${ sslConfFile } ` ) ,
258
+ this . ui . sudo ( `rm -f ${ nginxConfigPath } /sites-enabled/${ sslConfFile } ` )
256
259
] ) . catch ( error => Promise . reject ( new CliError ( {
257
- message : `SSL config file link could not be removed, you will need to do this manually for /etc/nginx /sites-available/${ sslConfFile } .` ,
258
- help : `Try running 'rm -f /etc/nginx/ sites-available/${ sslConfFile } && rm -f /etc/nginx /sites-enabled/${ sslConfFile } '` ,
260
+ message : `SSL config file link could not be removed, you will need to do this manually for ${ nginxConfigPath } /sites-available/${ sslConfFile } .` ,
261
+ help : `Try running 'rm -f ${ nginxConfigPath } / sites-available/${ sslConfFile } && rm -f ${ nginxConfigPath } /sites-enabled/${ sslConfFile } '` ,
259
262
err : error
260
263
} ) ) )
261
264
) ;
@@ -269,7 +272,7 @@ class NginxExtension extends Extension {
269
272
}
270
273
271
274
restartNginx ( ) {
272
- return this . ui . sudo ( 'nginx -s reload' )
275
+ return this . ui . sudo ( ` ${ nginxProgramName } -s reload` )
273
276
. catch ( error => Promise . reject ( new CliError ( {
274
277
message : 'Failed to restart Nginx.' ,
275
278
err : error
@@ -278,7 +281,7 @@ class NginxExtension extends Extension {
278
281
279
282
isSupported ( ) {
280
283
try {
281
- execa . shellSync ( ' dpkg -l | grep nginx' , { stdio : 'ignore' } ) ;
284
+ execa . shellSync ( ` dpkg -l | grep ${ nginxProgramName } ` , { stdio : 'ignore' } ) ;
282
285
return true ;
283
286
} catch ( e ) {
284
287
return false ;
0 commit comments