web-dev-qa-db-fra.com

Génération et installation manuelle d'Apache 2.4.x sur RHEL 6.4

Système d'exploitation: Red Hat Enterprise Linux Server version 6.4 (Santiago)

L'installation yum actuelle d'Apache sur ce système d'exploitation est 2.2.15. J'ai besoin de la dernière branche 2.4.x, je l'ai donc installée manuellement. J'ai noté la procédure complète que j'ai entreprise, y compris le déballage apr et apr-util sources dans les sources Apache au préalable, mais je suppose que ce qui suit est la partie la plus importante de la procédure:

GATHER LATEST Apache AND APR
$ cd ~
$ mkdir Apache-src
$ cd Apache-src
$ wget http://Apache.insync.za.net//httpd/httpd-2.4.6.tar.gz
$ tar xvf httpd-2.4.6.tar.gz
$ cd httpd-2.4.6
$ cd srclib
$ wget http://Apache.insync.za.net//apr/apr-1.5.0.tar.gz
$ tar -xvzf apr-1.5.0.tar.gz
$ mv apr-1.5.0 apr
$ rm -f apr-1.5.0.tar.gz
$ wget http://Apache.insync.za.net//apr/apr-util-1.5.3.tar.gz
$ tar -xvzf apr-util-1.5.3.tar.gz 
$ mv apr-util-1.5.3 apr-util

INSTALL DEVEL PACKAGES
yum update --skip-broken (There is a dependency issue with the latest Chrome needing the latest libstdc++, which is not available for RHEL and CentOS)
yum install apr-devel
yum install apr-util-devel
yum install pcre-devel

INSTALL
$ cd ~/Apache-src/httpd-2.4.6
$ ./configure --prefix=/etc/httpd --enable-mods-shared="all" --enable-rewrite --with-included-apr
$ make
$ make install

REMARQUE: au moment de l'exécution de ce qui précède, /etc/http est vide.

Cela semble avoir bien fonctionné jusqu'à ce que j'essaie de démarrer le service httpd. Il semble que chaque module inclut dans httpd.conf échoue avec un message similaire à celui-ci pour mod_rewrite:

httpd: Syntax error on line 148 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_rewrite.so into server: /etc/httpd/modules/mod_rewrite.so: undefined symbol: ap_global_mutex_create

J'ai parcouru la liste des modules activés dans httpd.conf et les a commentés un par un. Tous déclenchent une erreur comme ci-dessus, cependant le "symbole non défini: valeur" est souvent différent (donc pas toujours ap_global_mutex_create).

Suis-je en train de manquer une étape? Bien que je trouve une partie de cette erreur sur Google, la plupart des solutions se concentrent sur le .so les fichiers ne sont pas accessibles. Cela ne semble pas être un problème ici et les modules sont présents dans /etc/http/modules.

REMARQUE: au moment de l'exécution de ce qui précède, /etc/http est vide.

17
Aaryn

Vous avez la bonne procédure mais elle est incomplète.

Après l'installation, vous devez activer SSL dans httpd.conf. et générer le fichier server.crt et server.key. Ci-dessous la procédure complète:

1. Télécharger Apache

cd /usr/src
wget http://www.Apache.org/dist/httpd/httpd-2.4.23.tar.gz
tar xvf httpd-2.4.23.tar.gz

2. Télécharger APR et APR-Util

cd /usr/src
wget -c http://mirror.cogentco.com/pub/Apache/apr/apr-1.5.2.tar.gz
wget -c http://mirror.cogentco.com/pub/Apache/apr/apr-util-1.5.4.tar.gz
tar xvf apr-1.5.2.tar.gz
tar xvf apr-util-1.5.4.tar.gz

Maintenant, mettez l'APR et l'APR-Util que vous avez téléchargés dans vos fichiers source Apache.

mv apr-1.5.2 /usr/src/httpd-2.4.23/srclib/apr
mv apr-util-1.5.4 /usr/src/httpd-2.4.23/srclib/apr-util

3.Compiler

cd /usr/src/httpd-2.4.23
./configure --enable-so --enable-ssl --with-mpm=prefork --with-included-apr --with-included-apr-util
make
make install

Comme vous pouvez le voir dans le ./configure commande nous spécifions les options de ligne de commande pour inclure apr et apr-utils.

4. Activer SSL dans httpd.conf

Le fichier de configuration Apache httpd.conf se trouve sous /usr/local/Apache2/conf.

