CentOS üzerinde Apache kurulumundan başlatmaya kadar gereken ilk yapılandırma.


Yayın Tarihi:8 Aralık 2020.



INFOMARTION > CentOS üzerinde Apache kurulumundan başlatmaya kadar gereken ilk yapılandırma.

Genel bakış.

Bu, CentOS üzerinde Apache'yi kurmak ve başlatmak için gereken ilk yapılandırma prosedürüdür. Bilgiler CentOS7 kullanıldığı varsayımına dayanmaktadır.

Versiyonlar aşağıdaki gibidir.

CentOS sürümü7.6 (1810)
Apache sürümü2.4.6

İçindekiler

  1. yükleyin
  2. temel ayar
  3. özet

1. yükleyin

Bu bölümde Apache'nin kurulumdan başlatmaya kadar olan yapılandırması açıklanmaktadır.

1-1. Apache'yi Yükleme

Yum komutunu kullanarak Apache kurulumunu gerçekleştirin. Çalışmayı kök kullanıcı olarak gerçekleştirin.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install httpd

1-2. Başlangıç kontrolü (http erişimi)

Erişilebilir olup olmadığını kısaca kontrol edin. Apache'nin (httpd) yum komutu ile kurulması apachectl komutunu etkinleştirir. Apache'yi başlatmak için bunu kullanın.

