پێشەکی
با چات بکەین(Let’s Chat)، بەرنامەیەکی پەیام ناردنی ئازاد و سەرچاوە کراوە و بەردەوامە کە لەسەر Node.js و MongoDB کاردەکات. بۆ گرووپە بچووکەکان دیزاین کراوە کە کۆمەڵێک تایبەتمەندی دەوڵەمەند پێشکەش دەکەن وەک، ڕەسەنایەتی LDAP/Kerberos، API ی هاوشێوەی REST و پشتگیری XMPP ـیش دەکات. ئەم سیستەمە، دەتوانیت هەموو جۆرە نامەیەک بنێری و هەروەها چاتی گروپی بەرژەوەندی و ستیکەری دەنگ و ئیمۆجییش بدۆزیتەوە.
پێداویستی
- ڕاژەکارێک کە ئوبونتو ٢٢.٠٤ بەکاردەهێنێت.
- بەکارهێنەرێک بە ئاستی بەڕێوەبەر
دامەزراندنی Node.JS
پێش دەستپێکردن پێویستە “Node.js” لەسەر سێرڤەرەکەت دابمەزرێنیت. بۆ دامەزراندنی نوێترین وەشانی “Node.js”، پێویستە کۆگای “Node Source” زیاد بکەیت بۆ “APT”.
سەرەتا هەموو وابەستەییەکانی پێویست، بەم فرمانەی خوارەوە دامەزرێنە:
apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common -y
کاتێک هەموو وابەستەییەکان دامەزران، کۆگای “Node.js” زیاد بکە بۆ “APT”
curl -sL https://deb.nodesource.com/setup_18.x | bash -
کاتێک کۆگاکە زیاد کرا، دەتوانیت “Node.js” بەم فرمانەی خوارەوە دابمەزرێنیت:
apt-get install nodejs -y
دوای دامەزراندنی سەرکەوتوو، بەم فرمانەی خوارەوە وەشانی “Node.js” پشتڕاست بکەرەوە:
node -v
دەرئەنجامی فەرمانەکەی سەرەوە ئەم دەقەی خوارەوەیە کە ژمارە وشانە
v18.7.0
دامەزراندی بنکەدراوەیMongoDB
هەروەها پێویستت بە دامەزراندنی بنکەدراوەی MongoDB دەبێت لەسەر ڕاژەکەت.
سەرەتا پاکێجی libssl دابەزێنە بەم فرمانەی خوارەوە:
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
دواتر کلیلی “MongoDB GPG” و کۆگاکە زیاد بکە بە بەکارهێنانی ئەم فرمانەی خوارەوە:
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add - echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list
دواتر بەم فرمانەی خوارەوە حهشارگه(cache)کۆگاکە نوێ بکەرەوە:
apt update
کاتێک کۆگاکەت نوێکرایەوە، “MongoDB” دابمەزرێنە بە ئەم فرمانەی خوارەوە:
apt install -y mongodb-org
کاتێک پاکەتی”MongoDB” دامەزرا، خزمەتگوزاری “MongoDB” بەم فرمانەی خوارەوە دەست پێ بکە و چالاکی بکە:
systemctl start mongod systemctl enable mongod
دەتوانیت بەم فرمانەی خوارەوە بار و دۆخی خزمەتگوزاری “MongoDB” بپشکنیت:
systemctl status mongod
ئەمە دەرنجامی فەرمانەکەی سەرەوەیە
? mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2022-07-31 04:00:08 UTC; 6s ago Docs: https://docs.mongodb.org/manual Main PID: 42274 (mongod) Memory: 61.1M CPU: 1.014s CGroup: /system.slice/mongod.service ??42274 /usr/bin/mongod --config /etc/mongod.conf Jul 31 04:00:08 ubuntu2204 systemd[1]: Started MongoDB Database Server.
دامەزراندنی Let’s Chat
سەرەتا پێویستە نوێترین وەشانی “Let’s Chat” لە کۆگای “Github” دابەزێنیت. دەتوانن بەم فرمانە دایبەزێنن:
git clone https://github.com/sdelements/lets-chat.git
کاتێک دابەزاندنەکە تەواو بوو، دایرێکتۆرەکە بگۆڕە بۆ دایرێکتۆری دابەزێنراو(downloaded) و هەموو وابەستەییەکانی پێویست دامەزرێنە بە بەکارهێنانی ئەم فرمانەی خوارەوە:
cd lets-chat npm install
دواتر، نموونەی فایلە ڕێکخستنەکە کۆپی بکە و ڕاژەکاری “Let’s Chat” بەم فرمانەی خوارەوە دەستپێبکە:
cp settings.yml.sample settings.yml npm start
دەرئەنجام بەم شێوە دەبێت
> lets-chat@0.4.8 start > node app.js (node:42373) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0, use `openUri()` instead, or set the `useMongoClient` option if using `connect()` or `createConnection()`. See http://mongoosejs.com/docs/4.x/docs/connections.html#use-mongo-client (Use `node --trace-deprecation ...` to show where the warning was created) ??? ????????????????????????? ?????????? ??? ?????? ????????? ??? ????????????????????????? ??????????? ???????????????????? ??? ?????? ??? ???????? ??? ???????????????? ??? ??? ?????? ??? ???????? ??? ???????????????? ??? ???????????????? ??? ???????? ??????????? ?????? ??? ??? ???????????????? ??? ???????? ?????????? ?????? ??? ??? Release 0.4.8
بۆ وەستاندنی خزمەتگوزاری CTRL + C بکە.
فایلێکی خزمەتگوزاری Systemd دروست بکە بۆ Let’s Chat”
دواتر پێویستە فایلێکی خزمەتگوزاری “systemd” بۆ “Let’s Chat” دروست بکەیت. دەتوانیت بەم فرمانەی خوارەوە دروستی بکەیت:
nano /etc/systemd/system/letschat.service
ئەم دێڕانەی خوارەوە زیاد بکە:
[Unit] Description=Let's Chat Server Wants=mongodb.service After=network.target mongod.service [Service] Type=simple WorkingDirectory=/root/lets-chat ExecStart=/usr/bin/npm start User=root Group=root Restart=always RestartSec=9 [Install] WantedBy=multi-user.target
فایلەکە پاشکەوت و دایبخە، پاشان بەم فرمانەی خوارەوە تارمایی-(daemon: له سیستهمی کارپێکردندا بۆ وێنه له یونیکس، بهرنامه یان ڕهوتێ که له بهرچاوی بهکارهێنهر شاراوهیه و تهنیا له کاتی پێویستدا، بهشێوهی خۆکار، بار دهبێ و ههندێ له کاره سیستهمییهکان و هی تر جێبهجێ دهکا و دوایی دیسانهوه خۆی حهشار دهداتهوه؛فەرهەنگی ئایتی زانستپەروەرانی کورد)- “systemd” دووبارە باربکەرەوە:
systemctl daemon-reload
دواتر بەم فرمانەی خوارەوە خزمەتگوزاری “Let’s Chat” دەست پێ بکە و چالاک بکە:
systemctl start letschat systemctl enable letschat
دواتر بەم فرمانەی خوارەوە دۆخی “Let’s Chat” بپشکنە:
systemctl status letschat
پێویستە ئەم دەرچوونەی خوارەوە ببینیت:
? letschat.service - Let's Chat Server Loaded: loaded (/etc/systemd/system/letschat.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2022-07-31 04:02:34 UTC; 4s ago Main PID: 42429 (npm start) Tasks: 23 (limit: 2242) Memory: 157.9M CPU: 4.457s CGroup: /system.slice/letschat.service ??42429 "npm start" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ??42440 sh /tmp/start-b5e830e4.sh ??42441 letschat "" "" "" Jul 31 04:02:34 ubuntu2204 npm[42429]: > node app.js Jul 31 04:02:38 ubuntu2204 npm[42441]: (node:42441) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0, use `openUri()` instead> Jul 31 04:02:38 ubuntu2204 npm[42441]: (Use `node --trace-deprecation ...` to show where the warning was created) Jul 31 04:02:38 ubuntu2204 npm[42441]: ??? ????????????????????????? ?????????? ??? ?????? ????????? Jul 31 04:02:38 ubuntu2204 npm[42441]: ??? ????????????????????????? ??????????? ???????????????????? Jul 31 04:02:38 ubuntu2204 npm[42441]: ??? ?????? ??? ???????? ??? ???????????????? ??? Jul 31 04:02:38 ubuntu2204 npm[42441]: ??? ?????? ??? ???????? ??? ???????????????? ??? Jul 31 04:02:38 ubuntu2204 npm[42441]: ???????????????? ??? ???????? ??????????? ?????? ??? ??? Jul 31 04:02:38 ubuntu2204 npm[42441]: ???????????????? ??? ???????? ?????????? ?????? ??? ??? Jul 31 04:02:38 ubuntu2204 npm[42441]: Release 0.4.8
لەم خاڵەدا خزمەتگوزاری “Let’s Chat” دەست پێدەکات و لە دەروازەی 5000 گوێ دەگرێت، دەتوانیت بەم فرمانەی خوارەوە پشکنین بکەیت:
ss -antpl | grep 5000
پێویستە ئەم دەرچوونەی خوارەوە ببینیت:
LISTEN 0 511 127.0.0.1:5000 0.0.0.0:* users:(("letschat",pid=42441,fd=20))
Nginx ڕێکبخە بۆ Let’s Chat
دواتر پێویستە “Nginx” وەک پرۆکسی پێچەوانە(reverse proxy) بۆ “Let’s Chat” دابمەزرێنیت و ڕێکبخەیت. بۆیە دەتوانیت لە ڕێگەی دەروازەی ٨٠ەوە بچیتە ناو “Let’s Chat” ەوە.
سەرەتا پاکێجی سێرڤەری “Nginx” بەم فرمانەی خوارەوە دامەزرێنە:
apt install nginx -y
دواتر، فایلێکی ڕێکخستنی ڕاژەیێکی خەیاڵی “Nginx” دروست بکە:
nano /etc/nginx/conf.d/letschat.conf
ئەم ڕێکخستنانەی خوارەوە زیاد بکە:
server { server_name letschat.example.com; listen 80; access_log /var/log/nginx/lets_chat-access.log; error_log /var/log/nginx/lets_chat-error.log; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_cache_bypass $http_upgrade; proxy_pass http://127.0.0.1:5000; } }
فایلەکە هەڵبگرە و دایبخە، پاشان “Nginx” پشتڕاست بکەرەوە بۆ هەر هەڵەیەکی ڕستەسازی:
nginx -t
پێویستە ئەم دەرچوونەی خوارەوە ببینیت:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
لە کۆتاییدا، خزمەتگوزاری “Nginx” دووبارە دەستپێبکەرەوە بۆ جێبەجێکردنی گۆڕانکارییەکانی ڕێکخستن:
systemctl restart nginx
هەروەها دەتوانیت بە بەکارهێنانی ئەم فرمانەی خوارەوە دۆخی “Nginx” بپشکنیت:
systemctl status nginx
پێویستە دۆخی “Nginx” لەم دەرچوونەی خوارەوەدا ببینیت:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-07-31 04:04:23 UTC; 5s ago Docs: man:nginx(8) Process: 43193 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 43194 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 43195 (nginx) Tasks: 2 (limit: 2242) Memory: 2.5M CPU: 35ms CGroup: /system.slice/nginx.service ??43195 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" ??43196 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" Jul 31 04:04:23 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server... Jul 31 04:04:23 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.
دەستڕاگەیشتن بە ڕووکاری وێبی “Let’s Chat”
ئێستا، وێبگەڕەکەت بکەرەوە و بە بەکارهێنانی (http://letschat.example.com) بچۆرە ناو ڕووکاری وێبی”Let’s Chat”.
بۆ دروستکردنی ئەکاونت پێویستە کلیک لەسەر دوگمەی “I need an account” بکەیت. پێویستە ئەم لاپەڕەیەی خوارەوە ببینیت:
ناوی بەکارهێنەر و وشەی نهێنی و ئیمەیڵەکەت بنووسە و کرتە لە دوگمەی تۆمارکردن(Register) بکە. کاتێک بە سەرکەوتوویی ناوت تۆمار کرد، پێویستە ئەم پەڕەی خوارەوەت دەست بکەوێت:
کلیک لەسەر دوگمەی OK بکە. تۆ ئاڕاستە دەکرێیتەوە بۆ شاشەی چوونەژوورەوەی “Let’s Chat”:
ناوی بەکارهێنەر و وشەی نهێنی “Let’s Chat” دابین بکە، و کرتە لە دوگمەی چوونەژوورەوە (Sign In) بکە. پێویستە لەم شاشەیەی خوارەوە داشبۆردەکەی “Let’s Chat” ببینیت: