Pa Habr!
Posachedwapa ndidapezeka kuti ndili mumkhalidwe womwe kunali kofunikira kugwira ntchito mkati mwamakampani omwe alibe mwayi wopezeka pa intaneti ndipo, monga momwe mungaganizire kuchokera pamutuwu, Telegraph idatsekedwa momwemo. Ndikukhulupirira kuti nkhaniyi ndi yodziwika kwa ambiri.
Nditha kuchita popanda amithenga pompopompo, koma inali Telegalamu yomwe ndimafunikira pantchito. Sizinali zotheka kukhazikitsa kasitomala pamakina ogwirira ntchito, komanso sikunali kotheka kugwiritsa ntchito laputopu yanu. Njira inanso ikuwoneka kuti ndiyo kugwiritsa ntchito
Mwamwayi, Webogram ndi pulojekiti yotseguka yomwe magwero ake akupezeka
Kukhazikitsa ndikudziyambitsa sikuli kovuta, komabe, pakagwiritsidwe ntchito mkati mwa netiweki yotsekedwa ndi ma seva a Telegraph, mutha kukhumudwitsidwa kuposa kuchita bwino, popeza tsamba lawebusayiti limatumiza zopempha ku ma seva a Telegraph kuchokera pamakina a wogwiritsa ntchito.
Mwamwayi, izi ndizosavuta (koma osati zowonekeratu) kukonza. Ndikufuna kukuchenjezani kuti sindine woyambitsa yankho ili. Ndinakwanitsa kuzipeza
Pansi pa odulidwawo mupeza kukhazikitsidwa kwapang'onopang'ono kwa galasi lanu la Webogram ndikukhazikitsa zopempha zake ku maseva a Telegraph pogwiritsa ntchito nginx.
Mwachitsanzo, ndinasankha Ubuntu Server 18.04.3 yomwe yangoikidwa kumene ndikusinthidwa.
Chenjezo: Phunziroli siliphatikiza malangizo okhazikitsa domain mu nginx. Muyenera kuchita izi nokha. Phunziroli likuganiza kuti mwakonza kale domain ndi ssl, komanso kuti seva yomwe mukufuna kuyikonza imatha kupeza ma seva a Telegraph (m'njira iliyonse yomwe mungafune)
Tiyerekeze kuti ip ya seva iyi ndi 10.23.0.3, ndipo dzina lake ndi mywebogram.localhost
Kutengera pamisonkhanoyi, ndipereka zitsanzo za masinthidwe. Musaiwale kusintha makonda kukhala anu.
Kotero tiyeni tiyambe:
Kuti tiyendetse Webogram, timafunikira ma nodejs. Mwachikhazikitso, ngati tiyiyika kuchokera ku nkhokwe za Ubuntu, tidzapeza nodejs version 8.x. Tikufuna 12.x:
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt update && sudo apt -y install nodejs
Timasankha malo omwe Webogram yathu idzakhazikitsidwa.
Mwachitsanzo, tiyeni tiyike muzu wa bukhu lanyumba. Kuti muchite izi, phatikizani malo ovomerezeka ku seva yathu:
cd ~ && git clone https://github.com/zhukov/webogram.git
Chotsatira ndikukhazikitsa zodalira zonse zofunika kuti mugwiritse ntchito pulogalamuyi:
cd webogram && npm install
Tiyeni tiyese kuyesa. Yendetsani lamulo:
npm start
Pambuyo pake, timayesa kutsegula mu msakatuli
http://10.23.0.3:8000/app/index.html
Ngati mpaka pano mwachita zonse molondola, tsamba lovomerezeka la Webogram lidzatsegulidwa.
Tsopano tiyenera kukonza pulogalamuyo kuti igwire ntchito ngati ntchito. Kuti tichite izi, tiyeni tipange fayilo
sudo touch /lib/systemd/system/webogram.service
tsegulani mumkonzi uliwonse ndikuwonetsetsa zotsatirazi (lowetsani njira yanu yopita ku WorkDirectory)
[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
Kenako timayendetsa malamulo otsatirawa:
Kugwiritsa ntchito zosintha
sudo systemctl daemon-reload
Yambitsani autorun:
sudo systemctl enable webogram.service
Tiyeni tiyambe ntchito:
sudo systemctl start webogram.service
Mukamaliza masitepe, Webogram ipitilira kupezeka padoko 8000.
Popeza tikhala tikukhazikitsa mwayi wofikira ku Webogram yathu kudzera nginx, titseka port 8000 pazofunsira kuchokera kunja.
Timagwiritsa ntchito udf pa izi (kapena njira iliyonse yabwino kwa inu):
sudo ufw deny 8000
Ngati mutasankhabe kugwiritsa ntchito udf, koma yayimitsidwa pa seva, yonjezerani malamulo ena (kuti chirichonse chisawonongeke) ndikuyambitsa udf:
sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
Kenako, tiyeni tiyambe kusintha kasinthidwe ka nginx.
Monga ndachenjeza pamwambapa, zimaganiziridwa kuti domain yokhala ndi ssl yakhazikitsidwa kale pa seva yanu. Ndikungoyang'ana zomwe zidzafunike kuwonjezeredwa ku fayilo yosinthira domain kuti igwire bwino ntchito:
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;
}
}
Zomwe timawonjezera ku nginx config:
- Timasintha malo omwe ali muzu, omwe adzafunsira kwa doko 8000, pomwe Webogram imayankha
- Timatseka malo a mizu pogwiritsa ntchito Basic-auth. Ichi ndi sitepe yophiphiritsira kutseka ntchito yathu kuti tisayang'ane maso ndi bots. (Komanso kupewa mavuto ndi kutsekereza)
- Malo ambiri okhala ndi proxy_path pa seva ya Telegraph ndiye mathero athu momwe titha kuyimira zopempha zathu.
Tsopano, tiyeni tipange fayilo /etc/nginx/passwd.htpasswd;
kotero kuti nginx ili ndi china chake chowonera mapasiwedi ogwiritsa ntchito.
sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/passwd.htpasswd tg
Yambitsaninso nginx:
sudo systemctl restart nginx
Tsopano Webogram ipezeka pa
Zatsala pang'ono: tidzasintha pang'ono polojekiti yokha.
Tsegulani fayilo mumkonzi ~/webogram/app/js/lib/mtproto.js
Ndipo bweretsani chiyambi chake kukhala mawonekedwe awa:
/*!
* 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
}
...
Pambuyo pake, muyenera kutsitsimutsanso tsamba la ntchito mu msakatuli.
Tsegulani msakatuli wanu ndikuwona zopempha za netiweki. Ngati chirichonse chikugwira ntchito ndipo zopempha za XHR zipita ku seva yanu, ndiye kuti zonse zachitika molondola, ndipo Webogram tsopano ikuyendetsedwa ndi nginx.
Ndikukhulupirira kuti phunziroli likhala lothandiza kwa wina kupatula ine.
Zikomo kwambiri kwa aliyense amene amawerenga mpaka kumapeto.
Ngati wina ali ndi vuto lililonse kapena ndapanga zolakwika, ndidzakhala wokondwa kuyankha ndikuyesera kukuthandizani mu ndemanga kapena mu PM.
Source: www.habr.com