Как установить и настроить Concourse CI на CentOS 7

Вступление

Непрерывная интеграция - это практика разработки программного обеспечения DevOps, которая позволяет разработчикам часто объединять измененный код в общий репозиторий много раз в день. После каждого слияния выполняются автоматические сборки и тесты для выявления проблем в коде. Это позволяет разработчикам быстро находить и устранять ошибки, улучшать качество программного обеспечения и обеспечивать непрерывную доставку программного обеспечения. Переключаться из Concourse туда и обратно очень просто, поскольку он сохраняет всю свою конфигурацию в декларативных файлах, которые можно проверить в системе контроля версий. Он также предоставляет веб-интерфейс пользователя, который отображает информацию о сборке в интерактивном режиме.

Компоненты конкурса.
  • УВД является основным компонентом конкурса. Он отвечает за запуск веб-интерфейса и API. Это также заботится обо всем планировании трубопровода.
  • TSA - это пользовательский SSH-сервер. Он отвечает за безопасную регистрацию работника в УВД.
  • Кроме того, работники работают две разные службы:
    1. Garden - это среда выполнения контейнеров и интерфейс для удаленной организации контейнеров на рабочем месте.
    2. Baggageclaim - сервер управления кешем и артефактами.
  • Fly - это интерфейс командной строки, используемый для взаимодействия с диспетчером УВД для настройки конвейерного конвейера.

Предпосылки

Обязательно замените все вхождения 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 необходимо создать как минимум три пары ключей. Для шифрования данных сеанса создайте session_signing_key. Этот ключ также будет использоваться TSA для подписания запросов, которые он направляет в УВД. Чтобы защитить SSH-сервер TSA, создайте 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опцию после удаления основных опций аутентификации.

После запуска веб-сервера должны отображаться следующие выходные данные.

{"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"}}

Остановите сервер на данный момент, поскольку еще несколько вещей должны быть настроены.

Запустите Concorse 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

Приведенная выше команда предполагает, что TSA работает на локальном хосте и прослушивает порт по умолчанию 2222.

Хотя веб-сайт Concourse и рабочий процесс можно легко запустить с помощью приведенных выше команд, для управления сервером рекомендуется использовать Systemd.

Настройте среду и системный сервис

Использование службы Systemd для управления приложением обеспечивает автоматический запуск приложения при сбоях и во время загрузки. Сервер Concourse не получает данные из какого-либо файла конфигурации, но может получать доступ к данным из переменных среды. Вместо установки глобальных переменных среды создайте новый файл для хранения переменных среды, а затем передайте переменные в Concourse CI с помощью службы Systemd.

Создайте новый файл среды для Concourse Web.

sudo nano /opt/concourse/web.env

Заполните файл.

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

Измените имя пользователя и пароль по BASIC_AUTHжеланию. Убедитесь, что путь к файлам ключей указан правильно, и убедитесь, что указаны правильные значения имени пользователя и пароля в конфигурации базы данных PostgreSQL.

Аналогичным образом создайте файл среды для работника.

sudo nano /opt/concourse/worker.env

Заполните файл.

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

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

sudo chmod 600 /opt/concourse/*.env

Теперь создайте нового пользователя для Concourse для запуска веб-среды. Это обеспечит работу веб-сервера в изолированной среде.

sudo adduser --system concourse

Дайте пользователю права владения каталогом файла CI Concourse.

sudo chown -R concourse:concourse /opt/concourse

Создайте новый файл службы systemd для веб-службы Concourse.

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

Заполните файл.

[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

Сохраните и закройте файл. Создайте новый файл службы для рабочей службы Concourse.

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

Заполните файл.

[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

Веб-сервис и сервис для рабочих теперь могут быть запущены напрямую:

sudo systemctl start concourse-web concourse-worker

Чтобы рабочий и веб-процесс автоматически запускались во время загрузки, выполните:

sudo systemctl enable concourse-worker concourse-web

Чтобы проверить состояние служб, запустите:

sudo systemctl status concourse-worker concourse-web

Если служба не запущена или находится в FAILEDсостоянии, удалите кеш из /tmpкаталога.

sudo rm -rf /tmp/*

Перезапустите сервисы.

sudo systemctl restart concourse-worker concourse-web

Обратите внимание, что на этот раз службы были запущены правильно. Вывод после проверки статуса услуг должен быть похожим.

[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.

Настройте брандмауэр, чтобы разрешить порт 8080, на котором работает ATS, и порт 2222, на котором работает TSA.

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

Подключение к серверу

После запуска сервера доступ к веб-интерфейсу Concourse CI можно получить, открыв http://192.0.2.1:8080любой браузер. Войдите в систему, используя имя пользователя и пароль, указанные в файле среды.

Чтобы подключиться к серверу с помощью Fly, запустите:

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

Вышеуказанная команда используется для первоначального входа на сервер. -tиспользуется для предоставления целевого имени. заменить my-ciна любое желаемое имя цели. Приведенная выше команда войдет в команду по умолчанию main. Он запросит имя пользователя и пароль, указанные в файле среды.

Вывод будет выглядеть следующим образом.

[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 можно настроить с помощью бесплатного шифрования 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

Запись

Чтобы получить сертификаты от Let's Encrypt CA, домен, для которого должны быть созданы сертификаты, должен быть направлен на сервер. Если нет, внесите необходимые изменения в записи DNS домена и дождитесь распространения DNS, прежде чем снова делать запрос сертификата. Certbot проверяет полномочия домена перед предоставлением сертификатов.

Создайте сертификаты 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фактическим доменом.

Отредактируйте файл Environment, созданный для конкурса 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.



Leave a Comment

Как установить Anchor CMS на CentOS 7 LAMP VPS

Как установить Anchor CMS на CentOS 7 LAMP VPS

Используете другую систему? Anchor CMS - это сверхпростая и чрезвычайно легкая бесплатная система управления контентом (CMS) с открытым исходным кодом.

Как обновить CentOS 7, Ubuntu 16.04 и Debian 8

Как обновить CentOS 7, Ubuntu 16.04 и Debian 8

При настройке нового сервера Linux рекомендуется обновить ядро ​​системы и другие пакеты до последней стабильной версии. В этой статье

Как установить Backdrop CMS 1.8.0 на CentOS 7 LAMP VPS

Как установить Backdrop CMS 1.8.0 на CentOS 7 LAMP VPS

Используете другую систему? Backdrop CMS 1.8.0 - это простая и гибкая, удобная для мобильных устройств, бесплатная система с открытым исходным кодом (CMS), которая позволяет нам

Настройте Magento на CentOS 6

Настройте Magento на CentOS 6

Если вы хотите разместить свой инвентарь в Интернете или просто магазин технических аксессуаров, Magento - отличное решение для электронной коммерции в Интернете. Это статья

Как установить AirSonic на CentOS 7

Как установить AirSonic на CentOS 7

Используете другую систему? AirSonic - это бесплатный и потоковый сервер с открытым исходным кодом. В этом уроке я проведу вас через процесс развертывания

Как установить OrangeScrum на CentOS 7

Как установить OrangeScrum на CentOS 7

OrangeScrum - это бесплатный инструмент управления проектами с открытым исходным кодом, который широко используется в малом и среднем бизнесе. В этой статье я проведу вас через

Как установить и настроить OrientDB Community Edition для CentOS 7

Как установить и настроить OrientDB Community Edition для CentOS 7

OrientDB - это мультимодельная СУБД NoSQL с открытым исходным кодом нового поколения. Благодаря поддержке нескольких моделей данных OrientDB может обеспечить большую функциональность и гибкость в

Как установить Vtiger CRM с открытым исходным кодом на CentOS 7

Как установить Vtiger CRM с открытым исходным кодом на CentOS 7

Vtiger CRM - это популярное приложение для управления взаимоотношениями с клиентами, которое может помочь предприятиям увеличить продажи, обеспечить обслуживание клиентов и увеличить прибыль. я

Как установить MaraDNS на CentOS 6

Как установить MaraDNS на CentOS 6

MaraDNS - это легкая, но надежная программа с открытым исходным кодом для DNS-сервера. По сравнению с другими приложениями того же типа, такими как ISC BIND, PowerDNS и djbdns

Установка Netdata в CentOS 7

Установка Netdata в CentOS 7

Используете другую систему? Netdata - восходящая звезда в области мониторинга показателей системы в режиме реального времени. По сравнению с другими инструментами того же рода, Netdata:

Как установить Starbound Server в CentOS 7

Как установить Starbound Server в CentOS 7

Используете другую систему? В этом уроке я расскажу, как настроить сервер Starbound в CentOS 7. Предварительные условия Вы должны иметь эту игру на себе

Кластеризация RabbitMQ на CentOS 7

Кластеризация RabbitMQ на CentOS 7

RabbitMQ - это брокер сообщений с открытым исходным кодом, который поддерживает AMQP, STOMP и другие коммуникационные технологии. Широко используется в корпоративных приложениях

Настройка многопользовательского сервера SA-MP San Andreas на CentOS 6

Настройка многопользовательского сервера SA-MP San Andreas на CentOS 6

Добро пожаловать в другой учебник Vultr. Здесь вы узнаете, как установить и запустить сервер SAMP. Это руководство было написано для CentOS 6. Предварительные условия

Установите Elgg на CentOS 7

Установите Elgg на CentOS 7

Используете другую систему? Elgg - это движок социальных сетей с открытым исходным кодом, который позволяет создавать социальные среды, такие как социальные сети кампуса и

Установка Bolt CMS на CentOS 7

Установка Bolt CMS на CentOS 7

Bolt - это CMS с открытым исходным кодом, написанная на PHP. Исходный код Bolts размещен на GitHub. Это руководство покажет вам, как установить Bolt CMS на новую CentOS 7 Vult.

Как установить и использовать Apache PredictionIO для машинного обучения в CentOS 7

Как установить и использовать Apache PredictionIO для машинного обучения в CentOS 7

Традиционные подходы к анализу данных невозможно использовать, когда наборы данных достигают определенного размера. Современная альтернатива анализу огромных массивов данных, которые я

Как установить Elasticsearch на экземпляре Vultr CentOS 7 Server

Как установить Elasticsearch на экземпляре Vultr CentOS 7 Server

Elasticsearch - популярный движок полнотекстового поиска и аналитики с открытым исходным кодом. Благодаря своей универсальности, масштабируемости и простоте использования, Elasticsearch широко используется

Развертывание Kubernetes с помощью Kubeadm на CentOS 7

Развертывание Kubernetes с помощью Kubeadm на CentOS 7

Обзор Эта статья призвана помочь вам в кратчайшие сроки запустить и запустить кластер Kubernetes с помощью kubeadm. Это руководство будет развертывать два сервера, на

Настройте Sails.js для разработки на CentOS 7

Настройте Sails.js для разработки на CentOS 7

Используете другую систему? Введение Sails.js - это инфраструктура MVC для Node.js, аналогичная Ruby on Rails. Это делает для разработки современных приложений вер

Как установить PufferPanel (бесплатная панель управления Minecraft) на CentOS 7

Как установить PufferPanel (бесплатная панель управления Minecraft) на CentOS 7

Введение В этом руководстве мы будем устанавливать PufferPanel на нашем Vultr VPS. PufferPanel - это бесплатная панель управления с открытым исходным кодом для управления вами.

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

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

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

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

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

По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

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

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

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

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

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