Mise en place d'un Serveur Web + Ftp sous Ubuntu en moins de 15 minutes:
A force de monter/casser des VM de test, je me suis fait une petite procédure histoire de gagner du temps.
On part sur une install de base où seul un serveur SSH est installé, le reste se fera manuellement
Configuration d'un serveur Web (Apache Php Mysql) + ftp (Pure Ftpd) Sur une Distribution Linux Ubuntu Server 14.4.xx x64
Edition des sources => Décommenter les adresses des
dépôts (en général les 4 derniers)
sudo nano /etc/apt/sources.list
Mise à jour des dépôts
sudo apt-get update
si erreur GPG taper la commande suivantes
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 16126D3A3E5C1192
sudo apt-get update
Mises à jour
sudo apt-get upgrade
Configuration réseau en IP fixe
sudo nano /etc/network/interfaces
Editer le fichier comme ceci avec les données de l'interface réseau locale,
en tenant compte du fait que les valeurs netmask, gateway et broadcast sont susceptible de varier en fonction de votre configuration:
Si vous n'êtes pas sûr vous pouvez toujours faire un ifconfig
Les DNS sont celles de google, libre à vous d'en mettre d'autres.
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.1.XXX netmask 255.255.255.0 gateway 192.168.1.254 broadcast 192.168.1.255 dns-nameservers 8.8.8.8
relancer l'interface réseau
sudo /etc/init.d/networking restart
il arrive qq fois que cette commande ne reboot pas correctement
l'interface réseau:
il faut alors carrément
rebooter le serveur
sudo reboot
Installation du serveur web
sudo apt-get install apache2 php5 mysql-server libapache2-mod-php5 php5-mysql
Chargez le module rewrite :
sudo a2enmod rewrite
Edition du fichier de configuration Apache
sudo nano /etc/apache2/apache2.conf
rajouter en fin de ficher les lignes suivantes:
Options +FollowSymlinks
RewriteEngine on
Configuration du VirtualHost
sudo nano /etc/apache2/sites-available/000-default.conf
Editer le fichier comme ceci (en remplacant XXX.XXX.XXX.XXX par l'ip ou l'url de votre site)
<VirtualHost XXX.XXX.XXX.XXX:80> ServerName 127.0.0.1 ServerAdmin webmaster@localhost DocumentRoot /var/www/html/mon_projet/web <Directory /var/www/html/mon_projet/web> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> <Location /> RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ /index.php [NC,L] </Location> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Installation de PHP5
sudo add-apt-respository ppa:ondrej/php5
sudo apt-get update
sudo apt-get install php5 php5-mcrypt php5-gd
sudo php5enmod mcrypt
Installation de Apache
sudo apt-get install apache2 libapache2-mod-php5
Installation de Laravel
sudo curl -sS https://getcomposer.org/installer | sudo php
sudo mv composer.phar /usr/local/bin/composer
Création de notre nouveau projet:
cd /var/www/html
sudo composer create-project laravel/laravel mon_projet --prefer-dist
Configuration Apache
sudo chgrp -R www-data /var/www/html/project
sudo chmod -R 775 /var/www/html/project/storage
Aller maintenant dans le répertoire /etc/apache2/sites-available, utiliser la
commande suivante pour créer un fichier de configuration pour notre projet Laravel:
cd /etc/apache2/sites-available
sudo nano laravel.conf
entrer les données suivantes
<VirtualHost *:80> ServerName localhost ServerAdmin webmaster@localhost DocumentRoot /var/www/html/project/public <Directory /var/www/html/project> AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
on renseigne/active le nouveau fichier de configuration:
sudo a2dissite 000-default.conf
sudo a2ensite laravel.conf
sudo a2enmod rewrite
sudo service apache2 restart
sudo apt-get install phpmyadmin
Essayer d'y accéder à l'adresse http://localhost/phpmyadmin. Si la page n'est pas accessible, il faut lier phpmyadmin et votre serveur apache. Essayer de lancer :
sudo ln -s /usr/share/phpmyadmin/ /var/www/html/phpmyadmin
Dans l'éditeur SQL de phpmyadmin, créer également un utilisateur mon_user avec tout les droits sur la base sans mot de passe
CREATE USER 'mon_user'@'127.0.0.1'; GRANT ALL PRIVILEGES ON * . * TO 'mon_user'@'127.0.0.1' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; GRANT ALL PRIVILEGES ON `mon_user\_%` . * TO 'mon_user'@'127.0.0.1'; GRANT ALL PRIVILEGES ON *.* TO 'mon_user'@'%' WITH GRANT OPTION;
Note pour le projet Zend : Ne pas oublier de mettre à jour le fichier application.ini concernant le nom d'utilisateur sur les bases
Configuration du php.ini afin de modifier la taille minimale d'import de fichier : cela sera utile en cas d'import de BDD d'un projet existant:
sudo nano /etc/php5/apache2/php.ini
Dans nano, rechercher (ctrl + W) et modifier les valeurs suivantes:
upload_max_filesize = 100M
memory_limit= 1024M
post_max_size = 100M
Installation de Pure-ftpd
sudo apt-get install pure-ftpd pure-ftpd-common
créer l'utilisateur/groupe système avec lequel le serveur FTP sera lancé:
sudo groupadd ftpgroup
sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser
configuration du serveur ftp
sudo nano /etc/pure-ftpd/conf/PAMAuthentication# => passer la valeur à no
sudo nano /etc/pure-ftpd/conf/DontResolve# => passer la valeur à yes
Créer un lien symbolique pour activer l'authentification des utilisateurs virtuels :
cd /etc/pure-ftpd/auth/
sudo ln -s ../conf/PureDB 50puredb
Création d'un utilisateur ftp:
Si on est pas dans le cas d'un projet web mais simplement d'un espace de stockage, on commence par lui créer un répertoire
sudo mkdir /home/mon/user/folder
... Sinon, on est evidemment dans le cas de notre répertoire racine de notre projet Web :
sudo chown -R ftpuser:ftpgroup /var/www/html/mon_user_name sudo pure-pw useradd mon_user_name -u ftpuser -g ftpgroup -d /var/www/html/mon_projet
Ces commandes vont avoir comme buts de créer un répertoire local puis de renseigner le fichier de
configuration de Pure-ftp: /etc/pure-ftpd/pureftpd.passwd:
sudo cat /etc/pure-ftpd/pureftpd.passwd
On transforme ce fichier dans un format sécurisé et lisible par le serveur FTP (/etc/pure-ftpd/pureftpd.pdb):
sudo pure-pw mkdb
Configurer le message affiché lors de la connexion des utilisateurs
sudo nano /etc/motd.pure-ftpd
=> Bienvenue sur mon serveur FTP!!!
Ajouter le chemin de ce fichier dans le fichier /etc/pure-ftpd/conf/FortunesFile:
sudo nano /etc/pure-ftpd/conf/FortunesFile
/etc/motd.pure-ftpd
Enfin on relance le serveur pour que la configuration soit prise en compte:
sudo /etc/init.d/pure-ftpd restart
Installation de l'interface cURL permettant par exemple de créer ou modifier une ressource (contrairement à wget), il peut ainsi être utilisé en tant que client REST pour faire du WebService
sudo apt-get install php5-curl
Installation de FreeTDS et de PHP MS SQL extension afin de pouvoir connecter une BDD M$SQL
Plus d'infos sur https://davejamesmiller.com/blog/connecting-php-to-microsoft-sql-server-on-linux
sudo apt-get install freetds-common freetds-bin unixodbc php5-sybase
Fix afin de régler le soucis des types de variables ntext répondant au message d'erreur:
"Unicode data in a
Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier"
Dans le fichier de configuration freetds.conf
sudo nano /etc/freetds/freetds.conf
rajouter tout en fin de fichier:
[192.168.x.xxx] host = 192.168.x.xxx port = 1433 tds version = 8.0
relancer le serveur web
sudo /etc/init.d/apache2 restart
Utilitaire lftp qui nous permettra facilement d'uploader des fichiers sur un ftp distant via par exemple un crontab
sudo apt-get install lftp
Lancement de l'edition de notre cron :
sudo crontab -e
si premier lancement, choix 2 (nano) de l'éditeur
ensuite déterminer les tâches planifiées:
#----- sauvegarde des donnees de la base, tout les jours a 3h00 du matin ----------------- 00 3 * * * mysqldump -uroot -pMotDePasse --opt ma_bdd > /var/www/html/mon_projet/dump/ma_bdd.sql # ------ envoi sur le ftp distant 15 minutes plus tard: ------------------------- 15 3 * * * lftp ftp://UserFtp:MotDePasse@XXX.XXX.XXX.XXX -e "put -O /dossier_de_sauvegarde/ /var/www/html/mon_projet/dump/ma_bdd.sql; quit" #-----------------------------------------------------------------------------------------------------------------------------------------------
Pour consulter le crontab en mode lecture uniquement
sudo crontab -l
1. import de la clé sur le depot de mariadb
sudo apt-get install software-properties-common sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db sudo add-apt-repository 'deb http://ftp.osuosl.org/pub/mariadb/repo/10.0/ubuntu trusty main'
2. rajout des entrees a la configuration
sudo nano /etc/apt/sources.list
3. Ecrire à la fin du fichier
deb http://ftp.osuosl.org/pub/mariadb/repo/10.0/ubuntu precise main deb-src http://ftp.osuosl.org/pub/mariadb/repo/10.0/ubuntu precise main
4. essayer de commencer le telechargement
sudo apt-get update
5. si NO PUBKEY
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3E5C1192
6. installation
sudo apt-get update sudo apt-get install mariadb-server
7. lancement
mysql -u root -p