nginx เดตเดดเดฟ เดชเตเดฐเต‹เด•เตโ€Œเดธเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เดžเด™เตเด™เตพ เดตเต†เดฌเตโ€Œเด—เตเดฐเดพเด‚ เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‰เดฏเตผเดคเตเดคเตเดจเตเดจเต

เดนเต‡ เดนเดฌเตผ!

เด‡เดจเตเดฑเตผเดจเต†เดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เด…เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เด†เด•เตโ€Œเดธเดธเต เด‰เดณเตเดณ เด’เดฐเต เด•เต‹เตผเดชเตเดชเดฑเต‡เดฑเตเดฑเต เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดจเตเดณเตเดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เด…เดคเตเดฏเดพเดตเดถเตเดฏเดฎเดพเดฏ เด’เดฐเต เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ เดžเดพเตป เด…เดŸเตเดคเตเดคเดฟเดŸเต† เด•เดฃเตเดŸเต†เดคเตเดคเดฟ, เดคเดฒเด•เตเด•เต†เดŸเตเดŸเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŠเดนเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เดŸเต†เดฒเดฟเด—เตเดฐเดพเด‚ เด…เดคเดฟเตฝ เดคเดŸเดžเตเดžเต. เดˆ เดธเดพเดนเดšเดฐเตเดฏเด‚ เดชเดฒเตผเด•เตเด•เตเด‚ เดชเดฐเดฟเดšเดฟเดคเดฎเดพเดฃเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เด‰เดฑเดชเตเดชเตเดฃเตเดŸเต.

เดคเตฝเด•เตเดทเดฃ เดธเดจเตเดฆเต‡เดถเดตเดพเดนเด•เดฐเดฟเดฒเตเดฒเดพเดคเต† เดŽเดจเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚, เดชเด•เตเดทเต‡ เดŽเดจเดฟเด•เตเด•เต เดœเต‹เดฒเดฟเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฏเดคเต เดŸเต†เดฒเดฟเด—เตเดฐเดพเด‚ เด†เดฏเดฟเดฐเตเดจเตเดจเต. เด’เดฐเต เดตเตผเด•เตเด•เต เดฎเต†เดทเต€เดจเดฟเตฝ เด•เตเดฒเดฏเดจเตเดฑเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดธเดพเดงเตเดฏเดฎเดฒเตเดฒ, เด•เต‚เดŸเดพเดคเต† เด’เดฐเต เดตเตเดฏเด•เตเดคเดฟเด—เดค เดฒเดพเดชเตเดŸเต‹เดชเตเดชเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดžเตเดžเดฟเดฒเตเดฒ. เดฎเดฑเตเดฑเตŠเดฐเต เดชเตเดฐเดคเดฟเดตเดฟเดงเดฟ เด…เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด”เดฆเตเดฏเต‹เด—เดฟเด• เดตเต†เดฌเต เดชเดคเดฟเดชเตเดชเต, เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŠเดนเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เด…เดคเตเด‚ เดฒเดญเตเดฏเดฎเดฒเตเดฒ. เด’เดฐเต เด…เดจเต—เดฆเตเดฏเต‹เด—เดฟเด• เดฎเดฟเดฑเดฑเดฟเดจเดพเดฏเดฟ เดคเดฟเดฐเดฏเดพเดจเตเดณเตเดณ เด“เดชเตเดทเตป เดžเดพเตป เด‰เดŸเดจเดŸเดฟ เดฎเดฑเดฟเด•เดŸเด•เตเด•เตเดจเตเดจเต (เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เด•เดพเดฐเดฃเด™เตเด™เดณเดพเตฝ เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต).

เดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เดตเต†เดฌเตโ€Œเด—เตเดฐเดพเด‚ เดŽเดจเตเดจเดคเต เดธเต‹เดดเตโ€Œเดธเต เด•เต‹เดกเต เดฒเดญเตเดฏเดฎเดพเดฏ เด’เดฐเต เด“เดชเตเดชเตบ เดธเต‹เดดเตโ€Œเดธเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดพเดฃเต เดธเดพเดฎเต‚เดนเดฟเด•เด‚ เด…เดคเดฟเดจเตเดฑเต† เดฐเดšเดฏเดฟเดคเดพเดตเต (เด…เดคเดฟเดจเต เด…เดฆเตเดฆเต‡เดนเดคเตเดคเดฟเดจเต เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดจเดจเตเดฆเดฟ!)
เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเตเด‚ เดธเดฎเดพเดฐเด‚เดญเดตเตเด‚ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเตเดณเตเดณ เด•เดพเดฐเตเดฏเดฎเดฒเตเดฒ, เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดŸเต†เดฒเดฟเด—เตเดฐเดพเด‚ เดธเต†เตผเดตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด†เด•เตโ€Œเดธเดธเต เดคเดŸเดžเตเดž เด’เดฐเต เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดจเตเดณเตเดณเดฟเดฒเต† เดชเตเดฐเดตเตผเดคเตเดคเดจ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเดฟเตฝ, เดตเต†เดฌเต เดชเดคเดฟเดชเตเดชเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเดฑเต† เดฎเต†เดทเต€เดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดŸเต†เดฒเดฟเด—เตเดฐเดพเด‚ เดธเต†เตผเดตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เด…เดฏเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดตเดฟเดœเดฏเดคเตเดคเต‡เด•เตเด•เดพเตพ เดจเดฟเดฐเดพเดถเดชเตเดชเต†เดŸเดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดค เด•เต‚เดŸเตเดคเดฒเดพเดฃเต.

เดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เด‡เดคเต เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฃเต (เดŽเดจเตเดจเดพเตฝ เดตเดณเดฐเต† เดตเตเดฏเด•เตเดคเดฎเดฒเตเดฒ) เดชเดฐเดฟเดนเดพเดฐเดฎเดพเดฃเต. เดˆ เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเดฟเดจเตเดฑเต† เดฐเดšเดฏเดฟเดคเดพเดตเต เดžเดพเดจเดฒเตเดฒเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เดจเตฝเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดจเดฟเด•เตเด•เต เด…เดคเต เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป เด•เดดเดฟเดžเตเดžเต เดถเดพเด–, เดŽเดจเตเดฑเต‡เดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏ เด’เดฐเต เดชเตเดฐเดถเตเดจเด‚ เดšเตผเดšเตเดš เดšเต†เดฏเตเดคเต. เด—เดฟเดคเตเดคเดฌเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเดšเตเดš เดชเดฐเดฟเดนเดพเดฐเด‚ เดŸเต†เด•เตเดจเต‹เดœเต‹เด•เตเด•เต, เด‡เดคเต เดŽเดจเตเดจเต† เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดธเดนเดพเดฏเดฟเดšเตเดšเต, เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เด‡เดคเต เดฎเดฑเตเดฑเดพเดฐเต†เดฏเต†เด™เตเด•เดฟเดฒเตเด‚ เดธเดนเดพเดฏเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เด‰เดฑเดชเตเดชเตเดฃเตเดŸเต, เด…เดคเดฟเดจเดพเตฝ เดˆ เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ เดŽเดดเตเดคเดพเตป เดžเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต.

เด•เดŸเตเดŸเดฟเดจเต เดคเดพเดดเต† เดจเดฟเด™เตเด™เดณเตเดŸเต† เดตเต†เดฌเตโ€Œเด—เตเดฐเดพเด‚ เดฎเดฟเดฑเดฑเดฟเดจเตเดฑเต† เด˜เดŸเตเดŸเด‚ เด˜เดŸเตเดŸเดฎเดพเดฏเตเดณเตเดณ เดธเดœเตเดœเต€เด•เดฐเดฃเดตเตเด‚ nginx เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŸเต†เดฒเดฟเด—เตเดฐเดพเด‚ เดธเต†เตผเดตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เด…เดคเดฟเดจเตเดฑเต† เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเต‹เด•เตโ€Œเดธเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเดœเตเดœเต€เด•เดฐเดฃเดตเตเด‚ เดจเดฟเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเด‚.

เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ, เดžเดพเตป เดชเตเดคเตเดคเดพเดฏเดฟ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดคเตเด‚ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดคเดคเตเดฎเดพเดฏ เด‰เดฌเตเดฃเตเดŸเต เดธเต†เตผเดตเตผ 18.04.3 เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต.

เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: เดˆ เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเดฒเดฟเตฝ nginx-เตฝ เด’เดฐเต เดกเตŠเดฎเต†เดฏเตเตป เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เด‰เตพเดชเตเดชเต†เดŸเดฟเดฒเตเดฒ. เดจเดฟเด™เตเด™เตพ เด‡เดคเต เดธเตเดตเดฏเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดจเดฟเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ ssl เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดกเตŠเดฎเต†เดฏเตโ€Œเตป เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตโ€ŒเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเตเด‚ เด…เดคเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เตพ เด‰เดฆเตเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจ เดธเต†เตผเดตเดฑเดฟเดจเต เดคเดจเตเดจเต† เดŸเต†เดฒเดฟเด—เตเดฐเดพเด‚ เดธเต†เตผเดตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เด†เด•เตโ€Œเดธเดธเต เด‰เดฃเตเดŸเต†เดจเตเดจเตเด‚ เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เตเดจเตเดจเต (เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดทเตเดŸเดฎเตเดณเตเดณ เดฐเต€เดคเดฟเดฏเดฟเตฝ)

เดˆ เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† เดเดชเดฟ 10.23.0.3 เด†เดฃเต†เดจเตเดจเตเด‚ เดกเตŠเดฎเต†เดฏเตเตป เดจเดพเดฎเด‚ mywebogram.localhost เด†เดฃเต†เดจเตเดจเตเด‚ เดจเดฎเตเด•เตเด•เต เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เดพเด‚.

เดˆ เด•เตบเดตเต†เตปเดทเดจเตเด•เดณเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ, เดžเดพเตป เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด•เดณเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เดจเตฝเด•เตเด‚. เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดจเดฟเด™เตเด™เดณเตเดŸเต‡เดคเดพเดฏเดฟ เดฎเดพเดฑเตเดฑเดพเตป เดฎเดฑเด•เตเด•เดฐเตเดคเต.

เด…เดคเดฟเดจเดพเตฝ เดจเดฎเตเด•เตเด•เต เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚:

Webogram เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพเด•เตเด•เต nodejs เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, เดžเด™เตเด™เตพ เด‡เดคเต เด‰เดฌเตเดฃเตเดŸเต เดถเต‡เด–เดฐเดฃเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดพเตฝ, เดจเดฎเตเด•เตเด•เต nodejs เดชเดคเดฟเดชเตเดชเต 8.x เดฒเดญเดฟเด•เตเด•เตเด‚. เดžเด™เตเด™เตพเด•เตเด•เต 12.x เด†เดตเดถเตเดฏเดฎเดพเดฃเต:

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - 
sudo apt update && sudo apt -y install nodejs

เดžเด™เตเด™เดณเตเดŸเต† เดตเต†เดฌเตโ€Œเด—เตเดฐเดพเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดธเตเดฅเดฒเด‚ เดžเด™เตเด™เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเดจเตเดจเต.

เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดนเต‹เด‚ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเตเดŸเต† เดฑเต‚เดŸเตเดŸเดฟเตฝ เด‡เดคเต เดธเตเดฅเดพเดชเดฟเด•เตเด•เดพเด‚. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เดณเตเดŸเต† เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด”เดฆเตเดฏเต‹เด—เดฟเด• เดถเต‡เด–เดฐเด‚ เด•เตเดฒเต‹เตบ เดšเต†เดฏเตเดฏเตเด•:

cd ~ && git clone https://github.com/zhukov/webogram.git

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพ เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เดณเตเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด…เดŸเตเดคเตเดค เด˜เดŸเตเดŸเด‚:

