рдЬрдм рдПрдХ рд╣реА рд╕рд░реНрд╡рд░ рдкрд░ рдХрдИ рдПрдХ рд╕рд╛рде рдиреЛрдб.рдЬреЗрдПрд╕ рд╕рд╛рдЗрдЯреЗрдВ рдЪрд▓рддреА рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк, рд╕рд╛рде рд╣реА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХ, рдПрдХ рдЖрд╡реЗрджрди рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреА рдЬрд╝рд░реВрд░рдд рдХреЗ рд╕рднреА рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдХрдиреЗрдХреНрд╢рди рддрдВрддреНрд░ рдХреЛ рдмрдирд╛рдИ рдЬрд╛ рд░рд╣реА рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд╕реАрдорд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕рд░рд▓ред рдпрд╣ рд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рд╛рдЗрдЯреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде, рджреВрд╕рд░реЛрдВ рдХреЛ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд▓рдЧ-рдЗрди рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреЛрд░реНрдЯреЗрдмрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЛрдореЗрди рдирд╛рдо рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЛрдореЗрди рдирд╛рдо рдФрд░ рдЙрдк рдбреЛрдореЗрди рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рджреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрдерд┐рдд рд╣реИрдВ:
-
/ var / www / рдбреЛрдореЗрди / , рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде site.ru, othersite2.ru, рдЖрджрд┐ред
-
/ var / www / рдЙрдк рдбреЛрдореЗрди , рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рд╛рдЗрдЯ 3, othersite4, рдЖрджрд┐ рдХреЗ рд╕рд╛рдеред
рдЙрдкрдпреБрдХреНрдд рдкрддреЗ (site.ru, othersite2.ru, site3.example.com, othersite4.example.com) рдкрд░ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
$ vhoster -n example.com -s /var/www/subdomains/ -d /var/www/domains/ --port 80 --host 0.0.0.0 vhost: site.ru vhost: othersite2.ru vhost: site3.example.com vhost: othersite4.example.com
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ
vhoster рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдореИрдВ рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╕реНрдХреИрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдорд┐рд▓реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ .index.js рдлрд╝рд╛рдЗрд▓, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рд╢рд╛рдорд┐рд▓ рд╣реИред рд░реВрдЯ .index.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдкрдереЛрдВ рдХрд╛ рдорд╛рд░реНрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рд╕рднреА рд╕рд░реНрд╡рд░ рддрд░реНрдХ рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░, рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╣ рдПрдХ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди http рд╕рд░реНрд╡рд░ рд╣реИ, рдЬреЛ рддрдм
connect.vhost рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Connect.vhost рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдбреЛрдореЗрди рдирд╛рдо рдХреЗ рд▓рд┐рдП рд░реВрдЯрд┐рдВрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
.Index.js рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕рд╛рдордЧреНрд░реА рд╣реЛ рд╕рдХрддреА рд╣реИ:
var http = require('http'); exports.app = http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); });
рдЗрд╕реА рддрд░рд╣, рдпрд╣
рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдпрд╛
рдХрдиреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛:
var connect = require('connect'); exports.app = connect().use(function(req, res) { res.end('hello world\n'); });
рдпрджрд┐ рдХрд┐рд╕реА рднреА рд╕рд╛рдЗрдЯ рд╕реЗ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдкрдХрдбрд╝реА рдЬрд╛рддреА рд╣реИ, рддреЛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧреА, рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж:
process.on('uncaughtException', function (err) { console.log('Caught exception: ' + err); });
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдиреЛрдб рдореЗрдВ рд▓рд┐рдЦреЗ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдЗрдЯ рдЕрдкрдиреЗ рд▓рд┐рдП рд░реВрдЯрд┐рдВрдЧ рдХрд░рддреА рд╣реИ рдФрд░ рдпрдерд╛рд╕рдВрднрд╡ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЕрд▓рдЧ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рд╕рд╛рдЗрдЯ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдХрд┐ vhoster рдХреА рдорджрдж рдХреЗ рдмрд┐рдирд╛, .index.js рдХреЛрдб рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд░реНрдд рдЬреЛрдбрд╝ рд╕рдХрддреА рд╣реИ:
if (require.main === module) {
рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдореБрдЦреНрдп рджреЛрд╖ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рднреА рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдПрдХ рд╕рдорд╛рди рд╡реИрд╢реНрд╡рд┐рдХ рдХреНрд╖реЗрддреНрд░ рдФрд░ рд╕рдорд╛рди рдЕрдзрд┐рдХрд╛рд░ рд╣реЛрдВрдЧреЗред рдпрджрд┐ рдпрд╣ рдкреНрд▓рдЧ-рдЗрди рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдУрд░ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо
https://github.com/dkiyatkin/node-vhoster рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдЖрдк рдЗрд╕реЗ
npm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$ npm install vhoster $ vhoster --help
рдХреЛрдб рдкрд░ рдХрд┐рд╕реА рднреА рд╕реБрдЭрд╛рд╡ рдФрд░ рдЗрдЪреНрдЫрд╛рдУрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред