Как установить Anchor CMS на CentOS 7 LAMP VPS
Используете другую систему? Anchor CMS - это сверхпростая и чрезвычайно легкая бесплатная система управления контентом (CMS) с открытым исходным кодом.
Непрерывная интеграция - это практика разработки программного обеспечения DevOps, которая позволяет разработчикам часто объединять измененный код в общий репозиторий много раз в день. После каждого слияния выполняются автоматические сборки и тесты для выявления проблем в коде. Это позволяет разработчикам быстро находить и устранять ошибки, улучшать качество программного обеспечения и обеспечивать непрерывную доставку программного обеспечения. Переключаться из Concourse туда и обратно очень просто, поскольку он сохраняет всю свою конфигурацию в декларативных файлах, которые можно проверить в системе контроля версий. Он также предоставляет веб-интерфейс пользователя, который отображает информацию о сборке в интерактивном режиме.
Обязательно замените все вхождения 192.0.2.1
и ci.example.com
фактический публичный IP-адрес Vultr и реальное доменное имя.
Обновите базовую систему, используя руководство Как обновить CentOS 7 . После обновления системы перейдите к установке 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 и сохраните его /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 обеспечивают способ шифрования связи между компонентами Зала.
Для работы 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 можно загрузить с сайта загрузки или с веб-интерфейса сервера.
Логины и другая информация, отправляемая через веб-интерфейс на сервер 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.
Используете другую систему? Anchor CMS - это сверхпростая и чрезвычайно легкая бесплатная система управления контентом (CMS) с открытым исходным кодом.
При настройке нового сервера Linux рекомендуется обновить ядро системы и другие пакеты до последней стабильной версии. В этой статье
Используете другую систему? Backdrop CMS 1.8.0 - это простая и гибкая, удобная для мобильных устройств, бесплатная система с открытым исходным кодом (CMS), которая позволяет нам
Если вы хотите разместить свой инвентарь в Интернете или просто магазин технических аксессуаров, Magento - отличное решение для электронной коммерции в Интернете. Это статья
Используете другую систему? AirSonic - это бесплатный и потоковый сервер с открытым исходным кодом. В этом уроке я проведу вас через процесс развертывания
OrangeScrum - это бесплатный инструмент управления проектами с открытым исходным кодом, который широко используется в малом и среднем бизнесе. В этой статье я проведу вас через
OrientDB - это мультимодельная СУБД NoSQL с открытым исходным кодом нового поколения. Благодаря поддержке нескольких моделей данных OrientDB может обеспечить большую функциональность и гибкость в
Vtiger CRM - это популярное приложение для управления взаимоотношениями с клиентами, которое может помочь предприятиям увеличить продажи, обеспечить обслуживание клиентов и увеличить прибыль. я
MaraDNS - это легкая, но надежная программа с открытым исходным кодом для DNS-сервера. По сравнению с другими приложениями того же типа, такими как ISC BIND, PowerDNS и djbdns
Используете другую систему? Netdata - восходящая звезда в области мониторинга показателей системы в режиме реального времени. По сравнению с другими инструментами того же рода, Netdata:
Используете другую систему? В этом уроке я расскажу, как настроить сервер Starbound в CentOS 7. Предварительные условия Вы должны иметь эту игру на себе
RabbitMQ - это брокер сообщений с открытым исходным кодом, который поддерживает AMQP, STOMP и другие коммуникационные технологии. Широко используется в корпоративных приложениях
Добро пожаловать в другой учебник Vultr. Здесь вы узнаете, как установить и запустить сервер SAMP. Это руководство было написано для CentOS 6. Предварительные условия
Используете другую систему? Elgg - это движок социальных сетей с открытым исходным кодом, который позволяет создавать социальные среды, такие как социальные сети кампуса и
Bolt - это CMS с открытым исходным кодом, написанная на PHP. Исходный код Bolts размещен на GitHub. Это руководство покажет вам, как установить Bolt CMS на новую CentOS 7 Vult.
Традиционные подходы к анализу данных невозможно использовать, когда наборы данных достигают определенного размера. Современная альтернатива анализу огромных массивов данных, которые я
Elasticsearch - популярный движок полнотекстового поиска и аналитики с открытым исходным кодом. Благодаря своей универсальности, масштабируемости и простоте использования, Elasticsearch широко используется
Обзор Эта статья призвана помочь вам в кратчайшие сроки запустить и запустить кластер Kubernetes с помощью kubeadm. Это руководство будет развертывать два сервера, на
Используете другую систему? Введение Sails.js - это инфраструктура MVC для Node.js, аналогичная Ruby on Rails. Это делает для разработки современных приложений вер
Введение В этом руководстве мы будем устанавливать PufferPanel на нашем Vultr VPS. PufferPanel - это бесплатная панель управления с открытым исходным кодом для управления вами.
Изучение 26 методов анализа больших данных: часть 1
Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.
Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.
Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.
Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.
CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?
По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.
Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!
Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.
Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше