рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рдореБрдЭреЗ рдиреЛрдб.рдЬреЗрдПрд╕ рдкрд░ рдПрдХ рд╡рд┐рдХрд╛рд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЛрд▓реНрдб рд╡рд┐рдЪрд╛рд░ рдерд╛ (рдХреБрдЫ
ruby.railstutorial.org рдЬреИрд╕рд╛ )ред рдЪреВрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рд╣реИ рдЬрдм рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ - рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рд╣рдЯрд╛рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдФрд░ рдХреНрдпрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрд┐рд╕реА рднреА рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЪреАрдЬреЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреА рдФрд░ рдЖрдк рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ, рдореИрдВ рд╣рдм рдкрд░ рдЕрдзреНрдпрд╛рдп рдлреИрд▓рд╛рдКрдВрдЧрд╛
рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
рдЕрднрд┐рд╡рд╛рджрди, рдпрд╣рд╛рдБ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЛрдб.рдЬреЗрдПрд╕ рдкрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИред рдореИрдВ рдиреЛрдб рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЙрддреНрд╕рд╛рд╣реА рд╣реВрдВред Node.js рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рд╕рд╛рд╣рд╕ рдФрд░ рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рдЕрдкрдиреА рддрд╛рдЬрдЧреА рдХреЗ рд╕рд╛рде рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЖрдк
http://nodejs.org/ рдкрд░ node.js рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░реНрд╡рд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИред рд╣рдо рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░реЗрдВрдЧреЗ,
рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░ рдирд┐рд░реНрдорд┐рдд рдПрдХ рд╡реЗрдм-рдлреНрд░реЗрдорд╡рд░реНрдХ (рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ)
рдЕрдзреНрдпрдпрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдо рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкрд╣рд▓реБрдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВрдЧреЗ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдЯреНрд╡рд┐рдЯрд░ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдПрдирд╛рд▓реЙрдЧ) рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВрдЧреЗ
рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐
рд░реЗрд▓рд╕реНрдЯрд╛рдЗрдкрд░реНрд╕ рдХрд╛ рдореБрдЭ рдкрд░ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡ рдерд╛, рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡реЗрдм рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЧрд╛рдЗрдб рд╣реИ рдЬреЛ рдореИрдВ рднрд░ рдореЗрдВ рдЖрдпрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдорд╛рди рдмрдирд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдЕрдзреНрдпрд╛рдп 1. рдкреНрд░рд╛рд░рдВрдн
рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдо рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдХрд╛рдо рдХреЗ рдорд╛рд╣реМрд▓ рдХреЛ рддреИрдирд╛рдд рдХрд░реЗрдВрдЧреЗ, рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдПрдХ рд╕рд░рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕реЗ рдХреНрд▓рд╛рдЙрдб рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рднреА рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗред
рез.рез рдХрд╛рдо рдХрд╛ рдорд╛рд╣реМрд▓
рдЪреВрдВрдХрд┐ рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рд▓рд┐рдирдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ - рдЙрдмрдВрдЯреВ 12.04, рдХреБрдЫ рдЙрдкрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдереЛрдХ рд▓рд┐рдирдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдиреНрдп рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред
рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ
рдЧрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдХреЛрдб рдХреЛ рди рдХреЗрд╡рд▓ рдЧрд┐рдЯ рдореЗрдВ рдбрд╛рд▓реЗрдВрдЧреЗ, рдмрд▓реНрдХрд┐
рдЧреАрдердм рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдХрдИ рдЙрдкрдХрд░рдг рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗред
рддреЛ рдкрд╣рд▓реА рдмрд╛рдд рд╣рдо рдХрд░реЗрдВрдЧреЗ ...
1.1.1 рдЧрд┐рдЯ рд╕реНрдерд╛рдкрдирд╛
рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд-рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рддрд░рдг рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
$ sudo apt-get install git-core
рдмрд╛рдХреА рдХреЛ
http://git-scm.com/book/ch1-4.html рдкрд░ рдирд┐рд░реНрджреЗрд╢ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ
1.1.2 рдиреЛрдб рдФрд░ рдЬреЗрдПрдордкреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдЕрдм рдиреЛрдб рдХрд╛ рдирд╡реАрдирддрдо рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рд▓рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред ns рдФрд░ npm (рдиреЛрдб рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдЗрдВрд╕реНрдЯреЙрд▓рд░)ред рд╡рд┐рднрд┐рдиреНрди рдУрдПрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢
рдпрд╣рд╛рдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ
рд╣реИрдВ ред Ubuntu рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдХрд░рддреЗ рд╣реИрдВ:
$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:chris-lea/node.js $ sudo apt-get update $ sudo apt-get install nodejs npm
рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдиреЛрдб рдХрдВрд╕реЛрд▓ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рез.рез.рей рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг
рдпрд╣рд╛рдВ рд╣рд░ рдХреЛрдИ рдЕрдкрдиреЗ рд╕реНрд╡рд╛рдж рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ
gmate рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рд╕реЗрдЯ рдХреЗ рд╕рд╛рде gedit рд╕реЗ рдХрд╛рдлреА рдЦреБрд╢ рд╣реВрдВред рдиреЗрдЯрдмреАрдиреНрд╕ рдпрд╛ рд╡реЗрдмрд╕реНрдЯреЙрд░реНрдо рдареАрдХ рд╣реИрдВред
1.1.4 рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдФрд░ рдкрд╣рд▓рд╛ рдЖрд╡реЗрджрди
рдЕрдм
рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдврд╛рдВрдЪреЗ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдврд╛рдВрдЪрд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдФрд░ рдХрд╛рдлреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИред
рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
$ sudo npm install -g express
рд╣рдо рдЕрдкрдиреА рд╢реИрдХреНрд╖рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ:
$ mkdir -p ~/projects/node-tutorial $ cd ~/projects/node-tutorial
рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
$ express first-app $ cd first-app && npm install
рдЬреЛ рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреЗрдирд░реЗрдЯрд░ рдХреНрдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд▓реЛрдЧ рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдЕрдм рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
$ node app
рдФрд░
http: // localhost: 3000 / рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ
1.2 рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА
рдЕрдм рдЬрдмрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ, рд╣рдо рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдЧрд┐рдЯ рдХреЗ рдХрд╛рдо рд╕реЗ рдмреЗрд╣рддрд░ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рдкреНрд░реЛ рдЧрд┐рдЯ рдкреБрд╕реНрддрдХ рдХреЛ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
1.2.1 рдЧрд┐рдЯ рд╕реЗрдЯрдЕрдк
Git рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрдЯрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:
$ git config --global user.name "Your Name" $ git config --global user.email your.email@example.com
рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рд╕реЗрдЯ рдХрд░реЗрдВ:
$ git config --global alias.co checkout $ git config --global alias.ci commit
1.2.2 рдЧрд┐рдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛
Git рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдк рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдирдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЖрд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$ git init
Gitignore рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬреЛрдбрд╝реЗрдВ:
$ echo 'node_modules' > .gitignore
рд╣рдордиреЗ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рд░рдЦрд╛ рдФрд░ рдкрд╣рд▓рд╛ рдХрдорд┐рдЯ рдмрдирд╛рдпрд╛:
$ git add . $ git ci -m "Initial commit"
1.2.3 рдЧрд┐рдЯрд╣рдм
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ
GHHub рдкрд░ рдбрд╛рд▓рдиреЗ рдХрд╛ рд╕рдордп
рд╣реИ ред GitHub рдПрдХ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рд╣реИ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рд╣реИред рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдУрдкрдирд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдПрдХ рдЬреАрдердм рдкрд░ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рд╡рд╣рд╛рдВ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп
рд╣реИ ред
GitHub рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ ssh рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП RSA рдХреБрдВрдЬрд┐рдпрд╛рдБ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдкреНрд░рдХреНрд░рд┐рдпрд╛
рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд
рд╣реИ ред рдпрджрд┐ рдЖрдк рдЕрднреА рддрдХ рдЙрдирдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд▓рд┐рдирдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдмрдирд╛рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рджреЗ рд░рд╣рд╛ рд╣реВрдБред
$ ssh-keygen -t rsa -C "your_email@youremail.com"
рд╣рдо рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ
~/.ssh/id_rsa.pub
:
$ sudo apt-get install xclip $ xclip -sel clip < ~/.ssh/id_rsa.pub
рдЙрд╕рдХреЗ рдмрд╛рдж,
рдЦрд╛рддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд▓рд┐рдВрдХ рдкрд░ рдЬрд╛рдПрдВ, рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдЕрдиреБрднрд╛рдЧ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдПрд╕рдПрд╕рдПрдЪ рдХреБрдВрдЬреА рдмрдЯрди рдЬреЛрдбрд╝реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рд╕реЗ рдХреБрдВрдЬреА рдлрд╝реАрд▓реНрдб рдореЗрдВ рдХреБрдВрдЬреА рдкреЗрд╕реНрдЯ рдХрд░реЗрдВред рдлрд┐рд░ рд╕реЗрд╡ рдХрд░реЗрдВред
рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреБрдВрдЬреА рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ:
$ ssh -T git@github.com
рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
The authenticity of host 'github.com (207.97.227.239)' can't be established. # RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. # Are you sure you want to continue connecting (yes/no)?
рдЖрдкрдХреЛ рдмрд╕ 'рд╣рд╛рдВ' рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рдлрд┐рд░, рдпрджрд┐ рдХреБрдВрдЬреА рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
Hi username! You've successfully authenticated, but GitHub does not # provide shell access.
рдЬрдм рдХреБрдВрдЬрд┐рдпрд╛рдБ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рдРрдк рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдирд╛рдо рдХреЗ рд╕рд╛рде
рдПрдХ рдирдпрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА
рдмрдирд╛рдПрдВ , рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рдХреЛрдб рдХреЛ рдЧреАрдердм рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ:
$ git remote add origin git@github.com:___/first-app.git $ git push -u origin master
1.3 рдЖрд╡реЗрджрди рдХреЛ рддреИрдирд╛рдд рдХрд░реЗрдВ
рдЕрдм рд╕рдмрд╕реЗ рд░реЛрдорд╛рдВрдЪрдХ рдЪрд░рдг рдЖрддрд╛ рд╣реИ, рд╣рдо рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░реЗрдВрдЧреЗред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
рд╣рд░реЛрдХреВ рдХреНрд▓рд╛рдЙрдб рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкреНрд░рдгрд╛рд▓реА рдХреА рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рд░реЛрдХреВ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдЙрдирдХреЗ рд╕реЗрдХреНрд╢рди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдБ рдХрд┐
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ1.3.1 рд╣рд░реЛрдХреВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛
рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ
рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ
рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
рд╣реИ ред
рдЙрдмрдВрдЯреВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд░рддреЗ рд╣реИрдВ:
$ wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
рдЬрдм рд╕реНрдерд╛рдкрдирд╛ рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
$ heroku login
рез.рей.реи рд╣рдо рдЖрд╡реЗрджрди рдХреЛ рд╣рд░реЛрдХреВ рдкрд░ рд░рдЦрддреЗ рд╣реИрдВ
рдЕрдм рд╣рдорд╛рд░рд╛ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреИрдпрд╛рд░ рд╣реИред Heroku рдкрд░ рдПрдХ рдиреЛрдб.рдЬреЗрдПрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ package.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЖрдкрдХреЛ рдиреЛрдб рдФрд░ npm рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, package.json рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
{ "name": "application-name", "version": "0.0.1", "private": true, "scripts": { "start": "node app" }, "dependencies": { "express": "3.0.x", "jade": "*" }, "engines": { "node": "0.8.x", "npm": "1.1.x" } }
рдЕрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ Procfile рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
$ echo 'web: node app.js' > Procfile
рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
$ foreman start
рдЖрд╡реЗрджрди
http: // localhost: 5000 / рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рднрдВрдбрд╛рд░ рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝реЗрдВ:
$ git add . $ git ci -m "Added Procfile and engines" $ git push
Heroku рдкрд░ рдПрдХ рдЖрд╡реЗрджрди рдмрдирд╛рдПрдБ:
$ heroku create $ heroku keys:add ~/.ssh/id_rsa.pub $ git push heroku master
рд╣рдо рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ:
$ heroku open
рдФрд░ рдЖрд╡реЗрджрди рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВред