Tout d'abord, j'ai essayé de créer un serveur de fichiers en utilisant Samba comme serveur pouvant être construit sur un petit PC, qu'il s'agisse d'un PC d'occasion ou d'une tarte aux râpes, en partageant des fichiers PC de gestion privée et de petites et moyennes entreprises, mais cette fois Construire sur un serveur Web avec Apache (⑅ • ᴗ • ⑅)
Il est tout aussi simple de configurer Apache pour n'importe quelle distribution, et vous aurez la version dont vous avez besoin (les commandes de package standard varient en fonction de la version de cette distribution).
Cependant, si vous compilez tous les packages à partir de la source, vous rechercherez toutes les bibliothèques principales, donc seules celles que vous souhaitez absolument réparer et exécuter, comme Apache et PHP, compileront la source et ce qui est nécessaire pour faire Pris en charge par les commandes de package standard telles que dnf et apt
CentOS8.1
# vi /etc/selinux/config
/etc/selinux/config
SELINUX=disabled
CentOS8.1
# reboot
Les autres packages requis sont installés à l'aide des commandes de package standard de la distribution (dnf, apt, etc.) et n'ont pas besoin d'être téléchargés individuellement.
Pour le téléchargement, vous pouvez accéder au site officiel, le télécharger à partir de là et le transférer par FTP, ou vous pouvez l'obtenir avec wget si vous connaissez l'URL du fichier à télécharger, mais la méthode d'acquisition est omise.
CentOS8.1
# dnf -y install make cmake tar bzip2
openSUSE15.1
# zypper -n install make cmake tar bzip2
CentOS8.1
# dnf -y install gcc gcc-c++
openSUSE15.1
# zypper -n install gcc gcc-c++
J'ai installé le zlib avec l'emplacement par défaut.
# cd [Répertoire où se trouvent les fichiers d'archive zlib]
# tar zxvf zlib-1.2.11.tar.gz
# cd zlib-1.2.11/
# ./configure
# make
# make install
En installant des bibliothèques Perl ou SSL, vous pouvez obtenir toutes les fonctionnalités dont vous avez besoin pour Apache. Remarque: Si vous ne l'exécutez pas même si c'est gênant, vous obtiendrez une erreur indiquant qu'il n'y a pas de paquet et la compilation sera arrêtée (´ • ω • ̥`)
CentOS8.1
# dnf -y install ncurses-devel perl libaio libaio-devel perl-Data-Dumper expat-devel pcre pcre-devel openssl-devel
openSUSE15.1
# zypper -n install ncurses-devel perl libaio1 libaio-devel perl-Data-Dump libexpat-devel pcre pcre-devel libopenssl-devel
APR installe la bibliothèque dans /opt/apr-1.7.0 et APR-Util installe la bibliothèque dans /opt/apt-util-1.6.1
# cd [APR 1.7.Répertoire où se trouvent 0 fichiers d'archive]
# tar xvzf apr-1.7.0.tar.gz
# cd apr-1.7.0/
# ./configure --prefix=/opt/apr-1.7.0
# make
# make install
# cd [APR-Util 1.6.Répertoire où se trouve 1 fichier d'archive]
# tar xvzf apr-util-1.6.1.tar.gz
# cd apr-util-1.6.1/
# ./configure --prefix=/opt/apr-util-1.6.1 --with-apr=/opt/apr-1.7.0
# make
# make install
Eh bien, voici la production. Ce travail a pris un certain temps (probablement 30 minutes sur mon PC Hyper-V)
# cd [Répertoire où se trouve Apache httpd]
# tar xvzf httpd-2.4.43.tar.gz
# cd httpd-2.4.43/
# ./configure --with-apr=/opt/apr-1.7.0 --with-apr-util=/opt/apr-util-1.6.1 --enable-so --enable-ssl --enable-mods-shared=all --enable-mpms-shared=all
Par conséquent, en tant que spécification de configuration, spécifiez le chemin spécifié dans l'installation pour les chemins APR et APR-Util. Ici, APR a été installé dans "/opt/apr-1.7.0" et APR-Util a été installé dans "/opt/apr-util-1.6.1", et je l'ai utilisé.
J'ai également activé SSL.
J'ai installé tous les packages requis ci-dessus et j'ai pu configurer sans erreur (\ * ´꒳` \ *) Maintenant, la compilation et l'installation essentielles. Si vous obtenez une erreur, Apache est déjà plein de fonctionnalités, il est donc difficile de savoir où l'erreur s'est produite (˙꒳ ˙ᐢ).
# make
# make install
Si vous pouvez compiler sans erreur, l'installation est terminée ♪ (\ * ˘︶˘ \ *) ...: \ * ♡
Une fois installé, l'étape suivante est le fichier de configuration (˙꒳ ˙ᐢ) Lorsque vous installez Apache avec la compilation source, Apache lui-même est installé dans / usr / local / apache2. Le fichier de configuration est stocké dans / usr / local / apache2 / conf /, alors configurez-y l'environnement Apache.
[Paramètres de base d'Apache]
# vi /usr/local/apache2/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
…
#ServerName www.example.com:80
ServerName localhost:80 ← Ajoutez cette ligne directement sous ↑
…
DocumentRoot "/usr/local/apache2/htdocs"
<Directory "/usr/local/apache2/htdocs">
…
Options Indexes FollowSymLinks
↑ Au début "#Commentez avec ""
(Ne pas autoriser l'accès inutile aux répertoires qui ne sont pas publiés en tant que pages)
…
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#LoadModule ssl_module modules/mod_ssl.so
Recherchez les deux lignes ci-dessus, et les deux sont "#Et chargez la bibliothèque so
…
#Include conf/extra/httpd-ssl.conf
↑ "#Et conf/extra/httpd-ssl.Permet de lire la conf
…
[SSL Apache(https)paramètres de]
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf
/usr/local/apache2/conf/extra/httpd-ssl.conf
…
SSLCertificateFile "/usr/local/apache2/conf/server.crt"
…
SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"
…
Ici, nous avons décidé que l'emplacement clé requis pour https est situé dans / usr / local / apache2 / conf /, qui est le même que le fichier de configuration.
À l'origine, le certificat a été créé via l'autorité de certification racine, mais ici nous donnerons la priorité à la méthode de rendre Apache compatible avec https **, donc nous n'aborderons pas l'autorité émettrice du certificat. Ainsi, lorsque vous y accédez, vous recevez un avertissement de sécurité [. .. .. ]
# cd /usr/local/apache2/conf/
# openssl genrsa -out server.key 2048
# openssl req -new -key server.key -out server.csr
Dans le processus de création d'une clé SSL, il existe également un dialogue pour entrer le profil de l'organisation, mais vous pouvez créer le certificat sans problème en entrant ce qui suit
python
# openssl req -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:<what entry=La préfecture dans laquelle vous vivez en exemple=Kanagawa>
Locality Name (eg, city) [Default City]:<what entry=Exemple de communes où vous vivez=Miura>
Organization Name (eg, company) [Default Company Ltd]:<what entry=Nom de l'organisation arbitraire>
Organizational Unit Name (eg, section) []:<what entry=Toute unité organisationnelle>
Common Name (eg, your name or your server's hostname) []:<what entry=Exemple de nom de domaine=kazumi-jam.chips.jp>
Email Address []:<what entry=Exemple d'adresse [email protected]>
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<what entry=Approprié pour le moment>
An optional company name []:<what entry=Vide Entrez pour le moment>
Je veux le coder en couleur d'une manière facile à comprendre, j'ai donc ajouté "que dois-je entrer" dans le style XML (\ * ˘︶˘ \ *) Le style de balise XML "<what entry =…" est , Que saisir "exemple =…" est un exemple d'entrée. En fait, peu importe s'il y a un blanc.
Exemple:
State or Province Name (full name) []: Kanagawa Pref.
Locality Name (eg, city) [Default City]: Miura city
Après avoir créé server.csr, créez un ensemble de certificats.
# openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
Sans l'option "-days", elle n'est valable que pendant 90 jours et est inutile à d'autres fins que l'expérimentation. Donc ici, il est défini comme "-days 3650" pendant 10 ans. Même ainsi, le certificat lui-même n'a pas été émis par une institution approuvée par le certificat Oreore ... (\ * ˘ᗜ˘ \ *;)
Maintenant que vous avez créé le certificat SSL, modifiez les autorisations afin que personne d'autre ne puisse y toucher.
# chmod 600 /usr/local/apache2/conf/server.crt
# chmod 600 /usr/local/apache2/conf/server.csr
# chmod 600 /usr/local/apache2/conf/server.key
# ls -l /usr/local/apache2/conf/
108 au total
drwxr-xr-x 2 racine racine 313 24 juin 13:08 extra
-rw-r--r--1 racine racine 19316 24 juin 13:07 httpd.conf
-rw-r--r--1 racine racine 13064 24 juin 13:03 magic
-rw-r--r--1 racine racine 60847 24 juin 13:03 mime.types
drwxr-xr-x 3 racine racine 37 24 juin 13:03 original
-rw-------1 racine racine 1379 24 juin 13:06 server.crt
-rw-------1 racine racine 1119 24 juin 13:04 server.csr
-rw-------1 racine racine 1675 24 juin 13:03 server.key
Avec la commande "ls -l", ** 3 fichiers liés aux clés de certificat tels que "server.crt" (les 3 dernières lignes de la liste ci-dessus) appartiennent à root et les permissions sont "rw -------" (600) ”** Confirmez que c'est le cas. C'est une faille de sécurité lorsque le contenu de la clé privée est visible par les autres utilisateurs. ..
Vous disposez de tous les paramètres d'environnement et des clés nécessaires pour Apache. J'aimerais donc pouvoir le démarrer. Puisque le script de démarrage est Systemd, créez-le dans / etc / systemd / system
# cd /etc/systemd/system
# vi httpd.service
httpd.service
[Unit]
Description=Apache
[Service]
Type=forking
ExecStart=/usr/local/apache2/bin/apachectl start
ExecStop=/usr/local/apache2/bin/apachectl stop
[Install]
WantedBy=multi-user.target
Le script Systemd n'est pas expliqué en détail ici, mais comme le fichier de démarrage d'Apache lui-même se trouve dans / usr / local / apache2 / bin, vous pouvez démarrer Apache en exécutant la commande "apachectl" pour y démarrer le service Apache. Et peut être arrêté. De plus, dans le cas d'Apache, le processus du serveur Web est exécuté comme un sous-processus (bref, lorsqu'il est démarré et exécuté sur un certain terminal, il sera à l'état "en cours d'exécution" et les autres opérations ne seront pas possibles. , Vous pouvez revenir à l'entrée de commande et exécuter les autres opérations telles quelles. Comprenez-vous ??), spécifiez donc forking pour Type.
Ensuite, dans les paramètres de firewalld, ** les ports 80 (http) et 443 (httpd) ** sont acceptés. En principe, ** le serveur et le client appartiennent au réseau 192.168.1.0/24 **, donc l'accès depuis un autre extérieur n'est pas accepté, alors autorisez-le avec la règle riche comme suit.
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="80" protocol="tcp" accept'
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="443" protocol="tcp" accept'
# firewall-cmd --reload
Commençons. Commencez toujours par activer Activer et confirmez que l'état est «Actif» et «En cours d'exécution».
# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd
Si cela ressemble à l'image ci-dessus, le démarrage est réussi. Du côté client Windows, entrez https: // [Adresse IP du serveur Linux] / dans le navigateur pour confirmer.
Ici, le serveur Web Linux est 192.168.1.18, alors allez sur https://192.168.1.18. Bien sûr, le certificat n'est pas émis par une institution de confiance, vous obtiendrez donc une erreur de confidentialité ;; dans ce cas, sélectionnez "Accéder tel quel" pour continuer (bien que cela se comporte différemment dans Chrome et Firefox).
Réussi! !! (˶˙ᵕ˙˶)
Présentez PHP et publiez les bases du serveur d'applications Web
Recommended Posts