cd webogram && npm install

เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดชเดฐเต€เด•เตเดทเดฃ เด“เดŸเตเดŸเด‚ เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเด‚. เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•:

npm start

เด…เดคเดฟเดจเตเดถเต‡เดทเด‚, เดžเด™เตเด™เตพ เด…เดคเต เดฌเตเดฐเต—เดธเดฑเดฟเตฝ เดคเตเดฑเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเต

 http://10.23.0.3:8000/app/index.html

เดˆ เดธเดฎเดฏเด‚ เดตเดฐเต† เดจเดฟเด™เตเด™เตพ เดŽเดฒเตเดฒเดพเด‚ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดšเต†เดฏเตเดคเตเดตเต†เด™เตเด•เดฟเตฝ, เดตเต†เดฌเตเด—เตเดฐเดพเด‚ เด…เด‚เด—เต€เด•เดพเดฐ เดชเต‡เดœเต เดคเตเดฑเด•เตเด•เตเด‚.

เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เตพ เด’เดฐเต เดธเต‡เดตเดจเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดซเดฏเตฝ เด‰เดฃเตเดŸเดพเด•เตเด•เดพเด‚

sudo touch /lib/systemd/system/webogram.service

เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดŽเดกเดฟเดฑเตเดฑเดฑเดฟเตฝ เด…เดคเต เดคเตเดฑเดจเตเดจเต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเต‚เดชเด‚ เดจเตฝเด•เตเด• (เดตเตผเด•เตเด•เตเดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเดพเดค เดจเตฝเด•เตเด•)

[Unit]
Description=Webogram mirror
[Service]
WorkingDirectory=/home/tg/webogram
ExecStart=/usr/bin/npm start
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target

เดคเตเดŸเตผเดจเตเดจเต เดžเด™เตเด™เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เดฎเดพเตปเดกเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต:

เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต

sudo systemctl daemon-reload

เด“เดŸเตเดŸเต‹เดฑเตบ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เตเด•:

sudo systemctl enable webogram.service

เดจเดฎเตเด•เตเด•เต เดธเต‡เดตเดจเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚:

sudo systemctl start webogram.service

เด˜เดŸเตเดŸเด™เตเด™เตพ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟเดฏ เดถเต‡เดทเด‚, Webogram เดชเต‹เตผเดŸเตเดŸเต 8000-เตฝ เดคเตเดŸเตผเดจเตเดจเตเด‚ เดฒเดญเตเดฏเดฎเดพเด•เตเด‚.

nginx เดตเดดเดฟ เดžเด™เตเด™เดณเตเดŸเต† เดตเต†เดฌเตโ€Œเด—เตเดฐเดพเดฎเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด†เด•เตโ€Œเดธเดธเต เดžเด™เตเด™เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดชเตเดฑเดคเตเดคเตเดจเดฟเดจเตเดจเตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพเด•เตเด•เดพเดฏเดฟ เดžเด™เตเด™เตพ เดชเต‹เตผเดŸเตเดŸเต 8000 เด…เดŸเดฏเตเด•เตเด•เตเด‚.

เด‡เดคเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ udf เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดฐเต€เดคเดฟ):

sudo ufw deny 8000

เดจเดฟเด™เตเด™เตพ เด‡เดชเตเดชเต‹เดดเตเด‚ udf เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดชเด•เตเดทเต‡ เด…เดคเต เดธเต†เตผเดตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด•เต‚เดŸเตเดคเตฝ เดจเดฟเดฏเดฎเด™เตเด™เตพ เดšเต‡เตผเด•เตเด•เตเด• (เดŽเดฒเตเดฒเดพเด‚ เดคเด•เดฐเดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป) เด•เต‚เดŸเดพเดคเต† udf เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เตเด•:

sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดจเดฎเตเด•เตเด•เต nginx เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฎเดพเดฑเตเดฑเดพเตป เดคเตเดŸเด™เตเด™เดพเด‚.