[root@hostname ~]# apachectl start
[root@hostname ~]# apachectl status
* httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2020-12-06 17:08:12 JST; 1s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 1303 (httpd)
   Status: "Processing requests..."
   CGroup: /system.slice/httpd.service
           |-1303 /usr/sbin/httpd -DFOREGROUND
           |-1304 /usr/sbin/httpd -DFOREGROUND
           |-1305 /usr/sbin/httpd -DFOREGROUND
           |-1306 /usr/sbin/httpd -DFOREGROUND
           |-1307 /usr/sbin/httpd -DFOREGROUND
           `-1308 /usr/sbin/httpd -DFOREGROUND

Dec 06 17:08:11 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Dec 06 17:08:12 localhost.localdomain httpd[1303]: AH00558: httpd: Could not reliably determ...ge
Dec 06 17:08:12 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

'apachectl status' komutunun çalıştırılması sonucunda 'Active: active (running)' döndürülürse, sistem başarıyla başlatılmıştır.

Ardından tarayıcınızdan Apache'ye erişin. Güvenlik duvarı (veya CentOS6 ve öncesi için iptables) CentOS7'de varsayılan olarak yalnızca ssh erişimine izin verdiği için http izinlerini ayarlayın. Ayrıca https için toplu bir izin ayarı koymak istiyorum. Yapılandırmayı kalıcı hale getirmek için 'kalıcı' seçeneğini de ekleyin.

[root@hostname ~]# firewall-cmd --permanent --add-service=http
[root@hostname ~]# firewall-cmd --permanent --add-service=https
[root@hostname ~]# firewall-cmd --reload
[root@hostname ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http https ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

'Hizmetler'e 'http' ve 'https' eklenmişse sorun yoktur. Tarayıcı üzerinden erişilir. Benim durumumda, sunucunun IP adresi 192.168.50.10, bu yüzden "http://192.168.50.10" adresine erişiyorum. Aşağıdaki sayfa görüntülenirse sorun yoktur

Sistem başarıyla başlatıldıktan sonra durdurun.

[root@hostname ~]# apachectl stop

2. temel ayar

2-1. Günlük dosyası çıktı klasörünün oluşturulması

log/var/log/ altında günlüğe kaydetmeyi yönetmek için Apache günlükleri klasörü olarak /var/log/ altında bir httpd dizini oluşturun.

İzinler (permissions) 755 olmalıdır. Bu ayar Apache'nin yazmasına izin verir, ancak diğer kullanıcılar yalnızca okuyabilir. Diğer kullanıcılar yazabilirse, günlükler kurcalanabilir.

'mkdir /var/log/httpd' komutunun, aynı isimde bir dizin zaten oluşturulmuşsa çalıştırılmasına gerek yoktur.

[root@hostname ~]# mkdir /var/log/httpd
[root@hostname ~]# chmod 755 /var/log/httpd

Apache günlük çıktı hedefi ayarlarını değiştirmek için ikinci prosedürü kullanın.

Bu prosedür sadece günlüklerin saklanması için bir klasör oluşturma prosedürüdür.

2-2. Etki alanı ayarı

httpd.conf dosyasında listelenen etki alanı ayarlarını değiştirin. Apache yapılandırması temel olarak httpd.conf dosyasında merkezileştirilmiştir, bu nedenle yapılandırmayı değiştirmek istiyorsanız httpd.conf dosyasını değiştirin. Ortam yerel ise (internette halka açık değilse) alan adlarının ayarlanması gerekmez.

[root@hostname ~]# vi /etc/httpd/conf/httpd.conf

# Eklemeyi kaldırın ve ServerName ayarını etkinleştirin. Alan adı ortama göre ayarlanır.

httpd.conf【Değişimden önce】


#ServerName www.example.com:80

httpd.conf【değişiklikten sonra】


ServerName domainname:80

2-3. SSL modüllerinin ve yapılandırma dosyalarının etkinleştirilmesi

Https üzerinden erişime izin vermek için SSL'yi etkinleştirin. SSL ayarları SEO ile ilgilidir ve http ilk etapta güvenlik nedenleriyle iyi bir fikir değildir, bu nedenle http kullanmak zorunda değilseniz https kullanın.

yum ile ssl modülünü yükleyin.

[root@hostname ~]# yum -y install mod_ssl

Yum ile kurulum otomatik olarak ssl modülünü etkinleştirir, bu nedenle yalnızca onu yüklemeniz gerekir. Bir yapılandırma dosyası da otomatik olarak oluşturulur. (/etc/httpd/conf.d/ssl.conf otomatik olarak oluşturulur.)

2-4. Günlük çıktı yolunu değiştirme

Apache günlük çıktı hedefini yeni oluşturduğunuz günlük dosyası çıktı klasörü olarak değiştirin. Sadece ssl yapılandırma dosyasını değiştirin, çünkü sonraki bir adımda sadece ssl (https) üzerinden erişilecek şekilde ayarlanacaktır.

[root@hostname ~]# vi /etc/httpd/conf.d/ssl.conf


ssl.conf【Değişimden önce】


ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log

~KISALTMA~

CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"


ssl.conf【değişiklikten sonra】


ErrorLog /var/log/httpd/ssl_error_log
TransferLog /var/log/httpd/ssl_access_log

~KISALTMA~

CustomLog /var/log/httpd/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

Yukarıdaki değişiklik günlük çıktı hedefini "/var/log/httpd" altına değiştirir.


'%t, %h', vb., bu günlük biçimlendirme ayarıdır. Aşağıda referans için sıkça kullanılabilecek formatların bir listesi bulunmaktadır.

【参考】

・%T:Talebi işlemek için geçen süre (saniye)

・%h:İstemcinin ana bilgisayar adı veya IP adresi. Yalnızca HostnameLookups öğesi On olarak ayarlanmışsa ana bilgisayar adlarını çözümlemeye çalışın

・%r:Talebin ilk satırı

・%b:Yanıtın bayt sayısı (HTTP üstbilgileri hariç). CLF formatı, yani - baytların hiçbiri gönderilmezse

・%D:İsteği işlemek için geçen süre (mikrosaniye)

・%>s:HTTP Durumu

2-5. SSL sertifikalarının oluşturulması

Sertifika oluşturma prosedürü. Özel operasyonlar için kendi kendine belgelendirme uygundur. Halka açık sunucular için, kendi kendine sertifikasyon önerilmemelidir.

Normal sertifikalar ile öz sertifikalar arasında güvenlik açısından hiçbir fark yoktur. Bu, üçüncü bir tarafça güvenilir olarak değerlendirilebilecek bir sertifika ile değerlendirilemeyecek bir sertifika arasındaki fark olabilir. (Kendi kendine onaylama ile URL çubuğu kırmızıya döner.) Bu nedenle, herkese açık sunucular (üçüncü taraflarca görülebilen sunucular) için normal bir sertifika yayınlayın.

Apache için varsayılan sertifika ayarları "/etc/pki/tls/certs/localhost.crt" ve "/etc/pki/tls/private/localhost.key" şeklindedir.

Ayarlar "/etc/httpd/conf.d/ssl.conf" içindeki "SSLCertificateFile" ve "SSLCertificateKeyFile" içinde bulunabilir.


【Kendi kendine belgelendirme için】

Öz sertifika oluşturmak için aşağıdaki komutu çalıştırın. Kök kullanıcı olarak çalıştırın.

'openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.crt' komutunu çalıştırdığınızda sizden birkaç kez yanıt isteyecektir, hepsi Enter ile, sorun yok. Bu, sertifikayı kimin verdiğine ilişkin bilgiler olacaktır (örneğin, hangi ülkede yaşadıkları ve e-posta adreslerinin ne olduğu). Normal bir sertifika düzenliyorsanız, doğru bilgileri girin ve ayarlayın.

[root@hostname ~]# openssl genrsa > /etc/pki/tls/private/localhost.key
[root@hostname ~]# openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.csr
[root@hostname ~]# openssl x509 -req -signkey /etc/pki/tls/private/localhost.key < /etc/pki/tls/certs/localhost.csr > /etc/pki/tls/certs/localhost.crt

【Normal sertifikalar için】

Normal bir sertifika oluşturmak için aşağıdaki komutu çalıştırın. Kök kullanıcı olarak çalıştırın.

[root@hostname ~]# openssl genrsa -out /etc/pki/tls/private/localhost.key 2048
[root@hostname ~]# openssl req -new -key /etc/pki/tls/private/localhost.key -out /etc/pki/tls/certs/localhost.csr

Normal sertifikalar için bu işlemin tamamlanması yeterli değildir. Çalışma, oluşturulan 'server.csr' dosyasını bir sunucu sertifikası düzenlenmesi için Sertifika Yetkilisine teslim etmeyi ve düzenlenen sunucu sertifikasını yüklemeyi içerir.

2-6. kalıcı SSL (Güvenli Soket Katmanı)

Erişimin http üzerinden yapılması iyi bir güvenlik değildir, bu nedenle erişim http üzerinden yapılırsa https'ye yönlendirmek için bir ayar ekleyin.

Http üzerinden erişimi yasaklamak mümkündür, ancak kullanılabilirlik açısından bir yönlendirme ayarlanması önerilir. Aşağıdaki görevleri root kullanıcısı olarak gerçekleştirin.

[root@hostname ~]# vi /etc/httpd/conf/httpd.conf

Sonuna aşağıdakileri ekleyin.

httpd.conf


<IfModule rewrite_module>
  RewriteEngine on
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

Bu ayarı http ile gelen erişimlerin https ile işlenmesini sağlayacak şekilde değiştirmek mümkündür.

Eğer https üzerinden gelirseniz bu ayarın çalışmadığı belirtiliyor. (RewriteCond %{HTTPS} off)

Bu ayar olmadan https erişimlerinin de yönlendirileceğini ve sonsuz bir döngüye neden olacağını belirtmeyi unutmayın.

2-7. Aktivasyon onayı (https erişimi).

Çeşitli ayarlar tamamlandığına göre, siteye https üzerinden erişilebildiğini kontrol edin. Önce başlayın.

[root@hostname ~]# apachectl start

Tarayıcı üzerinden erişilir. Http erişimi ile aynı, ancak benim durumumda sunucunun IP adresi 192.168.50.10, bu yüzden "http://192.168.50.10" adresine erişiyorum.

URL, http yönlendirme ayarı dahil edildiğinden "http://192.168.50.10" yerine "https://192.168.50.10" olarak değiştirilir.

Artık başarıyla başlatıldığına göre Apache'yi durdurun.

[root@hostname ~]# apachectl stop

2-8. Otomatik başlatma ayarı

Son olarak, zorunlu olmamakla birlikte, sunucu her yeniden başlatıldığında Apache'yi başlatmak zordur, bu nedenle sunucu başlatıldığında Apache'nin otomatik olarak başlaması için bir yapılandırma yapılır. Ayrıca systemctl komutuna da kaydolur. Lütfen bu prosedürün CentOS7 için olduğunu unutmayın, bu nedenle CentOS7'den başka bir şey kullanıyorsanız, bununla başa çıkmak için Service komutunu kullanmanız gerekecektir.

Bir 'apache.service' dosyası oluşturun ve gerekli ayarları tanımlayın.

[root@hostname ~]# touch /etc/systemd/system/apache.service
[root@hostname ~]# vi /etc/systemd/system/apache.service

Aşağıdaki bilgiler verilmiştir.

[Unit]
#Açıklama.
Description=Apache
#Yürütme öncesi ve sonrası kontrol.
#Before=xxx.service
#After=xxx.service

[Service]
#Kullanıcı ve grup tanımlama
User=root
Group=root
#Etkinleştirildikten sonra durumu Etkinleştirildi olarak ayarlayın.
Type=oneshot
RemainAfterExit=yes
#Başlat, durdur ve yeniden yükle.
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl restart

[Install]
#Çalışma seviyesi 3 eşdeğer ayarları.
WantedBy=multi-user.target

Tanımlamayı bitirdiğinizde, systemctl komutu ile kaydedin.

[root@hostname ~]# systemctl enable apache
[root@hostname ~]# systemctl is-enabled apache
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep apache
apache.service                                enabled
[root@hostname ~]# systemctl daemon-reload


3. özet

Apache kurulduğunda gereken ilk yapılandırmayı açıkladık.

Apache temel olarak varsayılan ayarlarla bir dereceye kadar çalışır, ancak gerçekten özelleştirirseniz, lütfen sistemi çalıştırırken değiştirmeniz gereken günlük çıktı hedefi ayarlarına ve SSL ayarlarına bakın.

Sonuna kadar izlediğiniz için teşekkür ederiz.