Встановіть Plesk на CentOS 7
Використання іншої системи? Plesk — це власна панель керування веб-хостом, яка дозволяє користувачам адмініструвати свої персональні та/або клієнтські веб-сайти, бази даних
Kubernetes — це платформа з відкритим кодом, розроблена Google для керування контейнерними додатками на кластері серверів. Він спирається на півтора десятиліття досвіду Google із запуском кластерів контейнерів у масштабі та надає розробникам інфраструктуру в стилі Google, використовуючи найкращі проекти з відкритим кодом, такі як:
Kubernetes дозволяє розробникам декларативно визначати свою інфраструктуру додатків за допомогою файлів YAML і абстракцій, таких як модулі, RC і служби (докладніше про це пізніше), і гарантує, що базовий кластер завжди відповідає визначеному користувачем стану.
Деякі з його особливостей включають:
Перейдіть до інсталяції, якщо ви вже знайомі з Kubernetes.
Kubernetes пропонує розробникам такі абстракції (логічні одиниці):
Це основна одиниця робочих навантажень Kubernetes. Pod моделює специфічний для програми «логічний хост» у контейнерному середовищі. Говорячи неспеціалістами, він моделює групу додатків або служб, які раніше працювали на одному сервері в світі попереднього контейнера. Контейнери всередині модуля використовують той самий простір імен мережі, а також можуть ділитися обсягами даних.
Поди чудово підходять для групування кількох контейнерів у логічні блоки програми, але вони не пропонують реплікацію чи перепланування у разі збою сервера.
Тут стане в нагоді контролер реплікації або RC. RC гарантує, що кількість модулів даної служби завжди працює в кластері.
Це метадані ключ-значення, які можна приєднати до будь-якого ресурсу Kubernetes (под, RC, служби, вузли, ...).
Модули та контролери реплікації чудово підходять для розгортання та розподілу програм у кластері, але у модулів є ефемерні IP-адреси, які змінюються при переплануванні або перезапуску контейнера.
Служба Kubernetes забезпечує стабільну кінцеву точку (фіксована віртуальна IP-адреса + прив’язка порту до хост-серверів) для групи модулів, якими керує контролер реплікації.
У найпростішій формі кластер Kubernetes складається з двох типів вузлів:
Майстер Kubernetes — це блок керування всім кластером.
Основними складовими майстра є:
Вузол Kubernetes — це робочі сервери, які відповідають за запуск модулів.
Основними компонентами вузла є:
У цьому посібнику ми створимо кластер з 3 вузлами за допомогою серверів CentOS 7:
Ви можете додати скільки завгодно додаткових вузлів пізніше, дотримуючись тієї ж процедури встановлення для вузлів Kubernetes.
Налаштуйте імена хостів та /etc/hosts
:
# /etc/hostname
kube-master
# or kube-node1, kube-node2
# append to /etc/hosts
replace-with-master-server-ip kube-master
replace-with-node1-ip kube-node1
replace-with-node2-ip kube-node2
Вимкнути брандмауер:
systemctl disable firewalld
systemctl stop firewalld
Встановіть майстер-пакети Kubernetes:
yum install etcd kubernetes-master
Конфігурація:
# /etc/etcd/etcd.conf
# leave rest of the lines unchanged
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_LISTEN_PEER_URLS="http://localhost:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
# /etc/kubernetes/config
# leave rest of the lines unchanged
KUBE_MASTER="--master=http://kube-master:8080"
# /etc/kubernetes/apiserver
# leave rest of the lines unchanged
KUBE_API_ADDRESS="--address=0.0.0.0"
KUBE_ETCD_SERVERS="--etcd_servers=http://kube-master:2379"
Почати Etcd:
systemctl start etcd
Встановіть та налаштуйте мережеву мережу Flannel overlay (це потрібно для того, щоб контейнери, що працюють на різних серверах, бачили один одного):
yum install flannel
Створіть файл конфігурації Flannel ( flannel-config.json
):
{
"Network": "10.20.0.0/16",
"SubnetLen": 24,
"Backend": {
"Type": "vxlan",
"VNI": 1
}
}
Встановіть конфігурацію Flannel на сервері Etcd:
etcdctl set coreos.com/network/config < flannel-config.json
Наведіть Flannel на сервер Etcd:
# /etc/sysconfig/flanneld
FLANNEL_ETCD="http://kube-master:2379"
Увімкніть служби, щоб вони запускалися під час завантаження:
systemctl enable etcd
systemctl enable kube-apiserver
systemctl enable kube-controller-manager
systemctl enable kube-scheduler
systemctl enable flanneld
Перезавантажте сервер.
Встановіть пакети вузлів Kubernetes:
yum install docker kubernetes-node
Наступні два кроки налаштують Docker на використання overlayfs для кращої продуктивності. Для отримання додаткової інформації відвідайте цю публікацію в блозі :
Видаліть поточний каталог зберігання Docker:
systemctl stop docker
rm -rf /var/lib/docker
Змінити конфігураційні файли:
# /etc/sysconfig/docker
# leave rest of lines unchanged
OPTIONS='--selinux-enabled=false'
# /etc/sysconfig/docker
# leave rest of lines unchanged
DOCKER_STORAGE_OPTIONS=-s overlay
Налаштуйте kube-node1 для використання нашого попередньо налаштованого головного:
# /etc/kubernetes/config
# leave rest of lines unchanged
KUBE_MASTER="--master=http://kube-master:8080"
# /etc/kubernetes/kubelet
# leave rest of the lines unchanged
KUBELET_ADDRESS="--address=0.0.0.0"
# comment this line, so that the actual hostname is used to register the node
# KUBELET_HOSTNAME="--hostname_override=127.0.0.1"
KUBELET_API_SERVER="--api_servers=http://kube-master:8080"
Встановіть і налаштуйте мережеву тканину Flannel overlay (знову ж таки - це потрібно для того, щоб контейнери, що працюють на різних серверах, бачили один одного):
yum install flannel
Наведіть Flannel на сервер Etcd:
# /etc/sysconfig/flanneld
FLANNEL_ETCD="http://kube-master:2379"
Увімкнути послуги:
systemctl enable docker
systemctl enable flanneld
systemctl enable kubelet
systemctl enable kube-proxy
Перезавантажте сервер.
Після перезавантаження всіх серверів перевірте, чи працює ваш кластер Kubernetes:
[root@kube-master ~]# kubectl get nodes
NAME LABELS STATUS
kube-node1 kubernetes.io/hostname=kube-node1 Ready
kube-node2 kubernetes.io/hostname=kube-node2 Ready
Selenium — це фреймворк для автоматизації браузерів з метою тестування. Це потужний інструмент в арсеналі будь-якого веб-розробника.
Сітка Selenium дозволяє масштабоване та паралельне дистанційне виконання тестів у кластері вузлів Selenium, підключених до центрального концентратора Selenium.
Since Selenium nodes are stateless themselves and the amount of nodes we run is flexible, depending on our testing workloads, this is a perfect candidate application to be deployed on a Kubernetes cluster.
In the next section, we'll deploy a grid consisting of 5 application containers:
To automatically manage replication and self-healing, we'll create a Kubernetes replication controller for each type of application container we listed above.
To provide developers who are running tests with a stable Selenium hub endpoint, we'll create a Kubernetes service connected to the hub replication controller.
# selenium-hub-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: selenium-hub
spec:
replicas: 1
selector:
name: selenium-hub
template:
metadata:
labels:
name: selenium-hub
spec:
containers:
- name: selenium-hub
image: selenium/hub
ports:
- containerPort: 4444
Deployment:
[root@kube-master ~]# kubectl create -f selenium-hub-rc.yaml
replicationcontrollers/selenium-hub
[root@kube-master ~]# kubectl get rc
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS
selenium-hub selenium-hub selenium/hub name=selenium-hub 1
[root@kube-master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
selenium-hub-pilc8 1/1 Running 0 50s
[root@kube-master ~]# kubectl describe pod selenium-hub-pilc8
Name: selenium-hub-pilc8
Namespace: default
Image(s): selenium/hub
Node: kube-node2/45.63.16.92
Labels: name=selenium-hub
Status: Running
Reason:
Message:
IP: 10.20.101.2
Replication Controllers: selenium-hub (1/1 replicas created)
Containers:
selenium-hub:
Image: selenium/hub
State: Running
Started: Sat, 24 Oct 2015 16:01:39 +0000
Ready: True
Restart Count: 0
Conditions:
Type Status
Ready True
Events:
FirstSeen LastSeen Count From SubobjectPath Reason Message
Sat, 24 Oct 2015 16:01:02 +0000 Sat, 24 Oct 2015 16:01:02 +0000 1 {scheduler } scheduled Successfully assigned selenium-hub-pilc8 to kube-node2
Sat, 24 Oct 2015 16:01:05 +0000 Sat, 24 Oct 2015 16:01:05 +0000 1 {kubelet kube-node2} implicitly required container POD pulled Successfully pulled Pod container image "gcr.io/google_containers/pause:0.8.0"
Sat, 24 Oct 2015 16:01:05 +0000 Sat, 24 Oct 2015 16:01:05 +0000 1 {kubelet kube-node2} implicitly required container POD created Created with docker id 6de00106b19c
Sat, 24 Oct 2015 16:01:05 +0000 Sat, 24 Oct 2015 16:01:05 +0000 1 {kubelet kube-node2} implicitly required container POD started Started with docker id 6de00106b19c
Sat, 24 Oct 2015 16:01:39 +0000 Sat, 24 Oct 2015 16:01:39 +0000 1 {kubelet kube-node2} spec.containers pulled Successfully pulled image "selenium/hub"
Sat, 24 Oct 2015 16:01:39 +0000 Sat, 24 Oct 2015 16:01:39 +0000 1 {kubelet kube-node2} spec.containers created Created with docker id 7583cc09268c
Sat, 24 Oct 2015 16:01:39 +0000 Sat, 24 Oct 2015 16:01:39 +0000 1 {kubelet kube-node2} spec.containers started Started with docker id 7583cc09268c
Тут ми бачимо, що Kubernetes розмістив мій контейнер selenium-hub на kube-node2.
# selenium-hub-service.yaml
apiVersion: v1
kind: Service
metadata:
name: selenium-hub
spec:
type: NodePort
ports:
- port: 4444
protocol: TCP
nodePort: 30000
selector:
name: selenium-hub
Розгортання:
[root@kube-master ~]# kubectl create -f selenium-hub-service.yaml
You have exposed your service on an external port on all nodes in your
cluster. If you want to expose this service to the external internet, you may
need to set up firewall rules for the service port(s) (tcp:30000) to serve traffic.
See http://releases.k8s.io/HEAD/docs/user-guide/services-firewalls.md for more details.
services/selenium-hub
[root@kube-master ~]# kubectl get services
NAME LABELS SELECTOR IP(S) PORT(S)
kubernetes component=apiserver,provider=kubernetes <none> 10.254.0.1 443/TCP
selenium-hub <none> name=selenium-hub 10.254.124.73 4444/TCP
Після розгортання служби до нього можна буде отримати доступ із:
(з використанням загальнодоступної IP-адреси іншого вузла Kubernetes)
Контролер реплікації вузла Firefox:
# selenium-node-firefox-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: selenium-node-firefox
spec:
replicas: 2
selector:
name: selenium-node-firefox
template:
metadata:
labels:
name: selenium-node-firefox
spec:
containers:
- name: selenium-node-firefox
image: selenium/node-firefox
ports:
- containerPort: 5900
env:
- name: HUB_PORT_4444_TCP_ADDR
value: "replace_with_service_ip"
- name: HUB_PORT_4444_TCP_PORT
value: "4444"
Розгортання:
Замінити replace_with_service_ip
в selenium-node-firefox-rc.yaml
з реальними IP - послугами Селена хаба, в цьому випадку 10.254.124.73.
[root@kube-master ~]# kubectl create -f selenium-node-firefox-rc.yaml
replicationcontrollers/selenium-node-firefox
[root@kube-master ~]# kubectl get rc
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS
selenium-hub selenium-hub selenium/hub name=selenium-hub 1
selenium-node-firefox selenium-node-firefox selenium/node-firefox name=selenium-node-firefox 2
[root@kube-master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
selenium-hub-pilc8 1/1 Running 1 1h
selenium-node-firefox-lc6qt 1/1 Running 0 2m
selenium-node-firefox-y9qjp 1/1 Running 0 2m
[root@kube-master ~]# kubectl describe pod selenium-node-firefox-lc6qt
Name: selenium-node-firefox-lc6qt
Namespace: default
Image(s): selenium/node-firefox
Node: kube-node2/45.63.16.92
Labels: name=selenium-node-firefox
Status: Running
Reason:
Message:
IP: 10.20.101.3
Replication Controllers: selenium-node-firefox (2/2 replicas created)
Containers:
selenium-node-firefox:
Image: selenium/node-firefox
State: Running
Started: Sat, 24 Oct 2015 17:08:37 +0000
Ready: True
Restart Count: 0
Conditions:
Type Status
Ready True
Events:
FirstSeen LastSeen Count From SubobjectPath Reason Message
Sat, 24 Oct 2015 17:08:13 +0000 Sat, 24 Oct 2015 17:08:13 +0000 1 {scheduler } scheduled Successfully assigned selenium-node-firefox-lc6qt to kube-node2
Sat, 24 Oct 2015 17:08:13 +0000 Sat, 24 Oct 2015 17:08:13 +0000 1 {kubelet kube-node2} implicitly required container POD pulled Pod container image "gcr.io/google_containers/pause:0.8.0" already present on machine
Sat, 24 Oct 2015 17:08:13 +0000 Sat, 24 Oct 2015 17:08:13 +0000 1 {kubelet kube-node2} implicitly required container POD created Created with docker id cdcb027c6548
Sat, 24 Oct 2015 17:08:13 +0000 Sat, 24 Oct 2015 17:08:13 +0000 1 {kubelet kube-node2} implicitly required container POD started Started with docker id cdcb027c6548
Sat, 24 Oct 2015 17:08:36 +0000 Sat, 24 Oct 2015 17:08:36 +0000 1 {kubelet kube-node2} spec.containers pulled Successfully pulled image "selenium/node-firefox"
Sat, 24 Oct 2015 17:08:36 +0000 Sat, 24 Oct 2015 17:08:36 +0000 1 {kubelet kube-node2} spec.containers created Created with docker id 8931b7f7a818
Sat, 24 Oct 2015 17:08:37 +0000 Sat, 24 Oct 2015 17:08:37 +0000 1 {kubelet kube-node2} spec.containers started Started with docker id 8931b7f7a818
[root@kube-master ~]# kubectl describe pod selenium-node-firefox-y9qjp
Name: selenium-node-firefox-y9qjp
Namespace: default
Image(s): selenium/node-firefox
Node: kube-node1/185.92.221.67
Labels: name=selenium-node-firefox
Status: Running
Reason:
Message:
IP: 10.20.92.3
Replication Controllers: selenium-node-firefox (2/2 replicas created)
Containers:
selenium-node-firefox:
Image: selenium/node-firefox
State: Running
Started: Sat, 24 Oct 2015 17:08:13 +0000
Ready: True
Restart Count: 0
Conditions:
Type Status
Ready True
Events:
FirstSeen LastSeen Count From SubobjectPath Reason Message
Sat, 24 Oct 2015 17:08:13 +0000 Sat, 24 Oct 2015 17:08:13 +0000 1 {scheduler } scheduled Successfully assigned selenium-node-firefox-y9qjp to kube-node1
Sat, 24 Oct 2015 17:08:13 +0000 Sat, 24 Oct 2015 17:08:13 +0000 1 {kubelet kube-node1} implicitly required container POD pulled Pod container image "gcr.io/google_containers/pause:0.8.0" already present on machine
Sat, 24 Oct 2015 17:08:13 +0000 Sat, 24 Oct 2015 17:08:13 +0000 1 {kubelet kube-node1} implicitly required container POD created Created with docker id ea272dd36bd5
Sat, 24 Oct 2015 17:08:13 +0000 Sat, 24 Oct 2015 17:08:13 +0000 1 {kubelet kube-node1} implicitly required container POD started Started with docker id ea272dd36bd5
Sat, 24 Oct 2015 17:08:13 +0000 Sat, 24 Oct 2015 17:08:13 +0000 1 {kubelet kube-node1} spec.containers created Created with docker id 6edbd6b9861d
Sat, 24 Oct 2015 17:08:13 +0000 Sat, 24 Oct 2015 17:08:13 +0000 1 {kubelet kube-node1} spec.containers started Started with docker id 6edbd6b9861d
Як бачимо, Kubernetes створив 2 репліки selenium-firefox-node
і розподілив їх по кластеру. Pod selenium-node-firefox-lc6qt
знаходиться на kube-node2, а pod selenium-node-firefox-y9qjp
знаходиться на kube-node1.
Ми повторюємо той самий процес для наших вузлів Selenium Chrome.
Контролер реплікації вузла Chrome:
# selenium-node-chrome-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: selenium-node-chrome
labels:
app: selenium-node-chrome
spec:
replicas: 2
selector:
app: selenium-node-chrome
template:
metadata:
labels:
app: selenium-node-chrome
spec:
containers:
- name: selenium-node-chrome
image: selenium/node-chrome
ports:
- containerPort: 5900
env:
- name: HUB_PORT_4444_TCP_ADDR
value: "replace_with_service_ip"
- name: HUB_PORT_4444_TCP_PORT
value: "4444"
Розгортання:
[root@kube-master ~]# kubectl create -f selenium-node-chrome-rc.yaml
replicationcontrollers/selenium-node-chrome
[root@kube-master ~]# kubectl get rc
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS
selenium-hub selenium-hub selenium/hub name=selenium-hub 1
selenium-node-chrome selenium-node-chrome selenium/node-chrome app=selenium-node-chrome 2
selenium-node-firefox selenium-node-firefox selenium/node-firefox name=selenium-node-firefox 2
[root@kube-master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
selenium-hub-pilc8 1/1 Running 1 1h
selenium-node-chrome-9u1ld 1/1 Running 0 1m
selenium-node-chrome-mgi52 1/1 Running 0 1m
selenium-node-firefox-lc6qt 1/1 Running 0 11m
selenium-node-firefox-y9qjp 1/1 Running 0 11m
У цьому посібнику ми створили невеликий кластер Kubernetes з 3 серверів (1 головний контролер + 2 працівника).
Використовуючи модулі, RC і сервіс, ми успішно розгорнули Selenium Grid, що складається з центрального концентратора і 4 вузлів, що дозволило розробникам одночасно виконувати 4 тести Selenium на кластері.
Kubernetes автоматично планував контейнери по всьому кластеру.
Kubernetes автоматично переносить модулі модулів на здорові сервери, якщо один або кілька наших серверів виходять з ладу. У моєму прикладі kube-node2 наразі працює з концентратором Selenium і 1 вузлом Selenium Firefox.
[root@kube-node2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5617399f146c selenium/node-firefox "/opt/bin/entry_poin 5 minutes ago Up 5 minutes k8s_selenium-node-firefox.46e635d8_selenium-node-firefox-zmj1r_default_31c89517-7a75-11e5-8648-5600001611e0_baae8e00
185230a3b431 gcr.io/google_containers/pause:0.8.0 "/pause" 5 minutes ago Up 5 minutes k8s_POD.3805e8b7_selenium-node-firefox-zmj1r_default_31c89517-7a75-11e5-8648-5600001611e0_40f809df
fdd5834c249d selenium/hub "/opt/bin/entry_poin About an hour ago Up About an hour k8s_selenium-hub.cb8bf0ed_selenium-hub-pilc8_default_6c98c1ff-7a68-11e5-8648-5600001611e0_5765e2c9
00e4ccb0bda8 gcr.io/google_containers/pause:0.8.0 "/pause" About an hour ago Up About an hour k8s_POD.3b3ee8b9_selenium-hub-pilc8_default_6c98c1ff-7a68-11e5-8648-5600001611e0_8398ac33
Ми будемо моделювати збій сервера, вимкнувши kube-node2. Через пару хвилин ви побачите, що контейнери, які працювали на kube-node2, були перенесені на kube-node1, забезпечуючи мінімальне порушення роботи служби.
[root@kube-node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5bad5f582698 selenium/hub "/opt/bin/entry_poin 19 minutes ago Up 19 minutes k8s_selenium-hub.cb8bf0ed_selenium-hub-hycf2_default_fe9057cf-7a76-11e5-8648-5600001611e0_ccaad50a
dd1565a94919 selenium/node-firefox "/opt/bin/entry_poin 20 minutes ago Up 20 minutes k8s_selenium-node-firefox.46e635d8_selenium-node-firefox-g28z5_default_fe932673-7a76-11e5-8648-5600001611e0_fc79f977
2be1a316aa47 gcr.io/google_containers/pause:0.8.0 "/pause" 20 minutes ago Up 20 minutes k8s_POD.3805e8b7_selenium-node-firefox-g28z5_default_fe932673-7a76-11e5-8648-5600001611e0_dc204ad2
da75a0242a9e gcr.io/google_containers/pause:0.8.0 "/pause" 20 minutes ago Up 20 minutes k8s_POD.3b3ee8b9_selenium-hub-hycf2_default_fe9057cf-7a76-11e5-8648-5600001611e0_1b10c0e7
c611b68330de selenium/node-firefox "/opt/bin/entry_poin 33 minutes ago Up 33 minutes k8s_selenium-node-firefox.46e635d8_selenium-node-firefox-8ylo2_default_31c8a8f3-7a75-11e5-8648-5600001611e0_922af821
828031da6b3c gcr.io/google_containers/pause:0.8.0 "/pause" 33 minutes ago Up 33 minutes k8s_POD.3805e8b7_selenium-node-firefox-8ylo2_default_31c8a8f3-7a75-11e5-8648-5600001611e0_289cd555
caf4e725512e selenium/node-chrome "/opt/bin/entry_poin 46 minutes ago Up 46 minutes k8s_selenium-node-chrome.362a34ee_selenium-node-chrome-mgi52_default_392a2647-7a73-11e5-8648-5600001611e0_3c6e855a
409a20770787 selenium/node-chrome "/opt/bin/entry_poin 46 minutes ago Up 46 minutes k8s_selenium-node-chrome.362a34ee_selenium-node-chrome-9u1ld_default_392a15a4-7a73-11e5-8648-5600001611e0_ac3f0191
7e2d942422a5 gcr.io/google_containers/pause:0.8.0 "/pause" 47 minutes ago Up 47 minutes k8s_POD.3805e8b7_selenium-node-chrome-9u1ld_default_392a15a4-7a73-11e5-8648-5600001611e0_f5858b73
a3a65ea99a99 gcr.io/google_containers/pause:0.8.0 "/pause" 47 minutes ago Up 47 minutes k8s_POD.3805e8b7_selenium-node-chrome-mgi52_default_392a2647-7a73-11e5-8648-5600001611e0_20a70ab6
З Kubernetes дуже легко масштабувати ваш Selenium Grid. Уявіть собі, що замість 2 вузлів Firefox я хотів би запустити 4. Збільшення масштабу можна виконати за допомогою однієї команди:
[root@kube-master ~]# kubectl scale rc selenium-node-firefox --replicas=4
scaled
[root@kube-master ~]# kubectl get rc
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS
selenium-hub selenium-hub selenium/hub name=selenium-hub 1
selenium-node-chrome selenium-node-chrome selenium/node-chrome app=selenium-node-chrome 2
selenium-node-firefox selenium-node-firefox selenium/node-firefox name=selenium-node-firefox 4
[root@kube-master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
selenium-hub-pilc8 1/1 Running 1 1h
selenium-node-chrome-9u1ld 1/1 Running 0 14m
selenium-node-chrome-mgi52 1/1 Running 0 14m
selenium-node-firefox-8ylo2 1/1 Running 0 40s
selenium-node-firefox-lc6qt 1/1 Running 0 24m
selenium-node-firefox-y9qjp 1/1 Running 0 24m
selenium-node-firefox-zmj1r 1/1 Running 0 40s
Використання іншої системи? Plesk — це власна панель керування веб-хостом, яка дозволяє користувачам адмініструвати свої персональні та/або клієнтські веб-сайти, бази даних
Squid — популярна безкоштовна програма для Linux, яка дозволяє створювати веб-проксі для переадресації. У цьому посібнику ви дізнаєтеся, як встановити Squid на CentOS, щоб перетворити вас
Вступ Lighttpd — це форк Apache, який має набагато меншу ресурсомісткість. Він легкий, звідси його назва, і досить простий у використанні. Встановити
VULTR нещодавно вніс зміни на свою сторону, і тепер усе має працювати нормально з коробки з увімкненим NetworkManager. Якщо ви бажаєте вимкнути
Icinga2 — це потужна система моніторингу, і при використанні в моделі «майстер-клієнт» вона може замінити потребу в перевірках моніторингу на основі NRPE. Майстер-клієнт
Використання іншої системи? Apache Cassandra — це безкоштовна система керування базами даних NoSQL з відкритим вихідним кодом, яка розроблена для забезпечення масштабованості, високої
Використання іншої системи? Microweber — це CMS та інтернет-магазин із відкритим вихідним кодом. Вихідний код Microweber розміщено на GitHub. Цей посібник покаже вам
Використання іншої системи? Vanilla forum — це програма з відкритим вихідним кодом, написана на PHP. Це повністю настроюваний, простий у використанні та підтримує зовнішній вигляд
Використання іншої системи? Mattermost — це автономна альтернатива службі обміну повідомленнями Slack SAAS з відкритим кодом. Іншими словами, з Mattermost ви бл
Панель керування Plesk має дуже гарну інтеграцію для Lets Encrypt. Lets Encrypt є одним із єдиних постачальників SSL, які надають сертифікати повністю
Lets Encrypt — це центр сертифікації, який надає безкоштовні сертифікати SSL. cPanel створив чітку інтеграцію, щоб ви і ваш клієнт
Використання іншої системи? Concrete5 — це CMS з відкритим вихідним кодом, яка пропонує багато відмінних і корисних функцій, які допомагають редакторам легко створювати вміст.
Використання іншої системи? Review Board — це безкоштовний інструмент з відкритим кодом для перегляду вихідного коду, документації, зображень та багато іншого. Це веб-програмне забезпечення
У цьому посібнику ви дізнаєтеся, як налаштувати автентифікацію HTTP для веб-сервера Nginx, що працює на CentOS 7. Вимоги Щоб почати, вам знадобиться
Використання іншої системи? GoAccess — це аналізатор веб-журналів з відкритим вихідним кодом. Ви можете використовувати його для аналізу журналів у режимі реального часу в терміналі або
YOURLS (Your Own URL Shortener) — програма для скорочення URL-адрес і аналізу даних із відкритим вихідним кодом. У цій статті ми розглянемо процес встановлення
Використання іншої системи? Вступ ArangoDB — це відкрита база даних NoSQL з гнучкою моделлю даних для документів, графіків і ключів-значень. це є
Вступ Каталог /etc/ відіграє важливу роль у функціонуванні системи Linux. Причина цього в тому, що майже кожна конфігурація системи
Багато системних адміністраторів керують великою кількістю серверів. Якщо потрібно отримати доступ до файлів на різних серверах, увійти на кожен окремо бл
У цьому посібнику буде описано процес встановлення ігрового сервера Half Life 2 на систему CentOS 6. Крок 1: Встановлення необхідних умов Щоб налаштувати ou
Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.
Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.
Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.
Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.
Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…
Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.
Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.
Прочитайте блог, щоб дізнатися про різні шари архітектури великих даних та їх функціональні можливості найпростішим способом.
У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.
Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше