Изучение 26 методов анализа больших данных: часть 1
Изучение 26 методов анализа больших данных: часть 1
Непрерывная интеграция - это практика разработки программного обеспечения DevOps, которая позволяет разработчикам часто объединять измененный код в общий репозиторий много раз в день. После каждого слияния выполняются автоматические сборки и тесты для выявления проблем в коде. Это позволяет разработчикам быстро находить и устранять ошибки, улучшать качество программного обеспечения и обеспечивать непрерывную доставку программного обеспечения. Переключаться из Concourse туда и обратно очень просто, поскольку он сохраняет всю свою конфигурацию в декларативных файлах, которые можно проверить в системе контроля версий. Он также предоставляет веб-интерфейс пользователя, который отображает информацию о сборке в интерактивном режиме.
Обязательно замените все вхождения 192.0.2.1
и ci.example.com
фактический публичный IP-адрес Vultr и реальное доменное имя.
Обновите свою базовую систему, используя руководство Как обновить Ubuntu 16.04 . После обновления системы перейдите к установке PostgreSQL.
PostgreSQL - это объектно-реляционная база данных. Concourse сохраняет данные конвейера в базе данных PostgreSQL. Добавьте репозиторий PostgreSQL.
echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
Установите сервер базы данных PostgreSQL.
sudo apt -y install postgresql
Запустите сервер PostgreSQL и включите его автоматический запуск во время загрузки.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Измените пароль для пользователя 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 и сохраните его /usr/bin
для непосредственного выполнения. Последнюю версию двоичных файлов Concourse и Fly можно найти на странице загрузки Concourse . Новые выпуски очень часты. Замените ссылку ниже новой ссылкой для самой последней версии.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/concourse_linux_amd64 -O /usr/bin/concourse
Аналогичным образом загрузите последнюю версию исполняемого файла fly и сохраните ее в /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/fly_linux_amd64 -O /usr/bin/fly
Fly - это интерфейс командной строки, используемый для подключения к ATC API Concourse CI. Fly доступен для нескольких платформ, таких как Linux, Windows и MacOS.
Назначьте разрешение на выполнение загруженным concourse
и fly
двоичным файлам.
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Проверьте правильность работы Concourse и Fly, проверив их версию.
concourse -version
fly -version
Пары ключей 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 useradd 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
[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
[Service]
Type=simple
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.
После запуска сервера доступ к веб-интерфейсу 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 можно загрузить с сайта загрузки или с веб-интерфейса сервера.
Логины и другая информация, отправляемая через веб-интерфейс на сервер Concourse, не защищены. Соединение не зашифровано. Обратный прокси-сервер Nginx можно настроить с помощью бесплатного шифрования Let's Encrypt.
Установите Nginx.
sudo apt -y install nginx
Запустите Nginx и включите его автоматический запуск во время загрузки.
sudo systemctl start nginx
sudo systemctl enable nginx
Добавьте хранилище Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Установите Certbot, который является клиентским приложением для Let's Encrypt CA.
sudo apt -y install certbot
Примечание . Чтобы получить сертификаты от Let's Encrypt CA, домен, для которого должны быть созданы сертификаты, должен быть направлен на сервер. Если нет, внесите необходимые изменения в записи DNS домена и дождитесь распространения DNS, прежде чем снова делать запрос сертификата. Certbot проверяет полномочия домена перед предоставлением сертификатов.
Создайте сертификаты SSL.
sudo certbot certonly --webroot -w /var/www/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 * * * /usr/bin/certbot renew --quiet
Вышеуказанная работа cron будет выполняться каждый день в 5:30. Если срок действия сертификата истекает, он будет автоматически продлен.
Создайте новый виртуальный хост.
sudo nano /etc/nginx/sites-available/concourse
Заполните файл.
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
фактическим доменом.
Активируйте файл конфигурации.
sudo ln -s /etc/nginx/sites-available/concourse /etc/nginx/sites-enabled/concourse
Отредактируйте файл 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.
Изучение 26 методов анализа больших данных: часть 1
Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.
Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.
Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.
Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.
CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?
По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.
Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!
Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.
Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше