ืื ื—ื ื• ืžืขื“ื›ื ื™ื ืืช ื”ืฉื•ืง: ืกืคืจ ืœื ื• ืื™ืš ื˜ื•ื‘ ื™ื•ืชืจ?

ืื ื—ื ื• ืžืขื“ื›ื ื™ื ืืช ื”ืฉื•ืง: ืกืคืจ ืœื ื• ืื™ืš ื˜ื•ื‘ ื™ื•ืชืจ?

ื”ืฉื ื” ื”ืฆื‘ื ื• ืœืขืฆืžื ื• ื™ืขื“ื™ื ืฉืืคืชื ื™ื™ื ืœืฉื™ืคื•ืจ ื”ืžื•ืฆืจ.

ื—ืœืง ืžื”ืžืฉื™ืžื•ืช ื“ื•ืจืฉื•ืช ื”ื›ื ื” ืจืฆื™ื ื™ืช, ืขื‘ื•ืจืŸ ืื ื• ืื•ืกืคื™ื ืžืฉื•ื‘ ืžืžืฉืชืžืฉื™ื: ืื ื• ืžื–ืžื™ื ื™ื ืžืคืชื—ื™ื, ืžื ื”ืœื™ ืžืขืจื›ืช, ืจืืฉื™ ืฆื•ื•ืช ื•ืžื•ืžื—ื™ Kubernetes ืœืžืฉืจื“.

ื‘ื—ืœืงื ืื ื• ืžื ืคื™ืงื™ื ืฉืจืชื™ื ื‘ืชื’ื•ื‘ื” ืœืžืฉื•ื‘, ื›ืคื™ ืฉื”ื™ื” ื‘ืžืงืจื” ืขื ืชืœืžื™ื“ื™ ื—ื™ื ื•ืš ืžื˜ื•ืฉื˜ืฉ. ื™ืฉ ืœื ื• ืฆ'ืื˜ื™ื ืขืกื•ืงื™ื ืžืื•ื“ ื‘ื“ื™ื•ื ื™ื ืขืœ UI/UX, ืฆื‘ืจ ืžืืžืจื™ื ื—ื™ื ื•ื›ื™ื™ื ืขื‘ื•ืจ ืกืคืจ ื”ืขื™ื•ืŸ, ื•ืชื•ื›ื ื™ื•ืช ื’ื“ื•ืœื•ืช ืœืฉื™ืคื•ืจ ื—ื•ื•ื™ืช ื”ืžืฉืชืžืฉ.

ืจื•ื‘ ื”ืฉื™ื ื•ื™ื™ื ื“ื•ืจืฉื™ื ื”ืจื‘ื” ืฉืขื•ืช ืคื™ืชื•ื—, ืื‘ืœ ื–ื™ืจืช ืžืกื—ืจ - ืกื™ืคื•ืจ ืื—ืจ ืœื’ืžืจื™. ืขื ื”ื•ืคืขืช ื”ืชืžื•ื ื•ืช, ื™ืฉ ืœื ื• ื”ื–ื“ืžื ื•ืช ืœืžืฉื•ืš ืžื ื”ืœื™ ืžืขืจื›ืช ื—ื™ืฆื•ื ื™ื™ื ืฉื™ื›ื•ืœื™ื ืœื”ื›ื™ืŸ ืชืžื•ื ื” ื›ืš ืฉื ื•ื›ืœ ืœื›ืœื•ืœ ืื•ืชื” ื‘ืฉื•ืง ืžืžืฉ ืชื•ืš ื™ื•ื.

ืื™ืš ืœืชืจื•ื ืœ ื–ื™ืจืช ืžืกื—ืจ ืื ื• ื ืฆื™ื’ ืืช RUVDS ื•ืžื” ื–ื” ื™ื›ืœื•ืœ ื‘ืืžืฆืขื•ืช ื”ื“ื•ื’ืžื” ืฉืœ ื”ืชืžื•ื ื” ื”ื—ื“ืฉื” ืฉืœื ื• ืฉื”ื•ื›ื ื” ืขืœ ื™ื“ื™ ื”ืœืงื•ื— ืฉืœื ื• ื˜ืืงื–ื™ - GitLab

ื›ื™ืฆื“ ืœื™ืฆื•ืจ ืชื‘ื ื™ืช Gitlab ื‘- Centos 8

ื›ื“ื™ ืœื”ืชืงื™ืŸ ืืช Gitlab, ื™ื•ืจื” ื‘ื—ืจื” ื‘ืฉืจืช ืขื 8 GB RAM ื•-2 ืœื™ื‘ื•ืช CPU (ืืคืฉืจื•ื™ื•ืช 4 GB ื•-1 CPU, ืืš ื‘ืžืงืจื” ื–ื” ืชืฆื˜ืจืš ืœื”ืฉืชืžืฉ ื‘ืงื•ื‘ืฅ swap, ื•ื‘ื™ืฆื•ืขื™ Gitlab ื‘ืžืงืจื” ื–ื” ื ืžื•ื›ื™ื ื‘ืื•ืคืŸ ื ื™ื›ืจ.

ืื ื—ื ื• ืžืขื“ื›ื ื™ื ืืช ื”ืฉื•ืง: ืกืคืจ ืœื ื• ืื™ืš ื˜ื•ื‘ ื™ื•ืชืจ?

ื‘ื•ืื• ื ื•ื•ื“ื ืฉื”ื—ื‘ื™ืœื•ืช ื”ื“ืจื•ืฉื•ืช ืœื”ืชืงื ืช Gitlab ืžื•ืชืงื ื•ืช:

sudo dnf install -y curl policycoreutils

ื‘ื•ืื• ื ืคืชื— ื’ื™ืฉื” ืœื™ืฆื™ืื•ืช 80 ื•-443:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

ื‘ื•ืื• ื ื•ืกื™ืฃ ืืช ืžืื’ืจ Gitlab:

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

ืื ืœืฉืจืช ืžื•ื’ื“ืจ ืฉื DNS, ื ื™ืชืŸ ืœื”ืชืงื™ืŸ ืืช Gitlab ื‘ืืžืฆืขื•ืชื•. ืื ืชืฆื™ื™ืŸ ืืช ื”ืงื™ื“ื•ืžืช https://, Gitlab ื™ืคื™ืง ืื•ื˜ื•ืžื˜ื™ืช ืื™ืฉื•ืจื™ Lets Encrypt.

ื‘ืžืงืจื” ืฉืœื ื•, ื›ื™ ื™ืฆืจื ื• ืชื‘ื ื™ืช ืขื‘ื•ืจ ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช, ื•ืื– ื™ื•ืจื” ืงื‘ืขื” ื›ืชื•ื‘ืช ืชื‘ื ื™ืช (ืฉื ื™ืชืŸ ืœืฉื ื•ืช ืื•ืชื” ื‘ืขืชื™ื“ ืœืœื ื‘ืขื™ื•ืช):

sudo EXTERNAL_URL="http://0.0.0.0" dnf install -y gitlab-ee

ืœืื—ืจ ืžื›ืŸ, ืชื•ื›ืœ ืœื‘ื“ื•ืง ืฉืฉื™ืจื•ืชื™ Gitlab ืคื•ืขืœื™ื ืขืœ ื™ื“ื™ ืžืขื‘ืจ ืืœ

http://vps_ip_address/

ื”ืžืขืจื›ืช ืชื‘ืงืฉ ืžืžืš ืœื”ื’ื“ื™ืจ ืกื™ืกืžื” ืจืืฉื•ื ื™ืช ืขื‘ื•ืจ ื—ืฉื‘ื•ืŸ ืžื ื”ืœ ื”ืฉื•ืจืฉ.

ื‘ืฉืœื‘ ื–ื” ื ืฆืœื ืชืžื•ื ืช ืžืฆื‘ ืฉืœ ื”ืฉืจืช, ื•ืœืื—ืจ ืžื›ืŸ ื ื’ื“ื™ืจ ืื•ืชื• ื‘ืืžืฆืขื•ืชื•.

ืื ื—ื ื• ืžืขื“ื›ื ื™ื ืืช ื”ืฉื•ืง: ืกืคืจ ืœื ื• ืื™ืš ื˜ื•ื‘ ื™ื•ืชืจ?

ื•ื‘ื›ืœ ื–ืืช!

ื‘ื•ื ื•ืก: ื ืกืคืจ ืœื›ื ืื™ืœื• ื“ื‘ืจื™ื ืžืขื ื™ื™ื ื™ื ืชื•ื›ืœื• ืœืขืฉื•ืช ืขืœ ื™ื“ื™ ื”ืจื—ื‘ื” ื•ื™ืจื˜ื•ืืœื™ ืขื ืชืžื•ื ืช GitLab.

ื ื™ื˜ื•ืจ Gitlab ื‘ืืžืฆืขื•ืช Grafana

ืœืคื ื™ ืฉืœื•ืฉ ืฉื ื™ื, ืฆื•ื•ืช Gitlab ื”ื˜ืžื™ืข ืžืขืจื›ืช ื ื™ื˜ื•ืจ ืœื ื™ื”ื•ืœ ืžืกืคืจ ืขืฆื•ื ืฉืœ ืžื“ื“ื™ื ื”ืงืฉื•ืจื™ื ืœืฉื™ืจื•ืชื™ Gitlab.

ืžืื–, Gitlab ื”ื—ืœื” ืœืฉืœื•ื— ืืช ื—ื‘ื™ืœืช ื”ื”ืชืงื ื” ืฉืœื” ืขื Prometheus ื›ื“ื™ ืœืืคืฉืจ ืœืžืฉืชืžืฉื™ื ืฉืœื” ืœื ืฆืœ ืืช ื™ื›ื•ืœื•ืช ื”ื ื™ื˜ื•ืจ ืฉืžืกืคืงืช Prometheus.

Prometheus ื”ื™ื ืกื“ืจืช ื–ืžืŸ ืคืชื•ื—ื” (Apache 2.0) DBMS ืฉื ื›ืชื‘ื” ื‘-Go ื•ืคื•ืชื—ื” ื‘ืžืงื•ืจ ื‘-SoundCloud. ื‘ืžื™ืœื™ื ืื—ืจื•ืช, ื”ื“ื‘ืจ ื”ื–ื” ืžืื—ืกืŸ ืืช ื”ืžื“ื“ื™ื ืฉืœืš. ืชื›ื•ื ื” ืžืขื ื™ื™ื ืช ืฉืœ ืคืจื•ืžืชืื•ืก ื”ื™ื ืฉื”ื•ื ืขืฆืžื• ืžื•ืฉืš ืžื“ื“ื™ื ืžืžืขืจื›ืช ื ืชื•ื ื” ืฉืœ ืฉื™ืจื•ืชื™ื (ืขื•ืฉื” ืžืฉื™ื›ื”). ื‘ืฉืœ ื›ืš, ืคืจื•ืžืชืื•ืก ืœื ื™ื›ื•ืœ ืœื”ื™ืกืชื ืขื ืฉื•ื ืชื•ืจื™ื ืื• ืžืฉื”ื• ื›ื–ื”, ืžื” ืฉืื•ืžืจ ืฉื”ื ื™ื˜ื•ืจ ืœืขื•ืœื ืœื ื™ื”ืคื•ืš ืœืฆื•ื•ืืจ ื‘ืงื‘ื•ืง ืฉืœ ื”ืžืขืจื›ืช. ื”ืคืจื•ื™ืงื˜ ืžืขื ื™ื™ืŸ ื’ื ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ื‘ื™ืกื•ื“ื• ืื™ื ื• ืžืฆื™ืข ืงื ื” ืžื™ื“ื” ืื•ืคืงื™ ืื• ื–ืžื™ื ื•ืช ื’ื‘ื•ื”ื”.

ืœืคื ื™ ืงืฆืช ื™ื•ืชืจ ืžืฉื ื”, ืฆื•ื•ืช Gitlab ื”ื’ื™ืข ืœืžืกืงื ื” ืฉืžื“ื“ื™ื ืื™ื ื ื ื•ื—ื™ื ื‘ืžื™ื•ื—ื“ ืœืœื ืœื•ื—ื•ืช ืžื—ื•ื•ื ื™ื. ืื– ื”ื ืฉื™ืœื‘ื• ืืช Grafana ืขื ืœื•ื—ื•ืช ืžื—ื•ื•ื ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช ื›ื“ื™ ืœืขื–ื•ืจ ืœืžืฉืชืžืฉื™ื ืฉืœื”ื ืœื“ืžื™ื™ืŸ ื ืชื•ื ื™ื ืžื‘ืœื™ ืœื”ืชืงื™ืŸ ืืช Grafana ื‘ืื•ืคืŸ ื™ื“ื ื™.

ืžืื– ื’ืจืกื” 12.0, Gitlab ืฉื™ืœื‘ื” ืืช Grafana, ื”ืžื•ื’ื“ืจืช ืขื SSO ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ื• ื–ืžื™ืŸ ื‘ื›ืชื•ื‘ืช ื”ืืชืจ ื”ื–ื•.

ื™ืฉื ื ืฉื ื™ ื—ืœืงื™ื ืฉื•ื ื™ื ืฉืœ ื”ืื™ื ื˜ื’ืจืฆื™ื” ืฉืœ Gitlab ืขื Prometheus:

  • ื ื™ื˜ื•ืจ GitLab (ืื•ืžื ื™ื‘ื•ืก)
  • ื ื™ื˜ื•ืจ ื™ื™ืฉื•ืžื™ GitLab ื‘ื•ื“ื“ื™ื ื‘ืืฉื›ื•ืœ Kubernetes

ืื™ืš ืœื”ืฉืชืžืฉ ื‘ื–ื”

"ืื•ืžื ื™ื‘ื•ืก" ื”ื•ื ืžื” ืฉ-GitLab ืžื›ื ื” ืืช ื—ื‘ื™ืœืช ื”ื”ืชืงื ื” ื”ืขื™ืงืจื™ืช ืฉืœื”.

ืื ื—ื ื• ืžืขื“ื›ื ื™ื ืืช ื”ืฉื•ืง: ืกืคืจ ืœื ื• ืื™ืš ื˜ื•ื‘ ื™ื•ืชืจ?

ื›ื™ืฆื“ ืœื”ื’ื“ื™ืจ ืืช Grafana

ื”ืชื—ื‘ืจื•ืช ื•ื”ืกื™ืกืžื” ืฉืœ Grafana ืžื•ืฉื‘ืชื•ืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ (ืจืง ื›ื ื™ืกื” SSO ืžื•ืชืจืช), ืืš ืื ื™ืฉ ืฆื•ืจืš ืœื”ื™ื›ื ืก ืœื—ืฉื‘ื•ืŸ ืขื ื–ื›ื•ื™ื•ืช ืžื ื”ืœ ืื• ืœื”ื™ื•ืช ืžืกื•ื’ืœ ืœื”ื™ื›ื ืก ืขื ืฉื ืžืฉืชืžืฉ ื•ืกื™ืกืžื”, ืขืœื™ืš ืœื”ืคืขื™ืœ ื–ืืช ื‘ืชืฆื•ืจืช Gitlab ืงื•ื‘ืฅ /etc/gitlab/gitlab .rb ืขืœ ื™ื“ื™ ืขืจื™ื›ืช ื”ืฉื•ืจื” ื”ืžืชืื™ืžื”:

grafana['disable_login_form'] = false

ื•ื”ื’ื“ืจ ืžื—ื“ืฉ ืืช Gitlab ื›ื“ื™ ืœื”ื—ื™ืœ ืืช ื”ืฉื™ื ื•ื™ื™ื:

sudo gitlab-ctl reconfigure

ืื ื”ืฉืงืช ืืช Gitlab ื‘ืืžืฆืขื•ืช ืชื‘ื ื™ืช ื”ืžื›ื•ื ื•ืช ื”ื•ื•ื™ืจื˜ื•ืืœื™ื•ืช ืฉืœื ื• ืžื”ืฉื•ืง ืฉืœื ื•, ืขืœื™ืš ืœื”ืงืฆื•ืช ืืช ื›ืชื•ื‘ืช ื”ืืชืจ ืฉืœืš ืœืฉืจืช ืขืœ ื™ื“ื™ ืฉื™ื ื•ื™ ื”ืฉื•ืจื” ื”ืžืชืื™ืžื” ื‘-/etc/gitlab/gitlab.rb:

external_url = 'http://gitlab.mydomain.ru'

ื‘ืฆืข ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ืžื—ื“ืฉ:

sudo gitlab-ctl reconfigure

ื•ืฉื ื” ืืช URI ื”ื”ืคื ื™ื” ืžื—ื“ืฉ ืขื‘ื•ืจ Grafana ื‘ื”ืชืื ื‘

ืื–ื•ืจ ื ื™ื”ื•ืœ > ืืคืœื™ืงืฆื™ื•ืช > GitLab Grafana

gitlab.mydomain.ru/-/grafana/login/gitlab

ืื ื—ื ื• ืžืขื“ื›ื ื™ื ืืช ื”ืฉื•ืง: ืกืคืจ ืœื ื• ืื™ืš ื˜ื•ื‘ ื™ื•ืชืจ?

ื‘ืคืขื ื”ืจืืฉื•ื ื” ืฉืืชื” ืžืชื—ื‘ืจ ื‘ืืžืฆืขื•ืช SSO, Gitlab ืชื‘ืงืฉ ืื™ืฉื•ืจ ืœืืฉืจ ืืช ื”ื”ืชื—ื‘ืจื•ืช ืฉืœ Grafana.

ืื ื—ื ื• ืžืขื“ื›ื ื™ื ืืช ื”ืฉื•ืง: ืกืคืจ ืœื ื• ืื™ืš ื˜ื•ื‘ ื™ื•ืชืจ?

ืžื“ื“ื™ื

ื‘ื’ืจืคืื ื”, ืœื•ื—ื•ืช ืžื—ื•ื•ื ื™ื ืžื•ื›ื ื™ื ืฉืœ ื”ืฉื™ืจื•ืชื™ื ื”ืขื™ืงืจื™ื™ื ืžื•ื’ื“ืจื™ื ื•ื–ืžื™ื ื™ื ื‘ืงื˜ื’ื•ืจื™ื™ืช Gitlab Omnibus.

ืื ื—ื ื• ืžืขื“ื›ื ื™ื ืืช ื”ืฉื•ืง: ืกืคืจ ืœื ื• ืื™ืš ื˜ื•ื‘ ื™ื•ืชืจ?
ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื

ืื ื—ื ื• ืžืขื“ื›ื ื™ื ืืช ื”ืฉื•ืง: ืกืคืจ ืœื ื• ืื™ืš ื˜ื•ื‘ ื™ื•ืชืจ?
ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืฉืœ ืžื“ื“ื™ ืคืœื˜ืคื•ืจืžืช ืฉื™ืจื•ืช

  • ืกืงื™ืจื” ื›ืœืœื™ืช - ืœื•ื— ืžื—ื•ื•ื ื™ื ืกืงื™ืจื” ื”ืžืฆื™ื’ ืืช ืžืฆื‘ ื”ืฉื™ืจื•ืชื™ื, ื”ืชื•ืจื™ื ื•ืฉื™ืžื•ืฉ ื‘ืžืฉืื‘ื™ ื”ืฉืจืช
  • Gitaly - ื ื™ื˜ื•ืจ ืฉื™ืจื•ืช ื”ืžืกืคืง ื’ื™ืฉืช RPC ืœืžืื’ืจื™ Gitlab
  • NGINX VTS - ืกื˜ื˜ื™ืกื˜ื™ืงื” ืขืœ ืชืขื‘ื•ืจืช ืฉื™ืจื•ืช ื•ืงื•ื“ื™ HTTP ืœื›ืœ ื‘ืงืฉื”
  • PostgreSQL - ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ืขืœ ื–ืžื™ื ื•ืช ื•ืขื•ืžืก ืขืœ ืžืกื“ ื”ื ืชื•ื ื™ื ืฉืœ PostgreSQL
  • Praefect - ื ื™ื˜ื•ืจ ืขื•ืžืกื™ ืื—ืกื•ืŸ ืขื ื–ืžื™ื ื•ืช ื’ื‘ื•ื”ื” Praefect
  • ืืคืœื™ืงืฆื™ื™ืช Rails - ืœื•ื— ืžื—ื•ื•ื ื™ื ืกืงื™ืจื” ืขื‘ื•ืจ ื™ื™ืฉื•ืžื™ Rails
  • Redis - ื ื™ื˜ื•ืจ ื”ืขื•ืžืก ืขืœ ืฉื™ืจื•ืช Redis
  • ืจื™ืฉื•ื - ื ื™ื˜ื•ืจ ืจื™ืฉื•ื ืชืžื•ื ื•ืช
  • ืžื“ื“ื™ ืคืœื˜ืคื•ืจืžืช ืฉื™ืจื•ืช - ืžื“ื“ื™ ืฉื™ืจื•ืช ื”ืžืฆื™ื’ื™ื ืืช ื ื™ืฆื•ืœ ื”ืžืฉืื‘ื™ื ืขืœ ื™ื“ื™ Gitlab, ื–ืžื™ื ื•ืช ื”ืฉื™ืจื•ืช, ืžืกืคืจ ื‘ืงืฉื•ืช RPC ื•ืžืกืคืจ ืฉื’ื™ืื•ืช.

ื”ืื™ื ื˜ื’ืจืฆื™ื” ื”ื™ื ื“ื™ ืžืงื™ืคื” ื•ืœืžืฉืชืžืฉื™ Gitlab ื™ืฉ ืืช ื”ื™ื›ื•ืœืช ืœื ืชื— ืžื“ื“ื™ Gitlab ื—ื–ื•ืชื™ื™ื ื™ืฉื™ืจื•ืช ืžื”ืงื•ืคืกื”.

ื‘-Gitlab ืฆื•ื•ืช ื ืคืจื“ ืื—ืจืื™ ืœืชื—ื–ื•ืงื” ื•ืขื“ื›ื•ืŸ ืฉืœ ืœื•ื—ื•ืช ืžื—ื•ื•ื ื™ื, ื•ืœื“ื‘ืจื™ ื‘ืŸ ืงื•ืฆ'ื™, ืžื”ื ื“ืก SRE ื‘-Gitlab, ื”ื’ื“ืจื•ืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื•ื”ื“ืฉื‘ื•ืจื“ื™ื ื”ืžื•ื›ื ื™ื ืžืชืื™ืžื•ืช ืœืจื•ื‘ ื”ืžืฉืชืžืฉื™ื.

ื•ืขื›ืฉื™ื• ื”ืขื™ืงืจ: ื‘ื•ืื• ื ื™ืฆื•ืจ ื™ื—ื“ ืฉื•ืง

ืื ื• ืจื•ืฆื™ื ืœื”ื–ืžื™ืŸ ืืช ื›ืœ ืงื”ื™ืœืช ื”ื‘ืจ ืœื”ืฉืชืชืฃ ื‘ื™ืฆื™ืจืช ื”ืฉื•ืง. ื™ืฉื ืŸ ืฉืœื•ืฉ ืืคืฉืจื•ื™ื•ืช ื›ื™ืฆื“ ืชื•ื›ืœ ืœื”ืฆื˜ืจืฃ:

ื”ื›ืŸ ืืช ื”ืชืžื•ื ื” ื‘ืขืฆืžืš ื•ืงื‘ืœ 3000 ืจื•ื‘ืœ ืœืื™ื–ื•ืŸ ืฉืœืš

ืื ืืชื” ืžื•ื›ืŸ ืœืžื”ืจ ืžื™ื“ ืœืงืจื‘ ื•ืœื™ืฆื•ืจ ืืช ื”ืชืžื•ื ื” ืฉื—ืกืจื” ืœืš ื‘ืขืฆืžืš, ืื ื• ื ื–ื›ื” ืื•ืชืš ื‘-3000 ืจื•ื‘ืœ ืœื™ืชืจื” ื”ืคื ื™ืžื™ืช ืฉืœืš - ืืชื” ื™ื›ื•ืœ ืœื”ื•ืฆื™ื ืื•ืชื• ืขืœ ืฉืจืชื™ื.

ืื™ืš ืœื™ืฆื•ืจ ืืช ื”ืชืžื•ื ื” ืฉืœืš:

  1. ืฆื•ืจ ืื™ืชื ื• ื—ืฉื‘ื•ืŸ ืžืงื•ื•ืŸ
  2. ืกืคืจ ืœืชืžื™ื›ื” ืฉืืชื” ื”ื•ืœืš ืœื™ืฆื•ืจ ื•ืœื‘ื“ื•ืง ืชืžื•ื ื•ืช
  3. ืื ื• ื ื–ื›ื” ืื•ืชืš ื‘-3000 ืจื•ื‘ืœ ื•ื ืืคืฉืจ ืืช ื”ื™ื›ื•ืœืช ืœื™ืฆื•ืจ ืชืžื•ื ื•ืช ืžืฆื‘
  4. ื”ื–ืžื™ื ื• ืฉืจืช ื•ื™ืจื˜ื•ืืœื™ ืขื ืžืขืจื›ืช ื”ืคืขืœื” ื ืงื™ื™ื”
  5. ื”ืชืงืŸ ืืช ื”ืชื•ื›ื ื” ื‘-VPS ื”ื–ื” ื•ื”ื’ื“ืจ ืื•ืชื•
  6. ื›ืชื•ื‘ ื”ื•ืจืื•ืช ืื• ืกืงืจื™ืคื˜ ืœืคืจื™ืกืช ืชื•ื›ื ื”
  7. ืฆื•ืจ ืชืžื•ื ืช ืžืฆื‘ ืขื‘ื•ืจ ื”ืฉืจืช ื”ืžื•ื’ื“ืจ
  8. ื”ื–ืžื™ื ื• ืฉืจืช ื•ื™ืจื˜ื•ืืœื™ ื—ื“ืฉ ืขืœ ื™ื“ื™ ื‘ื—ื™ืจืช ืชืžื•ื ืช ื”ืžืฆื‘ ืฉื ื•ืฆืจื” ื‘ืขื‘ืจ ื‘ืจืฉื™ืžื” ื”ื ืคืชื—ืช "ืชื‘ื ื™ืช ืฉืจืช".
  9. ื‘ืžืงืจื” ืฉืœ ื™ืฆื™ืจื” ืžื•ืฆืœื—ืช ืฉืœ ื”ืฉืจืช, ื”ืขื‘ืจ ืืช ื”ื—ื•ืžืจื™ื ืฉื”ืชืงื‘ืœื• ื‘ืฉืœื‘ 6 ืœืชืžื™ื›ื” ื”ื˜ื›ื ื™ืช
  10. ื‘ืžืงืจื” ืฉืœ ืฉื’ื™ืื”, ืืชื” ื™ื›ื•ืœ ืœื‘ื“ื•ืง ืขื ื”ืชืžื™ื›ื” ืืช ื”ืกื™ื‘ื” ื•ืœื—ื–ื•ืจ ืขืœ ื”ื”ื’ื“ืจื”

ืœื‘ืขืœื™ ืขืกืงื™ื: ื”ืฆื™ืขื• ืืช ื”ืชื•ื›ื ื” ืฉืœื›ื

ืื ืืชื” ืžืคืชื— ืชื•ื›ื ื” ืฉื ืคืจืก ื•ืžืฉืžืฉ ื‘-VPS, ื ื•ื›ืœ ืœื›ืœื•ืœ ืื•ืชืš ื‘ืฉื•ืง. ื›ืš ื ื•ื›ืœ ืœืขื–ื•ืจ ืœื›ื ืœื”ื‘ื™ื ืœืงื•ื—ื•ืช ื—ื“ืฉื™ื, ืชื ื•ืขื” ื•ื ืจืื•ืช. ื›ืชื•ื‘ ืœื ื•

ืคืฉื•ื˜ ื”ืฆื™ืขื• ืœื ื• ืชืžื•ื ื” ื‘ืชื’ื•ื‘ื•ืช

ื›ืชื•ื‘ ืขื ืื™ื–ื• ืชื•ื›ื ื” ืชืจืฆื” ืœื”ื™ื•ืช ืžืกื•ื’ืœ ืœืคืจื•ืก ืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช ื‘ืงืœื™ืง ืื—ื“?

ืœืžื” ืืชื” ืžืชื’ืขื’ืข ื‘ืฉื•ืง RUVDS?

ืžื” ืฆืจื™ื›ื” ื›ืœ ื—ื‘ืจืช ืื—ืกื•ืŸ ืฉืžื›ื‘ื“ืช ืืช ืขืฆืžื” ืœื›ืœื•ืœ ื‘ืฉื•ืง ืฉืœื”?

ืื ื—ื ื• ืžืขื“ื›ื ื™ื ืืช ื”ืฉื•ืง: ืกืคืจ ืœื ื• ืื™ืš ื˜ื•ื‘ ื™ื•ืชืจ?

ืื ื—ื ื• ืžืขื“ื›ื ื™ื ืืช ื”ืฉื•ืง: ืกืคืจ ืœื ื• ืื™ืš ื˜ื•ื‘ ื™ื•ืชืจ?

ืจืง ืžืฉืชืžืฉื™ื ืจืฉื•ืžื™ื ื™ื›ื•ืœื™ื ืœื”ืฉืชืชืฃ ื‘ืกืงืจ. ืœื”ืชื—ื‘ืจื‘ื‘ืงืฉื”.

ืื™ืœื• ืชืžื•ื ื•ืช ืขืœื™ื ื• ืœื›ืœื•ืœ ืชื—ื™ืœื” ื‘ืฉื•ืง?

  • 50,0%LEMP10

  • 15,0%ื“ืจื•ืคืœ 3

  • 10,0%ื’'ื•ืžืœื” 2

  • 5,0%ื“ื•ืงื•1

  • 0,0%PacVim0

  • 0,0%Runcloud0

  • 5,0%ืฉืจืช ืงื•ื“1

  • 15,0%Ghost3

  • 5,0%WikiJs1

  • 0,0%ืฉื™ื—0

  • 0,0%Rstudio0

  • 5,0%OpenCart1

  • 35,0%Django7

  • 40,0%Laravel8

  • 20,0%Ruby on Rails4

  • 55,0%NodeJs11

20 ืžืฉืชืžืฉื™ื ื”ืฆื‘ื™ืขื•. 12 ืžืฉืชืžืฉื™ื ื ืžื ืขื•.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”