เดžเดพเตป เดฎเตเด•เดณเดฟเตฝ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เดจเตฝเด•เดฟเดฏเดคเตเดชเต‹เดฒเต†, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเต†เตผเดตเดฑเดฟเตฝ ssl เด‰เดณเตเดณ เด’เดฐเต เดกเตŠเดฎเต†เดฏเตเตป เด‡เดคเดฟเดจเด•เด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเต เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต. เดกเตŠเดฎเต†เดฏเตโ€Œเตป เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเดฟเตฝ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดŽเดจเตเดคเดพเดฃเต เดšเต‡เตผเด•เตเด•เต‡เดฃเตเดŸเดคเต†เดจเตเดจเต เดฎเดพเดคเตเดฐเด‚ เดžเดพเตป เดจเดฟเด™เตเด™เดณเตเดŸเต† เดถเตเดฐเดฆเตเดงเดฏเดฟเตฝเดชเตเดชเต†เดŸเตเดคเตเดคเตเด‚:


server {
...
  location ^~ /pluto/apiw1/ {
    proxy_pass https://pluto.web.telegram.org/apiw1/;
  }
  location ^~ /venus/apiw1/ {
    proxy_pass https://venus.web.telegram.org/apiw1/;
  }
  location ^~ /aurora/apiw1/ {
    proxy_pass https://aurora.web.telegram.org/apiw1/;
  }
  location ^~ /vesta/apiw1/ {
    proxy_pass https://vesta.web.telegram.org/apiw1/;
  }
  location ^~ /flora/apiw1/ {
    proxy_pass https://flora.web.telegram.org/apiw1/;
  }
  location ^~ /pluto-1/apiw1/ {
    proxy_pass https://pluto-1.web.telegram.org/apiw1/;
  }
  location ^~ /venus-1/apiw1/ {
    proxy_pass https://venus-1.web.telegram.org/apiw1/;
  }
  location ^~ /aurora-1/apiw1/ {
    proxy_pass https://aurora-1.web.telegram.org/apiw1/;
  }
  location ^~ /vesta-1/apiw1/ {
    proxy_pass https://vesta-1.web.telegram.org/apiw1/;
  }
  location ^~ /flora-1/apiw1/ {
    proxy_pass https://flora-1.web.telegram.org/apiw1/;
  }
  location ^~ /DC1/ {
    proxy_pass http://149.154.175.10:80/;
  }
  location ^~ /DC2/ {
    proxy_pass http://149.154.167.40:80/;
  }
  location ^~ /DC3/ {
    proxy_pass http://149.154.175.117:80/;
  }
  location ^~ /DC4/ {
    proxy_pass http://149.154.175.50:80/;
  }
  location ^~ /DC5/ {
    proxy_pass http://149.154.167.51:80/;
  }
  location ^~ /DC6/ {
    proxy_pass http://149.154.175.100:80/;
  }
  location ^~ /DC7/ {
    proxy_pass http://149.154.167.91:80/;
  }
  location ^~ /DC8/ {
    proxy_pass http://149.154.171.5:80/;
  }
 location / {
    auth_basic "tg";
    auth_basic_user_file /etc/nginx/passwd.htpasswd;
    proxy_pass http://localhost:8000/;
    proxy_read_timeout 90s;
    proxy_connect_timeout 90s;
    proxy_send_timeout 90s;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
  }
}

