Як встановити та налаштувати Concourse CI на CentOS 7

Вступ

Безперервна інтеграція — це практика розробки програмного забезпечення DevOps, яка дозволяє розробникам часто об’єднувати змінений код у спільне сховище багато разів на день. Після кожного злиття виконуються автоматичні збірки та тестування для виявлення проблем у коді. Це дозволяє розробникам швидко знаходити та усувати помилки, щоб покращити якість програмного забезпечення та забезпечити безперервну доставку програмного забезпечення. Перемикатися з Concourse туди і назад дуже легко, оскільки він зберігає всю свою конфігурацію в декларативних файлах, які можна перевірити в системі контролю версій. Він також забезпечує веб-інтерфейс користувача, який відображає інформацію про збірку в інтерактивному режимі.

Компоненти залу.
  • ATC є основним компонентом Concourse. Він відповідає за запуск веб-інтерфейсу та API. Він також піклується про все планування конвеєра.
  • TSA — це спеціально створений SSH-сервер. Він відповідає за безпечну реєстрацію працівника в ATC.
  • Workers також управляє двома різними службами:
    1. Garden — це середовище виконання контейнера та інтерфейс для віддаленого керування контейнерами на робочому.
    2. Baggageclaim — це сервер керування кешом та артефактами.
  • Fly — це інтерфейс командного рядка, який використовується для взаємодії з ATC для налаштування конвеєрів Concourse.

Передумови

  • Примірник сервера Vultr CentOS 7.
  • Користувач sudo .

Обов’язково замініть усі випадки 192.0.2.1та ci.example.comна вашу фактичну публічну IP-адресу Vultr та фактичне доменне ім’я.

Оновіть свою базову систему за допомогою посібника Як оновити CentOS 7 . Після оновлення системи перейдіть до встановлення PostgreSQL.

Встановіть та налаштуйте базу даних PostgreSQL

PostgreSQL - це об'єктно-реляційна система баз даних. Concourse зберігає свої дані конвеєра в базі даних PostgreSQL. Додайте репозиторій PostgreSQL.

sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

Встановіть сервер бази даних PostgreSQL.

sudo yum -y install postgresql96-server postgresql96-contrib

Ініціалізуйте базу даних.

sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb

initdbстворює новий кластер баз даних PostgreSQL, який являє собою набір баз даних, якими керує один екземпляр сервера. Відредагуйте pg_hba.confфайл, щоб увімкнути автентифікацію на основі MD5.

sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf

Знайдіть наступні рядки та змініть значення peerта identу METHODстовпці на trustта md5, відповідно.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

Після оновлення конфігурація має виглядати так.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Запустіть сервер PostgreSQL і ввімкніть його автоматичний запуск під час завантаження.

sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6

Змініть пароль для користувача PostgreSQL за замовчуванням.

sudo passwd postgres

Увійдіть як користувач PostgreSQL:

sudo su - postgres

Створіть нового користувача PostgreSQL для Concourse CI.

createuser concourse

Примітка . Користувача PostgreSQL за замовчуванням можна використовувати для аутентифікації бази даних, але рекомендується використовувати спеціального користувача для автентифікації бази даних Concourse у виробничих налаштуваннях.

PostgreSQL надає оболонку для виконання запитів до бази даних. Перейдіть до оболонки PostgreSQL, виконавши:

psql

Встановіть пароль для щойно створеного користувача бази даних Concourse.

ALTER USER concourse WITH ENCRYPTED password 'DBPassword';

Важливо : замініть DBPasswordнадійним паролем. Запишіть пароль, оскільки він знадобиться пізніше в підручнику.

Створіть нову базу даних для Concourse.

CREATE DATABASE concourse OWNER concourse;

Вийдіть з psqlоболонки.

\q

Перейдіть до користувача sudo з поточного користувача postgres.

exit

Завантажте та встановіть Concourse CI

Завантажте останню версію виконуваного файлу Concourse і збережіть його, /usr/binщоб його можна було виконувати безпосередньо. Останню версію двійкових файлів Concourse і Fly можна знайти на сторінці завантаження Concourse . Нові випуски дуже часті. Замініть посилання нижче новим посиланням для останньої версії.

sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/concourse_linux_amd64 -O /usr/bin/concourse

Аналогічно завантажте останню версію виконуваного файлу fly і збережіть його в /usr/bin.

sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/fly_linux_amd64 -O /usr/bin/fly

Fly — це інтерфейс командного рядка для підключення до API ATC Concourse CI. Fly доступний для кількох платформ, таких як Linux, Windows і MacOS.

Призначте дозвіл на виконання завантаженим concourseі flyдвійковим файлам.

sudo chmod +x /usr/bin/concourse /usr/bin/fly

Перевірте, чи Concourse і Fly працюють правильно, перевіривши їх версію.

concourse -version
fly -version

Створення та налаштування ключів RSA

Пари ключів RSA забезпечують спосіб шифрування зв'язку між компонентами Concourse.

Щоб Concourse працював, необхідно створити принаймні три пари ключів. Для шифрування даних сеансу створіть файл session_signing_key. Цей ключ також буде використовуватися TSA для підпису запитів, які він робить до ATC. Щоб захистити сервер TSA SSH, створіть файл tsa_host_key. Нарешті, створіть worker_keyдля кожного працівника.

Створіть новий каталог для зберігання ключів і конфігурації, пов’язаних із Concourse CI.

sudo mkdir /opt/concourse

Згенеруйте необхідні ключі.

sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/session_signing_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/tsa_host_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/worker_key

Авторизуйте відкритий ключ працівників, скопіювавши його вміст у authorized_worker_keysфайл:

sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys

Початковий зал

Concourse надає два окремих компонента, які потрібно запустити, веб і робочий файл. Запустіть веб-сайт Concourse.

sudo concourse web \
  --basic-auth-username admin \
  --basic-auth-password StrongPass \
  --session-signing-key /opt/concourse/session_signing_key \
  --tsa-host-key /opt/concourse/tsa_host_key \
  --tsa-authorized-keys /opt/concourse/authorized_worker_keys \
  --postgres-user=concourse \
  --postgres-password=DBPassword \
  --postgres-database=concourse \
  --external-url http://192.0.2.1:8080

За basic-authбажанням змініть ім’я користувача та пароль . Переконайтеся, що шлях до файлів ключів правильний, і переконайтеся, що надано правильне значення імені користувача та пароля в конфігурації бази даних PostgreSQL.

Примітка : ATC слухатиме порт за замовчуванням, 8080а TSA слухатиме порт 2222. Якщо автентифікація не потрібна, передайте --no-really-i-dont-want-any-authпараметр після видалення основних параметрів аутентифікації.

Once the web server is started, the following output should be displayed.

{"timestamp":"1503657859.661247969","source":"tsa","message":"tsa.listening","log_level":1,"data":{}}
{"timestamp":"1503657859.666907549","source":"atc","message":"atc.listening","log_level":1,"data":{"debug":"127.0.0.1:8079","http":"0.0.0.0:8080"}}

Stop the server for now, as a few more things still must be setup.

Start the Concourse CI Worker.

sudo concourse worker \
  --work-dir /opt/concourse/worker \
  --tsa-host 127.0.0.1 \
  --tsa-public-key /opt/concourse/tsa_host_key.pub \
  --tsa-worker-private-key /opt/concourse/worker_key

The above command will assume that the TSA is running on localhost and listening to the default port 2222.

Though the Concourse web and worker can be started easily using the commands above, it is recommended to use Systemd to manage the server.

Configure Environment and Systemd Service

Using Systemd service for managing the application ensures that the application is automatically started on failures and at boot time. The Concourse server does not take data from any configuration file, but it can access the data from environment variables. Instead of setting global environment variables, create a new file to store the environment variables and then pass the variables to the Concourse CI using the Systemd service.

