Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ceci est une ancienne révision du document !
est un serveur Web. Historiquement, l'acronyme « LAMP » fait référence aux quatre composantes d'un tel serveur Web :
apt-get update && apt-get dist-upgrade
apt-get install build-essential
apt-get install apache2
Dans ce wiki : la prise en main d'apache2 qui est le serveur web !
cd /var/www/
mkdir hypathie.net
chown -R hypathie:www-data hypathie.net/
chmod -R 750 hypathie.net/
vim hypathie.net/index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>hypathie.net _ index.html</title> </head> <body> <h1>Bienvenue sur le site hypathie ! </h1> </body> </html>
Pour régler définitivement les problèmes d'encodage, au cas où l'on oublie la balise <meta charset=“UTF-8”>
du head
, on édite le fichier /etc/apache2/conf-availables/charset.conf
vim /etc/apache2/conf-available/charset.conf
Et on dé-commente la ligne :
AddDefaultCharset UTF-8
service apache2 reload
cd /etc/apache2/sites-available
vim hypathie.net.conf
<VirtualHost *:80> ServerName hypathie.net ServerAdmin webmaster@localhost DocumentRoot /var/www/hypathie.net/ <Directory /var/www/hypathie.net> require all granted AllowOverride All </Directory> LogLevel info ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Options -Indexes:: -Indexes stops people from being able to go to a directory and see files listed in there. Instead they see a Forbidden error. This can stops users view all your files in your /images directory, for instance.
ErrorLog, CustomLog: Create log files specifically for your domain, so they don't get mixed in with traffic / errors from other sites running on the server.
a2ensite hypathie.net.conf
service apache2 reload
Le domaine n'a pas à être loué forcément, mais le nom du site pour Apache2.
vim /etc/hosts
127.0.0.1 localhost 127.0.1.1 db 127.0.1.1 hypathie.net # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
db
: c'est le hostname de la machine sur laquelle tourne apache2 et pour laquelle on vient de modifier le fichier /etc/hosts
.http://localhost
/var/www/html/index.html
On désactive ce site :
cd /etc/apache2/sites-enabled/ && a2dissite 000-default.conf && service apache2 reload
less /etc/hosts
127.0.0.1 localhost 127.0.1.1 db 127.0.1.1 hypathie.net # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Par exemple, on a créé les dossiers essai
et test
dans le dossier /var/www/
, avec dans chacun d'eux un dossier public
qui contient une page web d'accueil.
ls /var/www/
essai html hypathie.net test
Comme plus haut :
vim essai.conf
<VirtualHost *:80> ServerName essai.local ServerAdmin webmaster@localhost DocumentRoot /var/www/essai/public <Directory /var/www/essai/public/> require all granted AllowOverride All </Directory> LogLevel info ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
vim test.conf
<VirtualHost *:80> ServerName test.local ServerAdmin webmaster@localhost DocumentRoot /var/www/test/public <Directory /var/www/test/public/> require all granted AllowOverride All </Directory> LogLevel info ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
a2ensite essai.conf
a2ensite test.conf
service apache2 reload
On configure le fichier hosts des ordinateurs distants du réseau local susceptibles de se connecter aux sites test.local
et essai.local
:
Par exemple pour la machine d'ip : 192.168.0.14, qui se connectera sur le serveur d'ip 192.168.0.17 sur lequel tourne apache2 :
vim /etc/hosts
127.0.0.1 localhost 127.0.1.1 debian 192.168.0.17 db 192.168.0.17 test.local 192.168.0.17 essai.local # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
debian
: c'est le hostname de la machine cliente d'ip 192.168.0.14 qui va visiter les sites de la machine d'ip 192.168.0.17 sur laquelle tourne apache2 ;db
: c'est la hostname de la machine qui fait office de serveur qui a l'ip 192.168.0.17 et sur laquelle tourne apache2.test.local
: c'est le servername
, le nom du serveur virtuel crée par apache2 et qui va permettre au client (distant) de demander à apache2 de visualiser ce siteessai.local
: idem
On édite le fichier hosts qui se trouve : C:\Windows\System32\drivers\etc
On y ajoute l'ip du serveur debian qui se trouve sur le sous-réseau :
# localhost name resolution is handled within DNS itself. 127.0.0.1 localhost ::1 localhost 192.168.0.17 db 192.168.0.17 test.local 192.168.0.17 essai.local
essai.local
test.local
http://ip_du_routeur_de_son_fai/essai.local
Pour ce faire, il faut configurer son routeur pour rediriger les connexions extérieures qui viennent toc-toquer sur sa box-machin, dans cet exemple vers l'ip 192.168.0.17 de la machine sur laquelle tourne apache2.
mkdir Web/
chown -R hypathie:www-data /home/hypathie/Web/
hypathie
par l'utilisateur voulu !
chmod -R 750 /home/hypathie/Web/
cd /var/www/ && mv essai/ ~/Web/
www
, sinon en root !
ln -s ~/Web/essai/ /var/www/essai
Il n'y a rien de plus à faire, ni à modifier le virtualhost ni à recharger apache.
On donne le chemin du dossier de son répertoire personnel dans le virtualhost.
<VirtualHost *:80> ServerName test.local ServerAdmin webmaster@localhost DocumentRoot /home/user/dossier-racine-du-site/ <Directory /home/user/dossier-racine-du-site/ require all granted AllowOverride All </Directory> LogLevel info ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Sur Jessie inutile d'activer le module avec a2enmod.
apt-cache search php5
* On installe les paquets nécessaires.
apt-get install php5 libapache2-mod-php5
apt-cache search php7
apt install php-pear php7.4 libapache2-mod-php7.4
Par défaut, le code php est interprété s'il se trouve dans un fichier nommé avec l'extension .php, par exemple index.php.
Pour utiliser du code php comme ci-dessous dans un fichier nommé avec l'extension html, par exemple index.html :
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>test1.net _ index.html</title> </head> <body> <h1>Bienvenue sur le site de test de /var/www/test1.net/index.php ! </h1> <?php phpinfo(); ?> </body> </html>
il faut modifier le fichier /etc/apache2/mods-enabled/php7.4.conf en ajoutant :
<FilesMatch ".+\.html$"> SetHandler application/x-httpd-php </FilesMatch>
chown -R utilisateur:www-data /chemin/du/site/
chmod -R 750 /home/utilisateur/site/
Si le droit d'exécution est nécessaire pour traverser les sous-dossiers du site, quand ceux-ci contiendront les fichiers de code source, mieux vaut retirer récursivement depuis le dossier racine du site le droit d'exécution sur tous les fichiers.
Pour ce faire :
cd /chemin/dossier/site_web && find . -type f -exec chmod 640 {} \;
/var/www/
www
et à ses sous dossiers à l'utilisateur courant du système et au groupe www-data, ainsi que les droits 755 avec chmod./etc/apache2/site-available
. Lorsqu'on crée un fichier on lui donne l'extension .conf
sur Jessie.a2ensite le-site
. On peut aussi crée manuellement un lien symbolique avec la commande linux lnindex.html
ou index.php
) se modifie à la dernière ligne :vim /etc/apache2/apache2.conf
DirectoryIndex index.html default.html index.php default.php
index.php
) doit se trouver dans le dossier déclaré dans la configuration du virtualhost dans la balise Directory
, par exemple :[...] <Directory /var/www/essai/public/> [...]
ls /etc/apache2/mods-available/
ls /etc/apache2/mods-enabled/
Sur Jessie
service apache2 reload
{start|stop|graceful-stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean}
Sur Buster (debian10)
systemctl reload apache2
a2ensite le_site
a2dissite le_site
a2enmod nomModule
a2dismod nomModule
Pour installer un module php en fonction de sa version de php
php -v
Puis
apt-get install php[version-here]-sqlite3
apt install apache2
apt install php7.2 libapache2-mod-php7.2 php7.2-common php7.2-sqlite3 php7.2-mysql php7.2-gmp php7.2-curl php7.2-intl php7.2-mbstring php7.2-xmlrpc php7.2-soap php7.2-ldap php7.2-gd php7.2-bcmath php7.2-xml php7.2-cli php7.2-zip
/etc/php/7.[version]/apache2/php.ini
file_uploads = On allow_url_fopen = On short_open_tag = On memory_limit = 256M upload_max_filesize = 100M max_execution_time = 360
cd /etc/apache2/sites-available && vim TestSymfony
apt install php7.2 libapache2-mod-php7.2 php7.2-common php7.2-sqlite3 php7.2-mysql php7.2-gmp php7.2-curl php7.2-intl php7.2-mbstring php7.2-xmlrpc php7.2-soap php7.2-ldap php7.2-gd php7.2-bcmath php7.2-xml php7.2-cli php7.2-zip
<VirtualHost *:80> ServerName TestSymfony DocumentRoot /var/www/TestSymfony/public/ <Directory /var/www/TestSymfony/public/> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from All </Directory> ErrorLog /var/log/apache2/project_error.log CustomLog /var/log/apache2/projec_access.log combined </VirtualHost>
chown -R user:www-data /var/www/TestSymfony/ chmod -R 750 /var/www/TestSymfony/ cd /var/www/TestSymfony find . -type f -exec chmod 640 {} \;
a2ensite TestSymfony && systemctl restart apache2.service
systemctl [stop|start|enable] apache2.service
mkdir InstallSymfonyComposer cd InstallSymfonyComposer/ wget https://getcomposer.org/installer php installer cp composer.phar composer.phar_copy sudo mv composer.phar /usr/local/bin/composer sudo chmod +x /usr/local/bin/composer cd /var/www/
composer create-project symfony/skeleton TestSymfony
Pour créer une application plus légère comme un microservice, une app console ou une API dans une certaine version du framework :
composer create-project symfony/skeleton TestSymfony [^version_voulue]
ou
symfony new my_project [--version=lts|stable|4.4]
Pour créer une application web traditionnelle :
composer create-project symfony/website-skeleton TestSymfony
ou
symfony new --full my_project [--version=lts|stable|4.4]