เดžเด™เตเด™เตพ nginx เด•เต‹เตบเดซเดฟเด—เดฑเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเต:

  • เดžเด™เตเด™เตพ เดฑเต‚เดŸเตเดŸเต เดฒเตŠเด•เตเด•เต‡เดทเตป เดฎเดพเดฑเตเดฑเตเดจเตเดจเต, เด…เดคเต เดตเต†เดฌเตโ€Œเด—เตเดฐเดพเด‚ เดชเตเดฐเดคเดฟเด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเต‹เตผเดŸเตเดŸเต 8000-เดฒเต‡เด•เตเด•เต เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเต‹เด•เตโ€Œเดธเดฟ เดšเต†เดฏเตเดฏเตเด‚
  • เด…เดŸเดฟเดธเตเดฅเดพเดจ-เด“เดคเตเดคเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เดฑเต‚เดŸเตเดŸเต เดฒเตŠเด•เตเด•เต‡เดทเตป เด…เดŸเดฏเตเด•เตเด•เตเดจเตเดจเต. เด•เดฃเตเดฃเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดฌเต‹เดŸเตเดŸเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดžเด™เตเด™เดณเตเดŸเต† เด…เดชเต‡เด•เตเดท เด…เดŸเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดคเดฟเด•เดšเตเดšเตเด‚ เดชเตเดฐเดคเต€เด•เดพเดคเตเดฎเด•เดฎเดพเดฏ เด’เดฐเต เดจเดŸเดชเดŸเดฟเดฏเดพเดฃเดฟเดคเต. (เดคเดŸเดฏเตเดจเตเดจเดคเดฟเดฒเต† เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เด’เดดเดฟเดตเดพเด•เตเด•เดพเดจเตเด‚)
  • เดŸเต†เดฒเดฟเด—เตเดฐเดพเด‚ เดธเต†เตผเดตเดฑเดฟเตฝ proxy_path เด‰เดณเตเดณ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดฒเตŠเด•เตเด•เต‡เดทเดจเตเด•เตพ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดžเด™เตเด™เดณเตเดŸเต† เด…เดตเดธเดพเดจ เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เดณเดพเดฃเต, เด…เดคเดฟเดฒเต‚เดŸเต† เดžเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเต‹เด•เตเดธเดฟ เดšเต†เดฏเตเดฏเตเด‚

เด•เต‚เดŸเดพเดคเต†, เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเด‚ /etc/nginx/passwd.htpasswd;เด…เดคเดฟเดจเดพเตฝ nginx-เดจเต เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด•เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด‰เดฃเตเดŸเต.

sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/passwd.htpasswd tg

nginx เดตเดดเดฟ เดชเตเดฐเต‹เด•เตโ€Œเดธเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เดžเด™เตเด™เตพ เดตเต†เดฌเตโ€Œเด—เตเดฐเดพเด‚ เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‰เดฏเตผเดคเตเดคเตเดจเตเดจเต

nginx เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•:

sudo systemctl restart nginx

เด‡เดชเตเดชเต‹เตพ เดตเต†เดฌเตโ€Œเด—เตเดฐเดพเด‚ เด‡เดตเดฟเดŸเต† เดฎเดพเดคเตเดฐเดฎเต‡ เดฒเดญเตเดฏเดฎเดพเด•เต‚ mywebogram.localhost/app/index.html htpasswd เด•เดฎเดพเตปเดกเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพ เดจเดฟเตผเดตเดšเดฟเดšเตเดš เดฒเต‹เด—เดฟเดจเตเด‚ เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด‚ เดจเตฝเด•เดฟเดฏ เดถเต‡เดทเด‚.

เด•เตเดฑเดšเตเดšเต เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเต: เดžเด™เตเด™เตพ เดชเดฆเตเดงเดคเดฟเดฏเดฟเตฝ เดคเดจเตเดจเต† เดšเต†เดฑเดฟเดฏ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดตเดฐเตเดคเตเดคเตเด‚.

เด’เดฐเต เดŽเดกเดฟเดฑเตเดฑเดฑเดฟเตฝ เดซเดฏเตฝ เดคเตเดฑเด•เตเด•เตเด• ~/webogram/app/js/lib/mtproto.js

เด…เดคเดฟเดจเตเดฑเต† เด†เดฐเด‚เดญเด‚ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดซเต‹เดฎเดฟเดฒเต‡เด•เตเด•เต เด•เตŠเดฃเตเดŸเตเดตเดฐเดฟเด•:

/*!
 * Webogram v0.7.0 - messaging web application for MTProto
 * https://github.com/zhukov/webogram
 * Copyright (C) 2014 Igor Zhukov <[email protected]>
 * https://github.com/zhukov/webogram/blob/master/LICENSE
 */

angular.module('izhukov.mtproto', ['izhukov.utils'])

  .factory('MtpDcConfigurator', function () {
    var sslSubdomains = ['pluto', 'venus', 'aurora', 'vesta', 'flora']

    var dcOptions = Config.Modes.test
      ? [
        {id: 1, host: 'mywebogram.localhost/DC1',  port: 80},
        {id: 2, host: 'mywebogram.localhost/DC2',  port: 80},
        {id: 3, host: 'mywebogram.localhost/DC3', port: 80}
      ]
      : [
        {id: 1, host: 'mywebogram.localhost/DC4',  port: 80},
        {id: 2, host: 'mywebogram.localhost/DC5',  port: 80},
        {id: 3, host: 'mywebogram.localhost/DC6', port: 80},
        {id: 4, host: 'mywebogram.localhost/DC7',  port: 80},
        {id: 5, host: 'mywebogram.localhost/DC8',   port: 80}
      ]

    var chosenServers = {}

    function chooseServer (dcID, upload) {
      if (chosenServers[dcID] === undefined) {
        var chosenServer = false,
          i, dcOption

        if (Config.Modes.ssl || !Config.Modes.http) {
          var subdomain = sslSubdomains[dcID - 1] + (upload ? '-1' : '')
          var path = Config.Modes.test ? 'apiw_test1' : '/apiw1/'
          chosenServer = 'https://mywebogram.localhost/' + subdomain + path
          return chosenServer
        }
       for (i = 0; i < dcOptions.length; i++) {
          dcOption = dcOptions[i]
          if (dcOption.id == dcID) {
            chosenServer = 'http://' + dcOption.host + '/apiw1'
            break
          }
        }
        chosenServers[dcID] = chosenServer
      }
...
 

เด‡เดคเดฟเดจเตเดถเต‡เดทเด‚, เดจเดฟเด™เตเด™เตพ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเต‡เดœเต เดชเตเดคเตเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฌเตเดฐเต—เดธเตผ เด•เตบเดธเต‹เตพ เดคเตเดฑเดจเตเดจเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดจเต‹เด•เตเด•เตเด•. เดŽเดฒเตเดฒเดพเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ XHR เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เดŽเดฒเตเดฒเดพเด‚ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดšเต†เดฏเตเดคเต, เดตเต†เดฌเตโ€Œเด—เตเดฐเดพเด‚ เด‡เดชเตเดชเต‹เตพ nginx เดตเดดเดฟ เดชเตเดฐเต‹เด•เตเดธเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

nginx เดตเดดเดฟ เดชเตเดฐเต‹เด•เตโ€Œเดธเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เดžเด™เตเด™เตพ เดตเต†เดฌเตโ€Œเด—เตเดฐเดพเด‚ เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‰เดฏเตผเดคเตเดคเตเดจเตเดจเต

เดˆ เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ เดŽเดจเตเดจเต† เด•เต‚เดŸเดพเดคเต† เดฎเดฑเตเดฑเตŠเดฐเดพเตพเด•เตเด•เตเด‚ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเด•เตเดฎเต†เดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดตเดธเดพเดจเด‚ เดตเดฐเต† เดตเดพเดฏเดฟเดšเตเดš เดŽเดฒเตเดฒเดพเดตเตผเด•เตเด•เตเด‚ เด’เดฐเตเดชเดพเดŸเต เดจเดจเตเดฆเดฟ.

เด†เตผเด•เตเด•เต†เด™เตเด•เดฟเดฒเตเด‚ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเตเด•เตพ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเดฒเต‹ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดžเดพเตป เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด•เตƒเดคเตเดฏเดค เดตเดฐเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเดฒเต‹, เดฎเดฑเตเดชเดŸเดฟ เดจเตฝเด•เตเดจเตเดจเดคเดฟเตฝ เดžเดพเตป เดธเดจเตเดคเตเดทเตเดŸเดจเดพเดฃเต, เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเดฟเดฒเต‹ PM-เดฒเต‹ เดจเดฟเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•