Како инсталирати Јенкинс на ЦентОС 7
Јенкинс је популарна ЦИ (континуирана интеграција) алатка отвореног кода која се широко користи за развој пројеката, примену и аутоматизацију. Овај чланак ће
Постоји много начина да се аутоматизује процес подешавања и конфигурисања кутије. Из било ког разлога, ако се цео наш систем у овом тренутку састоји од само једне кутије, постављање потпуне СЦМ (Софтваре Цонфигуратион Манагемент) инфраструктуре је претерано. Схелл скрипте су једна од опција, али можемо користити и смањену верзију СЦМ-а која је доступна у неколико алата. Цхеф је једна од популарних опција, а "цхеф-соло" је Цхеф-ов самостални конфигурациони режим где нам није потребан додатни чвор да би деловао као "цхеф-сервер". Све што је потребно је УРЛ или путања до тарбалл пакета који садржи куварске књиге. У поређењу са схелл скриптама, овај тип приступа је декларативнији и ефикаснији и такође је добар увод за почетак рада са СЦМ-овима или ИаЦ (Инфраструктура као код) процесима.
„Рецепти“ унутар „куварске књиге“ кувара имају ДСЛ заснован на рубину који описује „ресурсе“ да буду у одређеном стању на чвору. Хајде да наставимо са водичем да бисмо се упознали са неколико Цхеф концепата који су такође применљиви на цхеф-соло. Наш циљ је да поставимо Убунту чвор који покреће Питхон/Дјанго веб апликацију користећи Гуницорн и НГИНКС.
Note: We do not necessarily require ChefDK to be installed on our "Chef workstation" (our machine), although with it, we can use 'chef generate' commands to start-off with a directory structure for creating cookbooks, recipes and more. In this article, we will assume ChefDK is installed on our workstation. Commands were run using the version 4.7.26-1 of ChefDK.
(Све од ове тачке па надаље, осим ако није другачије наведено, треба да се покреће на нашој машини, која се такође назива „Радна станица кувара“)
Куварске књиге у цхеф-у су јединице за вишекратну употребу које садрже све што је потребно за подршку сценарију конфигурације. Куварске књиге могу да садрже више „рецепата“, а „рецепти“ се углавном састоје од образаца ресурса. default.rb
је подразумевани рецепт који ће се покренути када се куварска књига референцира у рун-листи . Различити рецепти омогућавају одвајање брига. Међутим, за овај водич ћемо додати све декларације ресурса у једну главну датотеку рецепта, а то је default.rb
.
Направите фасциклу под називом "ми-цхеф-пројецт" и направите фасциклу у њој под називом "цоокбоокс". Од ./my-chef-project/cookbooks/
, покрените:
$ chef generate cookbook my-cookbook
Наша структура директоријума ће сада изгледати овако:
.
└── my-chef-project
└── cookbooks
└── my-cookbook
├── CHANGELOG.md
├── LICENSE
├── Policyfile.rb
├── README.md
├── chefignore
├── kitchen.yml
├── metadata.rb
├── recipes
│ └── default.rb
├── spec
│ ├── spec_helper.rb
│ └── unit
│ └── recipes
│ └── default_spec.rb
└── test
└── integration
└── default
└── default_test.rb
Први корак у постављању нашег чвора је да идентификујемо које пакете захтева наша апликација. Наш чвор је изабран да буде Убунту, тако да се можемо ослонити на АПТ менаџер пакета да прикупи зависности. Инсталирање пакета које обезбеђује дистрибуција ОС-а је онда лако:
apt_update
package 'python3'
package 'python3-pip'
package 'nginx'
package 'pkg-config'
package 'libcairo2-dev'
package 'libjpeg-dev'
package 'libgif-dev'
package 'libgirepository1.0-dev'
Ово је прилично разумљиво. Први ред ће ажурирати апт спремиште, а следећи редови ће инсталирати те пакете.
Note: The packages following 'nginx' are needed for compiling some of the python dependencies through pip. These may differ based on your python/django project dependencies specified in
requirements.txt
. You can use a trial and error method to determine these packages that you need to include in your cookbook. To do that, perform a manualsudo pip install -r requirements.txt
(Note: This installs packages system wide!) on a freshly instantiated ubuntu machine to see if it runs successfully. If not, the stderr should give you hints on what packages are missing.
Када завршимо са додавањем потребних пакета, морамо да креирамо непривилегованог Линук корисника који ће поседовати изворни код апликације.
user 'bob' do
uid 1212
gid 'users'
home '/home/bob'
shell '/bin/bash'
password '$1$alilbito$C83FsODuq0A1pUMeFPeR10'
end
Имајте на уму да је лозинка хеш формат који се користи у Линуку. Може се извести помоћу ОпенССЛ-а:
$ openssl passwd -1 -salt alilbitof mypassword
Хајде да сада укључимо изворни код Дјанго апликације у нашу куварску књигу. Поставите изворни код унутар ./my-chef-project/cookbooks/my-cookbook/files/default/myapp/
Креирајте ./my-chef-project/cookbooks/my-cookbook/files/default
директоријум ако не постоји.
Упутство за копирање ових датотека на удаљену локацију на нашем чвору је описано коришћењем ресурса ремоте_дирецтори :
remote_directory '/home/bob/myapp' do
source 'myapp' # This is the name of the folder containing our source code that we kept in ./my-cookbook/files/default/
owner 'bob'
group 'users'
mode '0755'
action :create
end
Да бисмо инсталирали питхон пакете у requirements.txt
, можемо да користимо екецуте ресурс за покретање произвољне команде. У овом случају, преко њега треба да извршимо команду пип инсталл:
execute 'install python dependencies' do
command 'pip3 install -r requirements.txt'
cwd '/home/bob/myapp'
end
Note: Bear in mind that this is going to execute as the root user and the python libraries will be installed system-wide. If our node is designated to exclusively run this one single python app, then it isn't much of a problem. Despite that, a better option to keep things clean and sane is to find and use a community cookbook that manages python installations or 'virtualenvs'. (or at the very least, write a series of execute blocks to replicate this). Using virtualenvs in python ensures that any python based system tools or other python projects will not be affected
Сада је време да припремите Гуницорн ВСГИ ХТТП сервер са НГИНКС-ом као нашим обрнутим проксијем. Нгинк се такође користи за руковање свим статичким средствима из Дјанга.
Да бисте поставили Гуницорн као услугу на Убунту, може се користити Системд. Системд_унит ресурс је укључен у Цхеф од верзије 12.11.
systemd_unit 'gunicorn.service' do
content({
Unit: {
Description: 'Django on Gunicorn',
After: 'network.target',
},
Service: {
ExecStart: '/usr/local/bin/gunicorn --workers 3 --bind localhost:8080 myapp.wsgi:application',
User: 'bob',
Group: 'www-data',
WorkingDirectory: '/home/bob/myapp'
Restart: 'always',
},
Install: {
WantedBy: 'multi-user.target',
}
})
action [:create, :enable, :start]
end
Сада морамо да укључимо стандардну НГИНКС проки конфигурацију на овај Гуницорн сервер као што је приказано испод. Овај исечак може да иде у ./my-cookbook/templates/nginx.conf.erb
. Креирајте директоријум шаблона ако не постоји.
Note: Chef's templates support embedded ruby files that can contain variables, ruby expressions and statements. Although this file has the 'erb' extension, we did not use any of the ruby statements or expressions. Also, for the sake of simplicity, we only have a non HTTPS nginx config here (gentle reminder; please do not do this in production!)
server {
listen 80;
server_name http://example.com/;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/bob/myapp/myapp/static;
}
location / {
include proxy_params;
proxy_pass http://localhost:8080/;
}
}
Note: There is also an alternative and a better config, where, for instance the Gunicorn server is bound to a unix domain socket instead of a TCP loopback connection. It's worth exploring that for performance reasons.
Да бисте копирали ову конфигурацију у фасциклу на којој су омогућене локације на чвору, користите ресурс шаблона из Цхеф-а.
template '/etc/nginx/sites-available/example.com.conf' do
source 'nginx.conf.erb'
owner 'root'
group 'root'
mode '0744'
end
Активирање конфигурација на нгинк-у се обично врши креирањем симболичне везе која указује на конфигурацију на sites-available
у нгинк-овој sites-enabled
фасцикли. Симболи се могу декларисати у куварским куварима помоћу ресурса линка као што је приказано у наставку:
link '/etc/nginx/sites-enabled/example.com.conf' do
to '/etc/nginx/sites-available/example.com.conf'
end
и да избришете подразумевану симболичку везу конфигурације:
link '/etc/nginx/sites-enabled/default' do
action :delete
end
И на крају, да покренете нгинк услугу:
service 'nginx' do
action :enable
action :start
end
Рун-листе у цхеф-у су уређена листа улога или рецепата у кувару који ће се извршавати у низу на чвору. Имамо једну куварску књигу „ми-цоокбоок“ и „подразумевани“ рецепт унутар ње коју треба да извршимо на Убунту кутији, тако да би рунлист.јсон у нашем директоријуму пројекта ( ./my-chef-project/runlist.json
) требало да изгледа овако:
{
"run_list": [
"recipe[my-cookbook::default]"
]
}
Наша куварица за соло кувара је спремна за сервирање. Време је да обезбедите Убунту 18.04 машину и инсталирате ЦхефДК на њу:
$ ssh [email protected] 'apt-get update && yes | apt-get install curl && curl https://packages.chef.io/files/current/chefdk/4.7.45/ubuntu/18.04/chefdk_4.7.45-1_amd64.deb -o chefdk.deb && yes | dpkg -i chefdk.deb && rm chefdk.deb'
Враћајући се на нашу Цхеф радну станицу , све што треба да урадимо је да ставимо фасциклу куварских књига у тарбалл, пребацимо тај тарбалл заједно са runlist.json
на удаљени чвор који смо претходно дали и покренемо команду цхеф-соло:
(Наредба испод треба да се покрене унутар чвора или 'цхеф клијента', а не Цхеф Воркстатион)
$ chef-solo --recipe-url $(pwd)/chef-solo.tar.gz -j $(pwd)/runlist.json --chef-license=accept
Или ево једног реда (који ће се покренути из ./my-chef-project/
ЦВД-а на Цхеф Воркстатион):
tar zvcf chef-solo.tar.gz ./cookbooks &&\
scp chef-solo.tar.gz runlist.json [email protected]:~/ &&\
ssh [email protected] 'chef-solo --recipe-url $(pwd)/chef-solo.tar.gz -j $(pwd)/runlist.json --chef-license=accept'
То је то! Гледајте како се стандардни излаз попуњава активностима Цхеф-а који покушава да конвергира ваш чвор са оним што сте навели у куварима. Цхеф-соло ће инсталирати све драгуље потребне за све куваре. Ако је команда цхеф-соло успешна, имаћемо Дјанго апликацију која ради иза нгинк-а на Убунту кутији. Идите на домен/ИП да бисте га тестирали.
Note: Remember that in django you may need to set this domain/ip in the
ALLOWED_HOSTS
list insettings.py
.
Кад год направимо промену у садржају нашег пројектног директоријума (рецепти, шаблони или изворни код апликације итд.), једноставно покрените горњи једноструки редак из директоријума пројекта.
Tip: If the cookbook is version controlled with git (as it should), one good recommendation is to set git hooks to run this one-liner.
Ако пажљиво погледате последњу команду цхеф-соло, приметите да --recipe-url
је намењено да преузме УРЛ. То значи да можете имати ток посла у коме ће ЦИ направити ваш цхеф-соло тарбалл, отпремити га негде и конфигурисати ваш чвор да повремено извлачи из њега.
Tip: Use curl to pull the changed tarball periodically as a cronjob.
curl -z $file
will honorIf-Modified-Since
headers and will only download the tar ball if the remote file has been changed since the timestamp on the existing local$file
.
Јенкинс је популарна ЦИ (континуирана интеграција) алатка отвореног кода која се широко користи за развој пројеката, примену и аутоматизацију. Овај чланак ће
Користите другачији систем? Увод Континуирана интеграција је ДевОпс пракса развоја софтвера која омогућава програмерима да често спајају
Користите другачији систем? Ансибле је алатка отвореног кода за аутоматизацију задатака. Он управља конфигурацијом ваших Линук и Виндовс сервера. Је рад
Користите другачији систем? ГоЦД је систем за континуирану испоруку и аутоматизацију отвореног кода. Омогућава вам да моделујете сложене токове рада користећи свој паралелни ан
Иако је СалтСтацк одличан алат за истовремено покретање операција на многим серверима, он такође подржава унапред дефинисана подешавања конфигурације по хосту ускладиштена у
Користите другачији систем? Ансибле је алатка отвореног кода за аутоматизацију задатака. Он управља конфигурацијом ваших Линук и Виндовс сервера. Је рад
Увод Дроне је аутоматизована, континуирана платформа за тестирање и испоруку која ради на вашој сопственој инфраструктури. Дрон подржава било који језик, услугу о
Шта је балансатор оптерећења Балансери оптерећења седе испред ваше апликације и дистрибуирају долазни саобраћај на више инстанци ваше апликације. Фо
Користите другачији систем? Фореман је бесплатан алат отвореног кода који вам помаже у конфигурацији и управљању физичким и виртуелним серверима. Форема
СалтСтацк, или Салт, је популарно решење за управљање конфигурацијом отвореног кода које се може користити за имплементацију даљинског извршавања, управљања конфигурацијом, код
Увод Стридер ЦД је платформа за континуирано примену отвореног кода. Апликација је написана у Ноде.јс и користи МонгоДБ као позадину за складиштење. Стриде
Увод Цхоцолатеи доноси управљање пакетима које олакшава администрацију софтвера и зависности на Линук-у у Виндовс. Можете брзо и лако
Шта је Пацкер? Пацкер је алатка за обраду слика сервера коју је развио ХасхиЦорп. Сервер имагинг; или алтернативно, непроменљива инфраструктура; је популарна алтернатива
Користите другачији систем? Увод Континуирана интеграција је ДевОпс пракса развоја софтвера која омогућава програмерима да често спајају
Постоји много начина да се аутоматизује процес подешавања и конфигурисања кутије. Из било ког разлога, ако се цео наш систем у овом тренутку састоји од праведних
Користите другачији систем? Фореман је бесплатан алат отвореног кода који вам помаже у конфигурацији и управљању физичким и виртуелним серверима. Форема
СалтСтацк је програм за управљање конфигурацијом заснован на питхон-у који је оптимизован за аутоматизацију конфигурационих датотека, имплементације и било чега другог.
Вештачка интелигенција није у будућности, она је овде управо у садашњости. У овом блогу Прочитајте како су апликације вештачке интелигенције утицале на различите секторе.
Да ли сте и ви жртва ДДОС напада и збуњени сте методама превенције? Прочитајте овај чланак да бисте решили своја питања.
Можда сте чули да хакери зарађују много новца, али да ли сте се икада запитали како зарађују толики новац? Хајде да причамо.
Да ли желите да видите револуционарне изуме Гугла и како су ти изуми променили живот сваког људског бића данас? Затим читајте на блогу да бисте видели Гооглеове изуме.
Концепт самовозећих аутомобила који путују на путеве уз помоћ вештачке интелигенције је сан који већ неко време имамо. Али упркос неколико обећања, њих нема нигде. Прочитајте овај блог да сазнате више…
Како се наука развија великом брзином, преузимајући многе наше напоре, расте и ризик да се подвргнемо необјашњивој сингуларности. Прочитајте шта би сингуларност могла да значи за нас.
Методе складиштења података су се развијале можда од рођења података. Овај блог покрива еволуцију складиштења података на основу инфографике.
Прочитајте блог да бисте на најједноставнији начин упознали различите слојеве у архитектури великих података и њихове функционалности.
У овом дигиталном свету, паметни кућни уређаји постали су кључни део живота. Ево неколико невероватних предности паметних кућних уређаја о томе како они чине наш живот вредним живљења и једноставнијим.
Недавно је Аппле издао мацОС Цаталина 10.15.4 додатак за исправку проблема, али изгледа да ажурирање изазива више проблема који доводе до квара Мац машина. Прочитајте овај чланак да бисте сазнали више