CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin
CentOS 7 üzerinde LibreNMS kullanarak ağ cihazlarınızı etkili bir şekilde izleyin. Ağ izleme için gerekli adımları ve yapılandırmaları öğrenin.
PHP uygulamaları genellikle bir web sunucusu, ilişkisel veritabanı sistemi ve dil yorumlayıcısının kendisinden oluşur. Bu derste, docker kullanarak tam bir PHP uygulama yığını kullanacağız. Bu, Nginx (web sunucusu), MySQL (veritabanı sistemi) ve PHP için kaplar oluşturacağımız ve düzenleyeceğimiz derinlemesine bir öğreticidir.
Bu öğretici uğruna, bir veritabanından şehirlerin listesini okuyan ve bir web sayfasında görüntüleyen basit bir uygulama yazacağız, bu şekilde temel, ancak çalışan bir PHP uygulaması göstereceğiz.
Bu kılavuzda, Docker-CE'nin önceden kurulu olduğu ve en azından asgari düzeyde docker bilgisi olduğu varsayılmaktadır. Bu konuda aşağıdaki eğiticileri inceleyebilirsiniz:
Gerçek bir docker tabanlı uygulama tipik olarak birkaç konteynırdan oluşur. Bunları manuel olarak yönetmek oldukça dağınık ve hantal olabilir. Docker-compose devreye giriyor. Basit bir yamlyapılandırma dosyası aracılığıyla birkaç kapsayıcıları yönetmenize yardımcı olur .
Docker-compose uygulamasını yükleyin.
curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Bu örneğin gerekli tüm dosyalarını tutmak için bir klasör oluşturun cd. Şu andan itibaren, bu bizim çalışma dizinimizdir ve her komut bu klasör içinde yürütülür ve her yola, ona göre başvurulur. Bu klasöre daha sonra olarak referans verilebilir WORKING_DIR.
mkdir ~/docker
cd ~/docker
Şimdi üç klasör daha oluşturun.
mkdir php nginx app
phpKlasör bizim özel PHP görüntüsünü inşa edecek nerede olduğu nginxklasörü bizim özel nginx görüntü için gerekli dosyaları yapacak ve appbizim örnek uygulamanın kaynak kodunu ve yapılandırmasını koyarak olacaktır nerede klasördür.
Bu örnekte, php-fpmNginx web sunucusuna bağlanmak için kullanacağız . Resmi PHP temel görüntüsünü kullanacağız. Ancak, veritabanına erişebilmemiz için bazı uzantıları da yüklememiz ve etkinleştirmemiz gerekir. phpKlasörün içinde bir dosya oluşturun Dockerfileve aşağıdaki içerikleri bu dosyaya yerleştirin.
FROM php:7.1-fpm-alpine3.4
RUN apk update --no-cache \
&& apk add --no-cache $PHPIZE_DEPS \
&& apk add --no-cache mysql-dev \
&& docker-php-ext-install pdo pdo_mysql
Resmi PHP görüntüsünün Alpine sürümünü kullandığımızı unutmayın. Alpine, çok daha küçük ayak izleri sağlayarak konteynerlere yönelik çok küçük bir dağıtımdır. Ayrıca, komutun kullanılmasına dikkat edin, docker-php-ext-installresmi PHP görüntüsü, PHP uzantılarını yükleme ve yapılandırma işlemini kolaylaştırmak için bu komutu sağlar.
Şimdi, bu Docker görüntüsünü aşağıdakileri (bizim içimizde WORKING_DIR) yayınlayarak oluşturalım :
docker build -t vultr-php php/
docker-compose.ymldosyaDaha önce de belirtildiği gibi, docker-composebir dizi kapsayıcıyı basit bir yapılandırma dosyası aracılığıyla yönetmenizi sağlar. Bu yapılandırma dosyası genellikle adlandırılır docker-compose.yml. Bu dosyayı appklasörün içinde oluşturun .
touch app/docker-compose.yml
Şimdi aşağıdaki içeriği bu dosyaya yerleştirin.
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
Bu sözdizimini açıklayacağız. İlk olarak, ilk satırı not edin.
version: '2'
Bu, docker-compose.ymlkullanılan yapılandırma dosyasının sürümünü belirtir . Bir sonraki satır, sağlanacak hizmetleri veya başka bir deyişle kapsayıcıları belirtir.
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
Her hizmetin servicesblok içinde belirli bir anahtarı olduğunu unutmayın . Burada belirtilen ad, daha sonra bu özel kapsayı referans almak için kullanılacaktır. Ayrıca, phpyapılandırma içinde, kapsayıcıyı çalıştırmak için kullanılan görüntüyü tanımladığımızı unutmayın (bu daha önce oluşturduğumuz görüntüdür). Ayrıca bir hacim eşlemesi tanımlarız.
volumes:
- ./:/app
Bu docker-compose, geçerli dizini ( ./) /appkabın içindeki dizine eşlemenizi söyler . Son satır /app, kapsayıcı içindeki klasörü çalışma dizini olarak ayarlar ; bu, kapsayıcı içindeki gelecekteki tüm komutların varsayılan olarak yürütüldüğü klasör olduğu anlamına gelir.
Artık konteynırlarımızı düzenleyebiliriz.
cd ~/docker/app
docker-compose up -d
PHP kapsayıcısının yürütüldüğünden emin olmak için aşağıdaki komutu çalıştırabilirsiniz:
docker ps
Hala appklasörün içindeyken, komutun yardımıyla tanımlı bir hizmet konteynerinin içindeki herhangi bir komutu çalıştırabiliriz docker-compose.
docker-compose exec [service] [command]
Yer [service]tutucu, hizmet anahtarını ifade eder. Bizim durumumuzda, bu oldu php. PHP sürümümüzü kontrol etmek için kap içinde bir komut çalıştıralım.
docker-compose exec php php -v
Aşağıdaki çıktıyı göreceksiniz.
PHP 7.1.14 (cli) (built: Feb 7 2018 00:40:45) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
Tıpkı PHP konteyneri gibi, web sunucusu için özel bir resim oluşturmamız gerekiyor. Ancak bu durumda, bizim için bir yapılandırma sağlamalıyız virtual host. İçimizde bulunduğunuzdan ve klasörün içinde WORKING_DIRbir tane oluşturduğunuzdan emin olun :Dockerfilenginx
cd ~/docker
touch nginx/Dockerfile
Şimdi aşağıdaki içeriği buna ekleyin Dockerfile:
FROM nginx:1.13.8-alpine
COPY ./default.conf /etc/nginx/conf.d/default.conf
Alpine tabanlı varsayılan Nginx görüntüsünü kullanıyoruz. Bu Docker dosyasında bir yapılandırma dosyasını uygulama kurulumumuza kopyalarız. Bu resmi oluşturmadan önce bir yapılandırma dosyası oluşturun.
touch nginx/default.conf
Şimdi bu içerikle doldurun.
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /app;
index index.php;
#server_name server_domain_or_IP;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
fastcgi_pass php:9000Satırda, PHP kapsayıcısına yapılandırma dosyası servicebloğunun içindeki adıyla atıfta bulunduğumuzu unutmayın docker-compose.yml. Dahili olarak docker-composebir ağ oluşturur ve tanımlanan hizmetlerin her birine ana makine adı olarak hizmet adını atar. Şimdi Nginx görüntüsünü oluşturabiliriz.
docker build -t vultr-nginx nginx/
docker-compose.ymlŞimdi app/docker-compose.ymldosyayı güncelleyin .
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
web:
image: vultr-nginx
volumes:
- ./:/app
depends_on:
- php
ports:
- 80:80
Yalnızca yeni bir hizmet ekledik. Yapılandırma aşağıdakiler dışında neredeyse aynıdır.
depends_on:
- php
ports:
- 80:80
Nginx konteynerinin tamamen başlatılması için PHP hizmetine ihtiyacı olduğunda, bu gereksinimi depends_onseçenekte zorlarız. portsYapılandırma anahtarı burada port map, bir konteyner limanına ev sahibi portu eşler 80noktasına konakta 80kapta.
Şimdi klasörün index.phpiçinde adlandırılan bir dosya oluşturun appve aşağıdakileri içine koyun.
<?php phpinfo();
Bağlantı noktasına 80güvenlik duvarınızdan erişilebilir olduğundan emin olun ve aşağıdakileri yürütün.
cd ~/docker/app
docker-compose up -d
Bir kez daha, servisin çalışıp çalışmadığını bir kez daha kontrol edin.
docker ps
Bir tarayıcı açın ve erişin [vultr-instance-ip]. Aşağıdakileri çalıştırarak Vultr örneği IP adresinizi öğrenebilirsiniz.
hostname -I
PHP bilgi sayfasını göreceksiniz.
Resmi MySQL görüntüsü, kapsayıcıyı basit ortam değişkenleri aracılığıyla yapılandırmanıza olanak tanır. Bu environment, servis bloğu tanımının içindeki bir seçenekle yapılabilir . ~/docker/app/docker-compose.ymlDosyayı aşağıdaki şekilde güncelleyin .
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
web:
image: vultr-nginx
volumes:
- ./:/app
depends_on:
- php
ports:
- 80:80
mysql:
image: mysql:5.7.21
volumes:
- ./:/app
- dbdata:/var/lib/mysql
environment:
- MYSQL_DATABASE=world
- MYSQL_ROOT_PASSWORD=root
working_dir: /app
volumes:
dbdata:
Şimdi veritabanı için yeni bir hizmet tanımladık. Çizgiye dikkat edin dbdata:/var/lib/mysql. Bu, kaptaki yolu /var/lib/mysqlDocker tarafından yönetilen kalıcı bir birime bağlar, böylece kapsayıcı kaldırıldıktan sonra veritabanı verileri devam eder. Dosyanın sonunda görebileceğiniz gibi, bu birimin üst düzey bir blokta tanımlanması gerekir.
Yeni yapılandırmamızı düzenlemeden önce örnek bir MySQL veritabanı indirelim. Resmi MySQL belgelerine bazı örnek veritabanlarını sağlar. Tanınmış dünya veritabanını kullanacağız. Bu veritabanı, ülkelerin ve şehirlerin bir listesini sağlar. Bu örneği indirmek için uygulama klasörümüzde aşağıdakileri yürütün.
curl -L http://downloads.mysql.com/docs/world.sql.gz -o world.sql.gz
gunzip world.sql.gz
Şimdi konteynırlarımızı düzenleyelim.
docker-compose up -d
Daha önce fark etmiş olabileceğiniz gibi, docker-compose upkomut yalnızca henüz başlatılmamış kapları başlatır. docker-compose.ymlDosyanızla çalışan kapsayıcıların geçerli yapılandırması arasındaki farkları denetler .
Bir kez daha, MySQL konteynerinin başlatıldığını kontrol edin.
docker ps
Şimdi dünya veritabanını doldurun.
docker-compose exec -T mysql mysql -uroot -proot world < world.sql
Doğrudan veritabanından veri seçerek veritabanının doldurulduğunu doğrulayabilirsiniz. Önce kabın içindeki MySQL komut istemine erişin.
docker-compose exec mysql mysql -uroot -proot world
MySQL komut isteminde aşağıdakileri çalıştırın.
select * from city limit 10;
Şehirlerin bir listesini göreceksiniz. Şimdi MySQL komut isteminden çıkın.
mysql> exit
Artık tüm gerekli konteynerler çalışıyor ve çalışıyor, örnek uygulamamıza odaklanabiliriz. app/index.phpDosyayı aşağıdaki şekilde güncelleyin .
<?php
$pdo = new PDO('mysql:host=mysql;dbname=world;charset=utf8', 'root', 'root');
$stmt = $pdo->prepare("
select city.Name, city.District, country.Name as Country, city.Population
from city
left join country on city.CountryCode = country.Code
order by Population desc
limit 10
");
$stmt->execute();
$cities = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Vultr Rocks!</title>
</head>
<body>
<h2>Most Populous Cities In The World</h2>
<table>
<thead>
<tr>
<th>Name</th>
<th>Country</th>
<th>District</th>
<th>Population</th>
</tr>
</thead>
<tbody>
<?php foreach($cities as $city): ?>
<tr>
<td><?=$city['Name']?></td>
<td><?=$city['Country']?></td>
<td><?=$city['District']?></td>
<td><?=number_format($city['Population'], 0)?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</body>
</html>
[vultr-instance-ip]Bir web tarayıcısına erişirseniz , dünyanın en kalabalık şehirlerinin bir listesini görürsünüz. Tebrikler, docker kullanarak tamamen çalışan bir PHP uygulaması dağıttınız.
Bu derste, tam olarak çalışan bir PHP uygulamasını nasıl yapılandıracağımı adım adım gösterdim. PHP ve Nginx için özel görüntüler oluşturduk ve docker-compose'u konteynerlerimizi düzenlemek için yapılandırdık. Çok basit ve basit olmasına rağmen, bu kurulum gerçek bir yaşam senaryosunu yansıtır.
Bu kılavuzda, görüntülerimizi yerel olarak oluşturduk ve etiketledik. Daha esnek bir kurulum için, bu görüntüleri bir docker kayıt defterine gönderebilirsiniz . Resmi liman işçisi kayıt defterine geçebilir, hatta kendi liman işçisi kayıt defterinizi bile oluşturabilirsiniz. Her durumda, bu, görüntülerinizi bir ana bilgisayarda oluşturmanıza ve başka bir bilgisayarda kullanmanıza olanak tanır.
Ürününün daha ayrıntılı kullanımı docker-composeiçin resmi belgelere başvurmalısınız .
Uygulama gereksinimlerinize ve kullandığınız PHP çerçevesine bağlı olarak, daha fazla uzantı eklemek isteyebilirsiniz. Bu, Dockerfileözel PHP imajımızı oluşturmak için kullanılanı değiştirerek kolayca yapılabilir . Ancak, bazı uzantıların kapsayıcıya yüklenmesi için ek bağımlılıklara gereksinimi vardır. Her bir uzantının temel gereksinimlerini gözden geçirmek için PHP resmi belgelerindeki uzantı listesine başvurmalısınız .
CentOS 7 üzerinde LibreNMS kullanarak ağ cihazlarınızı etkili bir şekilde izleyin. Ağ izleme için gerekli adımları ve yapılandırmaları öğrenin.
Counter-Strike: Global Offensive sunucusu kurmak için gerekli adımlar. Gerekli araçlar ve yükleme süreci hakkında bilgi.
OpenNMS, çok sayıda cihazı izlemek ve yönetmek için kullanılabilen bir açık kaynak ağ yönetim platformudur. Ubuntu 16.04 LTS üzerinde OpenNMS kurulumu için tüm adımları keşfedin.
Farklı Bir Sistem mi Kullanıyorsunuz? LibreNMS tam özellikli bir açık kaynak ağ izleme sistemidir.
26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm
Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.
Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.
Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.
Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.
Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.