рдереЛрдбрд╝рд╛ рдЧреЗрдп рдкрд░рд┐рдЪрдп
рдХрд┐рд╕реА рддрд░рд╣ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдерд╛ рдЬреЛ рдПрдХ рдЕрдЬреАрдм рдЪрд╛рд╣рддрд╛ рдерд╛, рдЕрд░реНрдерд╛рддреН рдПрдХ рдЖрд╕рд╛рди-рд╕реЗ-рдкреНрд░рдмрдВрдзрд┐рдд рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ
рдХреИрдореНрдкрд┐рдВрдЧ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реНрд░рд╛рдорд╡рд░реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд░реНрд╡рд░ рдкрд░ FreeBSD 9.0 рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ nginx, thin server рдФрд░ ezjail рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬреЗрд▓ рдкреНрд░рдмрдВрдзрди рдЯреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдорд╛рдореВрд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рддреЛ рдореИрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛)ред рдПрдХ рд╣рдлреНрддреЗ рдмрд╛рдж, рдЧреНрд░рд╛рд╣рдХ рдиреЗ рдореБрдЭреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдХрд┐ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Apple рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рдерд╛ рдФрд░ рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдкрдиреЗ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдкрд░ рдЙрд╕реА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдФрд░ рдореИрдВ рдЦреБрд╢реА рд╕реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реЛ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдкрд╣рд▓реЗ рдЫреВрдиреЗ рдореЗрдВ рдХреЛрдИ рдЦреБрд╢реА рдирд╣реАрдВ рд╣реБрдИ рдереАред рдпрд╣ рдкреНрд░рдгрд╛рд▓реА рдФрд░ рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреА рдереАред рдХреЗрд╡рд▓ рдПрдХ "рд▓реЗрдХрд┐рди" рдерд╛ - рдореИрдХрдУрдПрд╕ рдПрдХреНрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рдХреЛрдИ рдЬреЗрд▓ (8) рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ (рдореИрдВ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЪреЗрд░реЛрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛), рдореБрдЭреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд▓рдЪреАрд▓рд╛ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХреАрдХреГрдд рдЯреВрд▓ рдорд┐рд▓рд╛ -
рд╕реИрдВрдбрдмреЙрдХреНрд╕ ред
рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдиреАрдВрд╡ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рд╕реИрдВрдбрдмреЙрдХреНрд╕
рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдПрдХ рдЕрджреНрднреБрдд рдЙрдкрдХрд░рдг рдирд┐рдХрд▓рд╛ред рдХреБрдЫ AppArmor рдХреА рдпрд╛рдж рддрд╛рдЬрд╛ рдХрд░рддреА рд╣реИ, рдХреБрдЫ SeLinux, рдФрд░ рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреЛрдЦреЗ рддрд░реАрдХреЗ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЬрд╛рдВрдЪ рдореЗрдВ рд░рдЦрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдирд╣реАрдВ рджреЗрддреА рд╣реИрдВред рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдиреАрддрд┐рдпреЛрдВ рдХреЛ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╣ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╣реИ, рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЧреБрдЬрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ (рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдпреБрдХреНрдд рдПрдХ рдкрд╛рда рдлрд╝рд╛рдЗрд▓)ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕реИрдВрдбрдмреЙрдХреНрд╕
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдереЛрдбрд╝рд╛ рдХрдордЬрд╝реЛрд░ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ (рдлреНрд░реАрдмреАрдПрд╕рдбреА рд╣реИрдВрдбрдмреБрдХ рдбрд┐рдЯреЗрд▓ рдХреЙрд░реБрдкреЗрдЯреНрд╕) рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░реЛрдлрд╛рдЗрд▓ рд▓рд┐рдЦрдиреЗ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рдереЗ, рдЬрд┐рд╕рдиреЗ рдХрд╛рд░реНрдп рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛ред рдореБрдЭреЗ рд╣рд▓реНрдХреЗ
рдкрддрд▓реЗ рд░реВрдмреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореИрдВ рдиреАрдЪреЗ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред рдХреЛрдИ рднреА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдорд╛рд░реНрдХрдЕрдк рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░, рдЕрдзрд┐рдорд╛рдирддрдГ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреАрддрд┐ (рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рд╖реЗрдзрд╛рддреНрдордХ)ред рд╕рднреА рдирд┐рд░реНрджреЗрд╢ рдпрд╛ рдЙрдирдХреЗ рд╕реЗрдЯ рдХреЛрд╖реНрдардХ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИрдВред рдирд┐рдпрдореЛрдВ рдХреЗ рджрд╛рдпрд░реЗ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдиреАрддрд┐ рдХреЗ рдирд╛рдо (рдпрд╛ "рдСрдкрд░реЗрд╢рди" - рд╕рдВрдЪрд╛рд▓рди) рдорд╛рд╕реНрдХ (рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб - *) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд▓реНрдЯрд░ (рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ 6 рд╣реИрдВ: рдкрде рдиреЗрдЯрд╡рд░реНрдХ рдлрд╝рд╛рдЗрд▓-рдореЛрдб xattr рдордЪ рд╕рд┐рдЧреНрдирд▓) рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ (
рдпрд╣рд╛рдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рджреЗрдЦреЗрдВ)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрде рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (рд░реЗрдЧреЗрдХреНрд╕) рдФрд░, рдореБрдЭреЗ рдЕрдВрдЧреНрд░реЗрдЬреА рдХреЛ рдЯреНрд░реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, "рдЙрдкрдкрде"ред рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ '?' рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ:
; ; Sandbox profile for application owned by virtual (non-system) user XXXXXX ; (version 1) ; (deny default) ; ; (, unix-). ; , ; unix- (allow network-bind) ; Thin (. ) ; , fork() (allow process-fork) ; DirectoryService ; , . (allow mach-lookup (global-name "com.apple.system.DirectoryService.libinfo_v1") (global-name "com.apple.system.DirectoryService.membership_v1") ) ; Thin-, ruby ; - - , ;-) (allow process-exec (regex "^/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr") (regex "^/usr/bin/thin$") ) ; , file-read ; , regex ^/opt/sandbox/apps/XXXXXX ; - , - (allow file-read-metadata (literal "/opt/sandbox/apps/XXXXXX/log") (literal "/opt/sandbox/apps/XXXXXX/tmp") ) ; gem', (allow file-read* (literal "/usr/bin/thin") (regex "^/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr") (regex "^/System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent") (regex "^/Library/Ruby/Gems/1.8/") (regex "^/usr/lib") (regex "^/opt/sandbox/apps/XXXXXX") ) ; , - . (allow file* (regex "^/opt/sandbox/apps/XXXXXX/tmp/thin.sock$") (regex "^/opt/sandbox/apps/XXXXXX/tmp/thin.pid$") (regex "^/opt/sandbox/apps/XXXXXX/log/thin.log$") )
рдкрддрд▓рд╛
рдХрд╕реНрдЯрдо рдХреИрдореНрдкрд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП
рдерд┐рди рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рдореЛрдВрдЧрд░реЗрд▓, рдкреИрд╕реЗрдВрдЬрд░, uWSGI рдпрд╛ рдХреБрдЫ рдФрд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ? рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдмрд╣реБрдд рдорд╛рдВрдЧ рдирд╣реАрдВ рдереА (рдЧрдВрднреАрд░ рдЕрдзреНрдпрдпрди, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрд╛ рдХрд┐ рдкреИрд╕реЗрдВрдЬрд░ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреИрд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рддрд░рд╣ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╡ рдерд╛ (рдореИрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдУрд░ рд╕реЗ рдирдЧрдиреЗрдХреНрд╕ рдХреА рдХрдИ рдкреНрд░рддрд┐рдпрд╛рдВ рдЪрд▓рд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд▓реЗрддрд╛, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) рдФрд░ рдЕрдЧрд░ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рджреЗрдЦрдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред рдореЗрд░реЗ рдкрд╕рдВрджреАрджрд╛ рдкрд╕рдВрджреАрджрд╛ рд╣рд╛рд░рд╡реЗрд╕реНрдЯрд░ - рдЕрдВрддрд┐рдо рдЯрд┐рдк рд╕реЗ uWSGI - рдлреНрд░реАрдмреАрдПрд╕рдбреА рдкрд░ рд░реИрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ (рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХреБрдЫ рджрд┐рдиреЛрдВ рдХреЗ рднреАрддрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдлрд╕реЛрд╕, рдЯреНрд░реЗрди рдЫреВрдЯ рдЧрдИ), рдФрд░ рдореИрдХрдУрдПрд╕ рдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдореЛрдВрдЧрд░реЗрд▓ рдХреЗ рдкрд╛рд╕ рдерд┐рди рдкрд░ рд░реБрдХрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рд╣реБрдЖред рддреЛ, рдпрд╣рд╛рдБ рдерд┐рди рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреИрдореНрдкрд┐рдВрдЧ рд░реИрдХ-рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рд▓реЙрдиреНрдЪ рд▓рд╛рдЗрди рд╣реИ:
cd /opt/sandbox/apps/XXXXXX && \ sandbox-exec -f /opt/sandbox/profiles/XXXXXX.sb \ /usr/bin/thin --socket /opt/sandbox/apps/XXXXXX/tmp/thin.sock \ --rackup /opt/sandbox/apps/XXXXXX/approot/config.ru \ --environment production --timeout 4 --chdir /opt/sandbox/apps/XXXXXX/approot \ --log /opt/sandbox/apps/XXXXXX/log/thin.log \ --daemonize --pid /opt/sandbox/apps/XXXXXX/tmp/thin.pid \ --user thinbot --group thinbot --tag XXXXXX start
'рдЯреИрдЧ' рд╡рд┐рдХрд▓реНрдк рд╢реАрд░реНрд╖ рдФрд░ рдкреАрдПрд╕ рдореЗрдВ рджреЗрдЦрдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ (рд╕рд┐рд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рднреА рд▓реЙрдиреНрдЪреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдХреЗрд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдЦрд╛рдпрд╛ред
nginx
рд╕рдм рдХреБрдЫ рддреБрдЪреНрдЫ рд╣реИред рдХреЛрдИ рдЖрдБрдХрдбрд╝реЗ рдирд╣реАрдВред рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд╡рд░реНрдЪреБрдЕрд▓ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛" рдХрд╛ рдирд╛рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдЙрдкрдбреЛрдореЗрди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ:
server { server_name ~(.+).domain.tld; set $user $1; location / { proxy_pass http://unix:/opt/sandbox/apps/$user/tmp/thin.sock:/; } }
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ
рдореИрдВрдиреЗ рдмрдВрдзрди рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд╕рд░рд▓ рдФрд░ рдкреЛрд░реНрдЯреЗрдмрд▓ рдЪреАрдЬреЗрдВ рдкрд╕рдВрдж рд╣реИрдВред рдЖрд▓реЛрдЪрдирд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╣реБрдд рдирдо рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд░реВрдЯ (рдореВрд▓) рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрднрд╛рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдмрдВрдзрди -
users_management.sh:
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рдмрдВрдзрди -
application_management.sh:
рдирд┐рд╖реНрдХрд░реНрд╖
рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдПрдХ рдХрд╛рдлреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдХреЛ рд╕рд░реНрд╡рд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдкреБрдирд╢реНрдЪ:
рд╣рдмрд░рд╛рдмреНрд░ рд╕рд╛рдЗрдЯ рдХреЗ рдкреНрд░рд╢рд╛рд╕рди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдЬрд┐рд╕рдиреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдХрд░реНрдореЛрдВ рдХреЗ рд╕рд╛рде рднреА рдкреЛрд╕реНрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рджрд░реНрд╢рдХреЛрдВ рдХрд╛ рд░рд╡реИрдпрд╛ рдмрд╣реБрдд рд╕рдЦреНрдд рдирд╣реАрдВ рд╣реИ - рдпрд╣ рд╣реИрдмреЗ рдкрд░ рдореЗрд░реА рдкрд╣рд▓реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреЛрд╕реНрдЯ рд╣реИ - рдФрд░ рдореБрдЭреЗ рд▓рд┐рдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдРрд╕реЗ рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рд▓рд┐рдЦреВрдВрдЧрд╛: рдПрдХ рдЬрд╛рдВрдЧреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдПрдХ рдкреИрдЪ рдХреЗ рддрддреНрдХрд╛рд▓ рд╡реЗрдм рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рд▓рд┐рдП рдЧрд┐рдЯ рд╣реБрдХ рдФрд░ рд╢рд╛рд╣реА uWSGI рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛; рд▓рдЪреАрд▓рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ uWSGI рдФрд░ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреА рдПрдХ рднрд╛рд╖рд╛ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ; рд╕реВрдЪрдирд╛рддреНрдордХ DBMS рдХреА рд░рд╛рд╖реНрдЯреНрд░реАрдп рддреИрдирд╛рддреА рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред
рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рджред