[LINUX] Résumons Apache

Jetons un coup d'œil à Apache pour apprendre Linuc2. Pour être honnête, je ne me souciais pas vraiment des paramètres détaillés car ils peuvent être utilisés en installant avec yum. Si vous éditez httpd.conf et que vous le vérifiez avec apache configtest etc., une erreur commençant par AH de base s'affiche, il est donc relativement facile d'y accéder.

# D'installation

Compiler à partir de la source

Personnellement, j'installe toujours uniquement avec yum, veuillez donc vous référer à l'article ci-dessous. Configurer, compiler, installer

Vous devez également installer APR et APR-util pour compiler à partir des sources.

Utilisez le package

# yum install -y httpd

fichier de configuration

Directif Explication
/etc/httpd/conf/httpd.conf Fichier de configuration principal
/etc/httpd/conf.d Répertoire pour stocker les fichiers de configuration auxiliaires
ssl.conf SSL/Paramètres TLS
php.conf Paramètres du module PHP
perl.conf Paramètres du module Perl

htpd.conf#

Valeur de réglage du nom du directeur

--Lors de la spécification du champ d'application

<Nom du fichier Files> ... </ Files> <Nom du répertoire du répertoire> ... </ Répertoire> <LOcation URL>...</Location>

Directif Explication
ServerTokens information sur la version
ServerRoot Top répertoire
ServerName nom d'hôte
ServerAdmin adresse mail
StartServers Numéro au démarrage
MinSpareServers Nombre minimum de processus serveur
MaxSpareServers Nombre maximum de processus serveur
ServerLimits Nombre maximum de processus enfants pouvant être définis
Timeout Heure à laquelle la connexion du client expire
KeepAlive Garder en vie activé/Invalide
KeepAliveRequests Nombre maximum de requêtes par connexion TCP
KeepAliveTimeout Délai d'expiration pour une connexion TCP
Listen Port de veille
User Exécution de l'utilisateur du processus enfant
Group Groupe d'exécution du processus enfant
DocumentRoot Répertoire racine du document
UserDir Annuaire public pour les utilisateurs généraux
DirectoryIndex Nom de fichier à renvoyer comme index de répertoire
ErrorLog Fichier journal qui enregistre les erreurs
LogLevel Niveau du journal des erreurs
LogFormat Éléments et formats à enregistrer
CustomLog journal d'accès
HostnameLookups Effectuez une recherche DNS inversée et obtenez le nom d'hôte à partir de l'adresse IP de la source d'accès
Alias Vous pourrez voir des endroits autres que l'arborescence racine du document.
ScliptAlias Répertoire de scripts CGI
ErrorDocument Spécifiez ce qu'il faut faire si une erreur se produit

Fichier de configuration externe

Pour utiliser un fichier externe (.htaccess) pour remplacer les paramètres dans httpd.conf, utilisez le répertoire ** AccessFileName **.

httpd.conf


AccessFileName .htaccess

Pour autoriser l'utilisation de fichiers de configuration externes, spécifiez dans le répertoire ** AllowOverride **.

L'exemple suivant active l'authentification et le contrôle d'accès dans .htaccess.

httpd.conf


AllowOverride AuthConfig Limit
Sous-commande Explication
AuthConfig Authentification
Indexes DirectoryIndex
Fileinfo Contrôle du type de fichier
Limit Order,Allow,Deny
Options Options
None .Désactiver les modifications dans htaccess
All .Activer tous les paramètres modifiables dans htaccess

apachectl#

Sous-commande Explication
start Commencez
stop Arrêtez
restart Redémarrer
graceful Démarrer si arrêté, attendre le redémarrage si la demande est redémarrée
reload Lire le fichier de paramètres
configtest Vérifiez la syntaxe du fichier de configuration

module#

Liste des modules

Pour charger le module, spécifiez:

httpd.conf


LoadModule perl_module modules/mod_perl.so

Après avoir installé Apache, utilisez ** apxs ** pour inclure le module. Après cela, ajoutez-le dans le répertoire LoadModule comme dans ↑. Pour installer apxs, installez le package httpd-devel.

# yum install httpd-devel
# apxs -i -c mod_foobar.c

Les modules intégrés sont ** httpd -l ** ** httpd -M ** pour afficher la liste des modules intégrés et des modules DSO et également vérifier la syntaxe du fichier de configuration Utiliser.

# httpd -l
# httpd -M

Langue de script

Jetons un coup d'œil à php, qui est souvent utilisé comme application WEB.

# yum install -y php

Le fichier / etc / httpd / conf.d / php.conf est ajouté.

Créez un fichier comme celui ci-dessous et redémarrez Apache pour le voir.

/var/www/html/phpinfo.php


<?php
  phpinfo();
?>

Authentification de l'accès client

Certification BASIC

Pour utiliser l'authentification BASIC, ajoutez des paramètres d'authentification utilisateur à httpd.conf et préparez un fichier de mot de passe dédié.

Directif Explication
AuthType Basic
AuthName Message à afficher dans la boîte de dialogue au moment de l'authentification
AuthUserfile Nom du fichier de mot de passe
AuthGroupfile Nom du fichier de groupe à authentifier
require Utilisateurs accessibles,valid-userSi est spécifié, l'accès est accordé aux utilisateurs qui ont une entrée dans le fichier de mots de passe.

httpd.conf


<Directory "/var/www/html/private-area">
AuthType Basic
AuthName "Please enter your ID and password"
AuthUserfile /etc/httpd/conf/.htpasswd
require valid-user
</Directory>

Utilisez ** htpasswd ** pour définir l'utilisateur et le mot de passe utilisés pour l'authentification.

# htpasswd -c /etc/httpd/conf/htpasswd linuc1
New password: 
Re-type new password: 
Adding password for user linuc

# cat /etc/httpd/conf/.htpasswd
linuc:$apr1$szHx1lmc$PVMPwHwo/7T0bnlbRhAFP0

Pour configurer l'authentification BASIC groupe par groupe, spécifiez le fichier de mot de passe de groupe dans AuthGroupfile.

Le format du fichier de mot de passe est le suivant. Nom du groupe: Nom d'utilisateur 1 Nom d'utilisateur 2 ...

Chaque utilisateur spécifié a un mot de passe défini avec htpasswd.

Dans require, spécifiez le nom du groupe au format suivant. nécessite un nom de groupe de groupe

Certification Digest

Directif Explication
AuthType Digest
AuthName Zone d'authentification
AuthUserfile Nom du fichier de mot de passe
AuthDigestGroupfile Nom du fichier de groupe à authentifier
require Utilisateurs accessibles,valid-userSi est spécifié, l'accès est accordé aux utilisateurs qui ont une entrée dans le fichier de mots de passe.

httpd.conf


<Directory "/var/www/html/secret-area">
AuthType Digest
AuthName "secret-area"
AuthUserfile /etc/httpd/conf/.htdigestfile
require valid-user
</Directory>

Utilisez ** htdigest ** pour créer des utilisateurs et modifier les mots de passe pour l'authentification Digest.

# htdigest -c /etc/httpd/conf/.htdigest secret-area linuc2
Adding password for linuc2 in realm secret-area.
New password: 
Re-type new password: 

# cat /etc/httpd/conf/.htdigest
linuc2:secret-area:2b2b3ade579cc9e0121b4f1df227db6b

Contrôle d'accès basé sur l'hôte

Si vous souhaitez contrôler l'accès par adresse IP, nom d'hôte, nom de domaine, etc., utilisez la directive ** require **. Cette fonctionnalité est fournie par ** authz_host_module **.

Par exemple, pour refuser l'accès à partir de 172.31.0.0/16 et autoriser l'accès à partir d'autres hôtes, spécifiez:

require all granted
require not ip 172.31.0.0/16

Fonction d'hôte virtuel

Vous pouvez gérer plusieurs sites Web sur un hôte.

Hôte virtuel basé sur le nom

Configurez une adresse IP et plusieurs domaines sur un hôte. Décrivez dans la directive ** VirtualHost **. Avec des paramètres DNS appropriés, chaque site Web peut fonctionner indépendamment.

<VirtualHost *:80>
  ServerName web.example.com
  DocumentRoot /var/www/virtual/web

<VirtualHost *:80>
  ServerName www.example.net
  DocumentRoot /var/www/virtual/example
</VirtualHost>

Hôte virtuel basé sur IP

Configurez plusieurs adresses IP et plusieurs domaines sur un hôte. Décrivez dans la directive ** VirtualHost **. Chaque adresse IP doit être spécifiée dans la directive ** Listen **.

Listen 192.168.1.10:80
Listen 192.168.1.11:80

<VirtualHost 192.168.1.10:80>
  ServerName web.example.com
  DocumentRoot /var/www/virtual/web

<VirtualHost 192.168.1.11:80>
  ServerName www.example.net
  DocumentRoot /var/www/virtual/example
</VirtualHost>

Surveillance et maintenance

** mod_status **: Informations sur l'activité du serveur

LoadModule status_module modules/mod_status.so

<Location /server-status>
  SetHandler server-status
</Location>

** mod_info **: informations sur les paramètres du serveur

LoadModule info_module modules/mod_info.so

<Location /server-info>
  SetHandler server-info
</Location>

SSL/TLS##

SSL est pris en charge en utilisant ** mod_ssl **.

Vous devez obtenir le certificat de site auprès de l'autorité de certification.

① Créez une clé publique et une clé de cryptage. (2) Envoyez la clé publique créée à l'autorité de certification (CA) avec les documents certifiant l'identité de l'entreprise utilisatrice. ③ CA émet un certificat et le renvoie. (À l'aide de ce certificat, le serveur Web s'identifie auprès du navigateur Web.) ④ Installez le certificat envoyé sur le serveur Web.

Les certificats de serveur sont émis pour les adresses IP ou les noms de domaine. Ici, nous allons prendre un certificat auto-signé (une méthode de signature d'un certificat par l'autorité de certification, s'utilisant comme sa propre autorité de certification). Dans CentOS, un script appelé CA.sh est préparé dans le répertoire où SSL est installé, alors copiez-le et créez-le de manière interactive.

# cd /etc/pki/tls/misc
# ./CA -newca

Clé privée: / etc / pki / CA / private / cakey.pem Clé publique: / etc / pki / CA / cacert.pem Est créé comme ça.

Créez la clé privée du serveur ** server.key ** requise pour créer un serveur HTTP compatible SSL.

# openssl genrsa -out server.key 2048

Créez une demande d'émission de certificat (CSR) ** server.csr ** qui oblige l'autorité de certification à émettre un certificat.

# openssl -req -new -key server.key -out server.csr

Le certificat signe le fichier de demande d'émission de certificat et crée un certificat de serveur ** server.crt **.

# openssl ca -out server.crt -infiles server.csr

Déplacez la clé privée du serveur et le certificat du serveur dans le répertoire approprié et écrivez les paramètres requis dans httpd.conf.

SSL/Directives relatives à TLS Explication
SSLEngine Efficacité/Invalide
SSLProtocol version
SSLCipherSuite Algorithme cryptographique
SSLCertificateFile Fichier de certificat de serveur
SSLCertificateKeyFile Fichier de clé privée du serveur
SSLCertificateChainFile Fichier de certificat CA intermédiaire
SSLCACertificateFile Fichier d'émission de certificat CA pour l'émission de certificat client
SSLCACertificatePAth Répertoire d'émission de certificats d'autorité de certification pour l'émission de certificats clients
SSLVerifyClient Niveau d'authentification client
LoadModule ssl_module modules/mod_ssl.so
Listen 443 https

<VirtualHost _default_:443>
  ServerName www.example.net:443
  DocumentRoot "/var/www/html"
  ErrorLog logs/ssl_errorlog
  TransferLog logs/ssl_access_log
  LogLevel warn
  SSLEngine on
  SSLProtocol all -SSLv2 -SSLv3
  SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA:!DH
  SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
  SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
</VirtualHost>

fichier journal#

Accéder au fichier journal

/var/log/httpd/access_log

Spécifiez le format avec la directive ** LogFormat ** et Associez le nom du fichier journal au format avec la directive ** CustomLog **.

httpd.conf


LogFormat

CustomLog logs/access_log combined

Fichier journal des erreurs

/var/log/httpd/error_log

Vous pouvez spécifier le niveau de journal à enregistrer avec la directive LogLevel.

httpd.conf


LogLevel

Recommended Posts

Résumons Apache
Résumons brièvement LPIC niveau 1 (102)
Résumons brièvement LPIC niveau 1 (101 éditions)
Résumer Doc2Vec
Résumons le standard de codage Python PEP8 (1)
Résumons le standard de codage Python PEP8 (2)
Résumons ce que vous voulez faire.
Intégrons Django et apache (httpd) sur Mac! !!