PHP Como FPM

Basado en una instalación Debian.
Instalación en modo servidor usando: ISO

El paquete final quedaría:

  • Apache: V.2.4.10
  • MySQL: V.5.5.54
  • PHP: V.7.1.4-1+0
  • PureFTPd: V.1.0.36-3.2 + MySQL
  • WebMin: V.1.831
  • Bind: 9.9.5-9

Opciones necesarias durante la instalación:

Archivo de configuración automatizada:

lamp-fpm.sh
#!/bin/bash
 
#### Configurando la red ####
cp /etc/network/interfaces /etc/network/interfaces-Orig
echo "# Configuración de dirección IP fija para el interfaz eth0
auto eth0
iface eth0 inet static
address 192.168.0.150
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.3
" > /etc/network/interfaces
echo "# Configuración de servidores DNS
nameserver 8.8.8.8" >> /etc/resolv.conf
/etc/init.d/networking restart
rm /etc/network/interfaces-Orig
 
#### Modificar repositorios y Actualizacion inicial ####
cp /etc/apt/sources.list /etc/apt/sources.list_user
var1="main"
var2="main contrib non-free"
sed "s|$var1|$var2|" /etc/apt/sources.list_user > /etc/apt/sources.list
rm /etc/apt/sources.list_user
###########
## PHP 7 ##
###########
apt-get install -y apt-transport-https lsb-release ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" >> /etc/apt/sources.list.d/php.list
apt-get update
apt-get upgrade
####
 
#### Instalando Servidores ####
### PHP 7.1 (FPM) ###
apt-get install -y php7.1 php7.1-common libapache2-mod-fastcgi php7.1-curl php7.1-cgi php7.1-fpm php7.1-gd php7.1-mcrypt php7.1-mysql php7.1-xml php7.1-zip php7.1-mbstring
a2enmod actions fastcgi alias
a2enmod proxy_fcgi setenvif
a2enconf php7.1-fpm
### /PHP 7.1 (FPM) ###
 
 
#### MYSQL ####
apt-get install -y mysql-server mysql-client 
apt-get install -y perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python 
apt-get install -y pure-ftpd-mysql 
cp /etc/mysql/my.cnf /etc/mysql/my.cnf-Orig
sed 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf-Orig > /etc/mysql/my.cnf
/etc/init.d/mysql restart
rm /etc/mysql/my.cnf-Orig
 
#### Creando el directorio ####
mkdir /home/Servidor
mkdir /home/Servidor/www
 
 
#### Instalando WEBMIN ####
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.831_all.deb
dpkg --install webmin_1.831_all.deb
rm webmin_1.831_all.deb
 
#### Preparando el FTP ####
# Creando el usuario
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd" -g ftpgroup ftpuser
# Asignando el usuario a las carpetas
chown ftpuser /home/Servidor/www
chgrp ftpgroup /home/Servidor/www
 
# Creando las bases de datos
echo "CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;
USE pureftpd;
CREATE TABLE ftpd (
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
Password varchar(64) NOT NULL default '',
Uid varchar(11) NOT NULL default '-1',
Gid varchar(11) NOT NULL default '-1',
Dir varchar(128) NOT NULL default '',
ULBandwidth smallint(5) NOT NULL default '0',
DLBandwidth smallint(5) NOT NULL default '0',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) ENGINE=MyISAM;
INSERT INTO ftpd VALUES ('usuario', '1', MD5('123456789'), '2001', '2001', '/home/Servidor/www', '0', '0', '', '*', '0', '0'); 
" > ConsultaFTP.txt
mysql -u root -p < ConsultaFTP.txt
rm ConsultaFTP.txt
 
#Creando La configuracion
echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir
cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
cat /dev/null > /etc/pure-ftpd/db/mysql.conf
echo 'MYSQLSocket      /var/run/mysqld/mysqld.sock
#MYSQLServer     localhost
#MYSQLPort       3306
MYSQLUser       pureftpd
MYSQLPassword   ftpdpass
MYSQLDatabase   pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt      md5
MYSQLGetPW      SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID     SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID     SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir     SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTASZ   SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS   SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
'> /etc/pure-ftpd/db/mysql.conf
 
#Reiniciando el servicio
/etc/init.d/openbsd-inetd restart
/etc/init.d/pure-ftpd-mysql restart
 
 
#### Ajustando archivos APACHE ####
var1="/var/www/"
var2="/home/Servidor/www"
cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default.conf-orig
# Cambiamos la ruta
sed "s|$var1|$var2|" /etc/apache2/apache2.conf_orig > /etc/apache2/apache2.conf
var1="/var/www/html"
sed "s|$var1|$var2|" /etc/apache2/sites-available/000-default.conf-orig > /etc/apache2/sites-available/000-default.conf
echo "<?php phpinfo();?>" > /home/Servidor/www/index.php
echo "ServerName localhost" >> /etc/apache2/conf-available/httpd.conf
rm /etc/apache2/apache2.conf_orig
rm /etc/apache2/sites-available/000-default.conf-orig
# Cambiamos el usuario al nuevo del ftp.
var1="user = www-data"
var2="user = ftpuser"
cp /etc/php/7.1/fpm/pool.d/www.conf /etc/php/7.1/fpm/pool.d/www.conf_user
sed "s|$var1|$var2|" /etc/php/7.1/fpm/pool.d/www.conf_user > /etc/php/7.1/fpm/pool.d/www.conf
var1="group = www-data"
var2="group = ftpgroup"
cp /etc/php/7.1/fpm/pool.d/www.conf /etc/php/7.1/fpm/pool.d/www.conf_user
sed "s|$var1|$var2|" /etc/php/7.1/fpm/pool.d/www.conf_user > /etc/php/7.1/fpm/pool.d/www.conf
service php7.1-fpm restart
 
#### Correccion SSL3 ####
var1="SSLProtocol all"
var2="SSLProtocol all -SSLv2 -SSLv3"
cp /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-available/ssl.conf_orig
sed "s|$var1|$var2|" /etc/apache2/mods-available/ssl.conf_orig > /etc/apache2/mods-available/ssl.conf
 
#Reiniciando el servicio
service apache2 restart
 
#### Instalando BIND9 ####
apt-get install -y bind9
 
#Instalando el descompresor
apt-get install -y unzip

Le damos permisos de ejecución:

chmod +x lamp.sh

Lo ejecutamos:

./lamp.sh

Aviso: El usuario para el FTP ha de cambiarse en el archivo, en el caso de no hacerlo por defecto es “usuario” y la contraseña “123456789”.

NOTA: Las IPS aquí mostradas son de ejemplo, cada uno debe ajustarlas a sus necesidades.
Última actualización a fecha: 16-04-2017


Navegación

Software de programación

Ayuda al servidor