nano /usr/local/Apache2/conf/httpd.conf

Décommentez la ligne httpd-ssl.conf Inclure et la ligne LoadModule ssl_module ligne dans le fichier /usr/local/Apache2/conf/httpd.conf:

# LoadModule ssl_module modules/mod_ssl.so
# Include conf/extra/httpd-ssl.conf

Affichez le httpd-ssl.conf pour revoir toutes les configurations SSL par défaut.
Dans la plupart des cas, vous n'avez pas besoin de modifier quoi que ce soit dans ce fichier.

nano /usr/local/Apache2/conf/extra/httpd-ssl.conf

Le certificat SSL et la clé sont requis avant de démarrer Apache.
Le fichier server.crt et server.key mentionné dans les besoins httpd-ssl.conf à créer avant d'aller de l'avant.

cd /usr/local/Apache2/conf/extra
egrep 'server.crt|server.key' httpd-ssl.conf

SSLCertificateFile "/usr/local/Apache2/conf/server.crt"
SSLCertificateKeyFile "/usr/local/Apache2/conf/server.key"

5. Générez le fichier server.crt et server.key

Tout d'abord, générez le server.key en utilisant openssl.

cd /usr/src
openssl genrsa -des3 -out server.key 1024

La commande ci-dessus vous demandera le mot de passe. N'oubliez pas ce mot de passe. Vous en aurez besoin lors du démarrage ultérieur d'Apache.

Ensuite, générez un fichier de demande de certificat ( server.csr) à l'aide du fichier server.key ci-dessus.

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

Enfin, générez un certificat ssl auto-signé ( server.crt) en utilisant le server.key et server.csr ci-dessus fichier.

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Copiez le fichier server.key et server.crt vers l'emplacement approprié du répertoire de configuration Apache.

cp server.key /usr/local/Apache2/conf/
cp server.crt /usr/local/Apache2/conf/

6. Démarrez Apache

/usr/local/Apache2/bin/apachectl start

Si vous obtenez le message d'erreur ci-dessous:

AH00526: Syntax error on line 51 of /usr/local/Apache2/conf/extra/httpd-ssl.conf:
Invalid command 'SSLCipherSuite', perhaps misspelled or defined by a module not included in the server configuration

Assurez-vous de décommenter la ligne ci-dessous dans httpd.conf:

vi /usr/local/Apache2/conf/httpd.conf

# LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Enfin, cela vous invitera à saisir le mot de passe de votre clé privée avant de démarrer Apache. Vérifiez que le processus Apache httpd s'exécute en arrière-plan.

ps -ef | grep http

Vous devriez voir quelque chose comme ça:

root    29529 1     0 13:08 ? 00:00:00 /usr/local/Apache2/bin/httpd -k start
antoine 29530 29529 0 13:08 ? 00:00:00 /usr/local/Apache2/bin/httpd -k start
antoine 29531 29529 0 13:08 ? 00:00:00 /usr/local/Apache2/bin/httpd -k start
antoine 29532 29529 0 13:08 ? 00:00:00 /usr/local/Apache2/bin/httpd -k start
root    29616 18260 0 13:09 pts/0 00:00:00 grep http

Par défaut, Apache SSL s'exécute sur le port 443. Ouvrez un navigateur Web et vérifiez que vous pouvez accéder à votre Apache en utilisant https: // {votre-adresse-ip}

J'espère que cette aide, sinon je vous conseille d'aller voir: http://jasonpowell42.wordpress.com/2013/04/05/install-Apache-2-4-4-on-centos-6-4 /

27
Antoine Subit
baprutil-1.la /usr/src/httpd-2.4.27/srclib/apr/libapr-1.la -lrt -lcrypt -lpthread -ldl -lcrypt
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_GetErrorCode'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_SetEntityDeclHandler'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_ParserCreate'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_SetCharacterDataHandler'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_ParserFree'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_SetUserData'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_StopParser'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_Parse'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_ErrorString'
/usr/src/httpd-2.4.27/srclib/apr-util/.libs/libaprutil-1.so: undefined reference to `XML_SetElementHandler'
collect2: error: ld returned 1 exit status
make[2]: *** [htpasswd] Error 1
make[2]: Leaving directory `/usr/src/httpd-2.4.27/support'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/src/httpd-2.4.27/support'
make: *** [all-recursive] Error 1

Cette erreur est reçue à l'étape make si --with-included-apr-util n'est pas spécifié dans ./configure

5
Capricorn