Create a new environment file for Concourse web.

sudo nano /opt/concourse/web.env

Populate the file.

CONCOURSE_SESSION_SIGNING_KEY=/opt/concourse/session_signing_key
CONCOURSE_TSA_HOST_KEY=/opt/concourse/tsa_host_key
CONCOURSE_TSA_AUTHORIZED_KEYS=/opt/concourse/authorized_worker_keys

CONCOURSE_POSTGRES_USER=concourse
CONCOURSE_POSTGRES_PASSWORD=DBPassword
CONCOURSE_POSTGRES_DATABASE=concourse

CONCOURSE_BASIC_AUTH_USERNAME=admin
CONCOURSE_BASIC_AUTH_PASSWORD=StrongPass
CONCOURSE_EXTERNAL_URL=http://192.0.2.1:8080

Change the username and password of the BASIC_AUTH if desired. Make sure that the path to the key files are correct and make sure that the correct value for username and password in the PostgreSQL database configuration is provided.

Similarly, create an environment file for the worker.

sudo nano /opt/concourse/worker.env

Populate the file.

CONCOURSE_WORK_DIR=/opt/concourse/worker
CONCOURSE_TSA_WORKER_PRIVATE_KEY=/opt/concourse/worker_key
CONCOURSE_TSA_PUBLIC_KEY=/opt/concourse/tsa_host_key.pub
CONCOURSE_TSA_HOST=127.0.0.1

As the environment files contain username and passwords, change its permissions so that it cannot be accessed by other users.

sudo chmod 600 /opt/concourse/*.env

Now create a new user for Concourse to run the web environment. This will ensure that the web server is running in an isolated environment.

sudo adduser --system concourse

Give the concourse user ownership over Concourse CI file's directory.

sudo chown -R concourse:concourse /opt/concourse

Create a new systemd service file for the Concourse web service.

sudo nano /etc/systemd/system/concourse-web.service

Populate the file.

[Unit]
Description=Concourse CI web server
After=postgresql-9.6.service

[Service]
Type=simple
User=concourse
Group=concourse
Restart=on-failure
EnvironmentFile=/opt/concourse/web.env
ExecStart=/usr/bin/concourse web
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_web

[Install]
WantedBy=multi-user.target

Save and close the file. Create a new service file for the Concourse worker service.

sudo nano /etc/systemd/system/concourse-worker.service

Populate the file.

[Unit]
Description=Concourse CI worker process
After=concourse-web.service

[Service]
Type=simple
User=root
Group=root
Restart=on-failure
EnvironmentFile=/opt/concourse/worker.env
ExecStart=/usr/bin/concourse worker
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_worker

[Install]
WantedBy=multi-user.target

The web and worker service can now be started directly by running:

sudo systemctl start concourse-web concourse-worker

To enable the worker and web process to automatically start at boot time, run:

sudo systemctl enable concourse-worker concourse-web

To check the status of services, run:

sudo systemctl status concourse-worker concourse-web

If the service is not started, or in the FAILED state, remove the cache from the /tmp directory.

sudo rm -rf /tmp/*

Restart the services.

sudo systemctl restart concourse-worker concourse-web

Notice that this time the services have started correctly. The output upon verifying the status of the services should be simil.

[user@vultr ~]$ sudo systemctl status concourse-worker concourse-web
● concourse-worker.service - Concourse CI worker process
   Loaded: loaded (/etc/systemd/system/concourse-worker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
 Main PID: 3037 (concourse)
   CGroup: /system.slice/concourse-worker.service
           └─3037 /usr/bin/concourse worker

Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.934722900","source":"tsa","message":"t...""}}
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.941227913","source":"guardian","messag...0"}}
...

● concourse-web.service - Concourse CI web server
   Loaded: loaded (/etc/systemd/system/concourse-web.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
 Main PID: 3036 (concourse)
   CGroup: /system.slice/concourse-web.service
           └─3036 /usr/bin/concourse web

Aug 26 07:27:57 vultr.guest concourse_web[3036]: {"timestamp":"1503732477.925554752","source":"tsa","message":"tsa...ve"}}
Aug 26 07:28:02 vultr.guest concourse_web[3036]: {"timestamp":"1503732482.925430775","source":"tsa","message":"tsa...ve"}}
...
Hint: Some lines were ellipsized, use -l to show in full.

Adjust your firewall to allow port 8080, on which ATS is running and port 2222, on which TSA is running.

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent
sudo firewall-cmd --reload

Connecting to the Server

Once the server is started, the web interface of the Concourse CI can be accessed by going to http://192.0.2.1:8080 in any browser. Log in using the username and password provided in the environment file.

To connect to the server using Fly, run:

fly -t my-ci login -c http://192.0.2.1:8080

The above command is used for initial login to the server. -t is used to provide a target name. replace my-ci with any desired target name. The above command will log in to the default team main. It will ask for the username and password provided in the environment file.

The output will look like the following.

[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'

username: admin
password:

target saved

Цільовий логін буде збережено на добу. Після цього він закінчиться.

Щоб негайно вийти.

fly -t my-ci logout

fly можна використовувати для входу на сервер за межами мережі, але лише якщо сервер має публічну IP-адресу та доступний із-за меж мережі. Двійковий файл Windows або MacOS можна завантажити з сайту завантаження або з веб-інтерфейсу сервера.

Налаштування зворотного проксі Nginx

Імена для входу та інша інформація, надіслана через веб-інтерфейс на сервер Concourse, не захищені. З'єднання не зашифроване. Зворотний проксі-сервер Nginx можна налаштувати за допомогою безкоштовного SSL Let's Encrypt.

Встановіть веб-сервер Nginx і Certbot, який є клієнтською програмою для Let's Encrypt CA.

sudo yum -y install certbot-nginx nginx

Запустіть і ввімкніть автоматичний запуск Nginx під час завантаження:

sudo systemctl start nginx
sudo systemctl enable nginx

Перш ніж можна буде зробити запит на сертифікати, через брандмауер необхідно ввімкнути порти 80 і 443 або стандартні служби HTTP і HTTPS. Certbot перевірить авторизацію домену перед видачею сертифікатів.

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent

Порт 8080 більше не потрібно дозволяти через брандмауер, оскільки Concourse тепер запускатиметься на стандартному порту HTTPS. Видаліть запис брандмауера, щоб дозволити порт 8080.

sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload

Примітка

To obtain certificates from Let's Encrypt CA, the domain for which the certificates are to be generated must be pointed towards the server. If not, make the necessary changes to the DNS records of the domain and wait for the DNS to propagate before making the certificate request again. Certbot checks the domain authority before providing the certificates.

Згенеруйте сертифікати SSL.

sudo certbot certonly --webroot -w /usr/share/nginx/html -d ci.example.com

Згенеровані сертифікати, ймовірно, будуть збережені в /etc/letsencrypt/live/ci.example.com/каталозі. Сертифікат SSL буде збережено як, fullchain.pemа закритий ключ – як privkey.pem.

Термін дії сертифікатів Let's Encrypt закінчується через 90 днів, тому рекомендується автоматичне оновлення для сертифікатів, налаштованих за допомогою cronjobs. Cron — це системна служба, яка використовується для виконання періодичних завдань.

Відкрийте файл завдання cron.

sudo crontab -e

Додайте наступний рядок у кінці файлу.

30 5 * * 1 /usr/bin/certbot renew --quiet

Вищезазначене завдання cron виконуватиметься щопонеділка о 5:30 ранку. Якщо термін дії сертифіката закінчився, його буде автоматично поновлено.

Створіть новий віртуальний хост.

sudo nano /etc/nginx/conf.d/concourse-ssl.conf

Заповніть файл.

server {
    listen 80;
    server_name ci.example.com;
    return 301 https://$host$request_uri;
}
server {

    listen 443;
    server_name ci.example.com;

    ssl_certificate           /etc/letsencrypt/live/ci.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/ci.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log    /var/log/nginx/concourse.access.log;

    location / {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;
      proxy_pass          http://localhost:8080;
      proxy_read_timeout  90;

      proxy_redirect      http://localhost:8080 https://ci.example.com;
    }
  }

Примітка . Замініть ci.example.comна фактичний домен.

Відредагуйте файл середовища, створений для Concours Web.

sudo nano /opt/concourse/web.env

Змініть значення, CONCOURSE_EXTERNAL_URLа також додайте ще два рядки в кінці файлу.

CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080

Збережіть файл і перезапустіть веб-сервер Concourse Web, Worker і Nginx:

sudo systemctl restart concourse-worker concourse-web nginx

Усі дані, що надсилаються до та з браузера, тепер захищені за допомогою шифрування SSL.


Створення мережі серверів Minecraft за допомогою BungeeCord на Debian 8, Debian 9 або CentOS 7

Створення мережі серверів Minecraft за допомогою BungeeCord на Debian 8, Debian 9 або CentOS 7

Що вам знадобиться Vultr VPS з принаймні 1 Гб оперативної пам’яті. Доступ по SSH (з правами root/адміністратора). Крок 1: Встановлення BungeeCord Перш за все

Підвищте продуктивність за допомогою Z і Zsh на CentOS

Підвищте продуктивність за допомогою Z і Zsh на CentOS

Вступ Робота в системах Linux означає, що ви використовуєте командний рядок частіше, ніж ні. Доводиться вводити довгі імена каталогів знову і знову

Налаштуйте кластер RethinkDB на CentOS 7

Налаштуйте кластер RethinkDB на CentOS 7

Вступ RethinkDB — це база даних NoSQL, яка зберігає дані як документи JSON. Він має надзвичайно інтуїтивно зрозумілу мову запитів і має загальнодоступні функції i

Встановіть DirectAdmin на CentOS 6 або 7

Встановіть DirectAdmin на CentOS 6 або 7

DirectAdmin — це запатентована веб-панель керування, яку можна встановити на своєму сервері, яка пропонує різноманітні функції системного адміністрування. У цьому

Огляд процесу завантаження та усунення несправностей CentOS 7 і RHEL 7

Огляд процесу завантаження та усунення несправностей CentOS 7 і RHEL 7

У цій статті описується процес завантаження систем CentOS/RHEL 7.x. Хоча він може залишатися схожим на попередні випуски, з RHEL 7, systemd є

Встановіть PostgreSQL на CentOS 7

Встановіть PostgreSQL на CentOS 7

Вступ PostgreSQL — це найдосконаліша у світі система управління реляційними базами даних (RDBMS) з відкритим кодом. Він відповідає стандартам ANSI SQL:2008

Основи керування користувачами в системах CentOS

Основи керування користувачами в системах CentOS

Керування користувачами може бути складним завданням: від щоденного обслуговування, ризиків безпеки та відсутності ретельної онлайн-документації. Ця стаття допоможе вам почати

Налаштуйте медіасервер Red5 на CentOS 7

Налаштуйте медіасервер Red5 на CentOS 7

Використання іншої системи? Red5 — це медіасервер із відкритим вихідним кодом, реалізований на Java, який дозволяє запускати багатокористувацькі програми Flash, такі як прямі трансляції

Початкове налаштування сервера CentOS 7

Початкове налаштування сервера CentOS 7

Вступ Нещодавно активований сервер CentOS 7 має бути налаштований, перш ніж його можна буде використовувати як робочу систему. У цій статті найголовніше

Перевірте швидкість Інтернету за допомогою Speedtest-cli на CentOS

Перевірте швидкість Інтернету за допомогою Speedtest-cli на CentOS

Вступ У цьому підручнику встановіть Speedtest-cli, щоб перевірити швидкість мережі вашого сервера. Speedtest-cli — це інтерфейс командного рядка для th

Установіть середовище GUI на CentOS 6

Установіть середовище GUI на CentOS 6

Управління сервером лише за допомогою SSH може бути страшним. Добре для нас те, що у Vultr є параметр View Console. Щоб повністю використовувати консоль Vultrs VNC

Налаштувати часовий пояс і NTP на CentOS 6

Налаштувати часовий пояс і NTP на CentOS 6

Вступ Для адміністраторів серверів важливо правильно встановити та підтримувати час на серверах. Неправильно налаштований час спричинить хаос усередині

Як встановити Foreman на CentOS 7

Як встановити Foreman на CentOS 7

Використання іншої системи? Foreman — це безкоштовний інструмент з відкритим вихідним кодом, який допоможе вам налаштувати та керувати фізичними та віртуальними серверами. Предварня

Захист і зміцнення ядра CentOS 7 за допомогою Sysctl

Захист і зміцнення ядра CentOS 7 за допомогою Sysctl

Вступ Sysctl дозволяє користувачеві точно налаштувати ядро ​​без необхідності перебудовувати ядро. Він також негайно застосує зміни, таким чином сервер виграв

Використовуйте Nethogs для моніторингу використання пропускної здатності мережі

Використовуйте Nethogs для моніторингу використання пропускної здатності мережі

У цьому підручнику ми розглянемо процес встановлення та використання nethogs на CentOS 6x x64. nethogs — це інструмент моніторингу мережі, який дозволяє Networ

Встановіть CentOS Web Panel (CWP) на CentOS 6

Встановіть CentOS Web Panel (CWP) на CentOS 6

CentOS Web Panel або CWP — це панель керування хостингом з відкритим кодом, яка призначена для швидкого та легкого керування сервером. Він включає в себе всі функції o

Налаштуйте Zarafa і Yaffas на CentOS 6

Налаштуйте Zarafa і Yaffas на CentOS 6

Існує багато рішень, які замінюють Microsoft Exchange рішенням для Linux, але в усіх була одна проблема, яка мені дуже не сподобалася. Коли отримаю

Як встановити Apache Maven 3.5 на CentOS 7

Як встановити Apache Maven 3.5 на CentOS 7

Apache Maven — це безкоштовний інструмент управління проектами програмного забезпечення з відкритим вихідним кодом, який широко використовується для розгортання програм на основі Java. Передумови A newl

Як встановити та налаштувати Concourse CI на CentOS 7

Як встановити та налаштувати Concourse CI на CentOS 7

Використання іншої системи? Вступ Постійна інтеграція – це практика розробки програмного забезпечення DevOps, яка дозволяє розробникам часто об’єднувати

Розгортання серверного сервера Glowing Bear на CentOS 7

Розгортання серверного сервера Glowing Bear на CentOS 7

Glowing Bear — це веб-інтерфейс для клієнта WeeChat IRC і прагне бути сучасним інтерфейсом. Завдяки таким функціям, як клік, щоб згадати, замінити смайли

Повстання машин: застосування ШІ в реальному світі

Повстання машин: застосування ШІ в реальному світі

Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.

DDOS-атаки: короткий огляд

DDOS-атаки: короткий огляд

Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.

Революційні винаходи від Google, які полегшать ваше життя.

Революційні винаходи від Google, які полегшать ваше життя.

Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.

Еволюція зберігання даних – інфографіка

Еволюція зберігання даних – інфографіка

Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.

Функціональні можливості шарів еталонної архітектури великих даних

Функціональні можливості шарів еталонної архітектури великих даних

Прочитайте блог, щоб дізнатися про різні шари архітектури великих даних та їх функціональні можливості найпростішим способом.

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше