GNU/Linux >> Tutoriales Linux >  >> Cent OS

El servidor perfecto CentOS 7.6 con Apache, PHP 7.2, Postfix, Dovecot, Pure-FTPD, BIND e ISPConfig 3.1

Este tutorial muestra la instalación de ISPConfig 3.1 en un servidor CentOS 7.6 (64 bits). ISPConfig es un panel de control de alojamiento web que le permite configurar los siguientes servicios a través de un navegador web:servidor web Apache, PHP 7.2, servidor de correo Postfix, MySQL, servidor de nombres BIND, PureFTPd, SpamAssassin, ClamAV, Mailman y muchos más.

1 Requisitos

Para instalar dicho sistema, necesitará lo siguiente:

  • Un sistema de servidor mínimo Centos 7.6. Puede ser un servidor instalado desde cero como se describe en nuestro tutorial de servidor mínimo de Centos 7 o un servidor virtual o un servidor raíz de una empresa de hospedaje que tenga instalada una configuración mínima de Centos 7.6.
  • Una conexión rápida a Internet.

2 Nota Preliminar

En este tutorial, utilizo el nombre de host server1.example.com con la dirección IP 192.168.0.100 y la puerta de enlace 192.168.0.1. Estas configuraciones pueden diferir para usted, por lo que debe reemplazarlas cuando corresponda.

3 Prepare el servidor

Establecer la distribución del teclado

En caso de que la distribución del teclado del servidor no coincida con su teclado, puede cambiar al teclado correcto (en mi caso, "de" para una distribución de teclado alemana, con el comando localectl:

localectl set-keymap de

Para obtener una lista de todos los mapas de teclas disponibles, ejecute:

localectl list-keymaps

Quiero instalar ISPConfig al final de este tutorial, ISPConfig se envía con el script de firewall Bastille que usaré como firewall, por lo tanto, deshabilito el firewall predeterminado de CentOS ahora. Por supuesto, puede dejar activado el cortafuegos de CentOS y configurarlo según sus necesidades (pero luego no debe usar ningún otro cortafuegos, ya que lo más probable es que interfiera con el cortafuegos de CentOS).

Corre...

yum -y install net-tools
systemctl stop firewalld.service
systemctl disable firewalld.service

para detener y deshabilitar el firewall de CentOS. Está bien si obtiene errores aquí, esto solo indica que el firewall no se instaló.

Entonces deberías comprobar que el cortafuegos realmente ha sido deshabilitado. Para hacerlo, ejecute el comando:

iptables -L

La salida debería verse así:

[[email protected] ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination

O use el comando firewall-cmd:

firewall-cmd --state
[[email protected] ~]# firewall-cmd --state
not running
[[email protected] ~]#

Ahora instalaré el editor de configuración de red y el editor basado en shell "nano" que usaré en los próximos pasos para editar los archivos de configuración:

yum -y install nano wget NetworkManager-tui yum-utils

Si no configuró su tarjeta de red durante la instalación, puede hacerlo ahora. Corre...

nmtui

... y vaya a Editar una conexión:

Seleccione su interfaz de red:

Luego complete los detalles de su red:deshabilite DHCP y complete una dirección IP estática, una máscara de red, su puerta de enlace y uno o dos servidores de nombres, luego presione Aceptar:

A continuación, seleccione Aceptar para confirmar los cambios que realizó en la configuración de red

y Salir para cerrar la herramienta de configuración de red nmtui.

Deberías correr

ifconfig

ahora para verificar si el instalador obtuvo su dirección IP correcta:

[[email protected] ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.100 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::20c:29ff:fee5:5b47 prefixlen 64 scopeid 0x20<link>
inet6 2003:c2:9731:a445:20c:29ff:fee5:5b47 prefixlen 64 scopeid 0x0<global>
ether 00:0c:29:e5:5b:47 txqueuelen 1000 (Ethernet)
RX packets 227784 bytes 317714901 (302.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 205574 bytes 23608521 (22.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[[email protected] ~]#

Si su tarjeta de red no aparece allí, entonces no estará habilitada en el arranque. En este caso, abra el archivo /etc/sysconfig/network-scripts/ifcfg-eth0

nano /etc/sysconfig/network-scripts/ifcfg-ens33

y establezca ONBOOT en sí:

[...]
ONBOOT=yes
[...]

y reinicie el servidor.

Verifique su /etc/resolv.conf si enumera todos los servidores de nombres que configuró previamente:

cat /etc/resolv.conf

Si faltan servidores de nombres, ejecute

nmtui

y vuelva a agregar los servidores de nombres que faltan.

Ahora, a la configuración...

Ajuste de /etc/hosts y /etc/hostname

A continuación, editaremos /etc/hosts. Haz que se vea así:

nano /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.0.100 server1.example.com server1

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

Establezca el nombre de host en el archivo /etc/hostname. El archivo debe contener el nombre de dominio completo (por ejemplo, server1.example.com en mi caso) y no solo el nombre corto como "server1". Abra el archivo con el editor nano:

nano /etc/hostname

Y establezca el nombre de host en el archivo.

server1.example.com

Guarde el archivo y salga de nano.

Establecer SELinux en permisivo

SELinux es una extensión de seguridad de CentOS que debería proporcionar seguridad extendida. ISPConfig no se envía con un conjunto de reglas de SELinux, por lo tanto, lo configuré como permisivo (esto es obligatorio si desea instalar ISPConfig más adelante).

Edite /etc/selinux/config y establezca SELINUX=permisivo:

nano /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Posteriormente debemos reiniciar el sistema:

reboot

4 Habilite repositorios adicionales e instale algún software

Primero, importamos las claves GPG para los paquetes de software:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Luego habilitamos el repositorio EPEL en nuestro sistema CentOS ya que muchos de los paquetes que vamos a instalar en el transcurso de este tutorial no están disponibles en el repositorio oficial de CentOS 7:

yum -y install epel-release

Luego actualizamos nuestros paquetes existentes en el sistema:

yum -y update

Ahora instalamos algunos paquetes de software que se necesitarán más adelante:

yum -y groupinstall 'Development Tools'

5 Cuota

(Si ha elegido un esquema de particionamiento diferente al que yo elegí, debe ajustar este capítulo para que la cuota se aplique a las particiones donde lo necesita).

Para instalar la cuota, ejecutamos este comando:

yum -y install quota

Ahora verificamos si la cuota ya está habilitada para el sistema de archivos donde se almacenan el sitio web (/var/www) y los datos de maildir (var/vmail). En esta configuración de ejemplo, tengo una partición raíz grande, así que busco ' / ':

mount | grep ' / '
[[email protected] ~]# mount | grep ' / '
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)
[[email protected] ~]#

Si tiene una partición /var separada, use:

mount | grep ' /var '

en cambio. Si la línea contiene la palabra "noquota ", luego continúe con los siguientes pasos para habilitar la cuota.

Habilitar cuota en la partición / (raíz)

Normalmente habilitaría la cuota en el archivo /etc/fstab, pero si el sistema de archivos es el sistema de archivos raíz "/", entonces la cuota debe habilitarse mediante un parámetro de arranque del kernel de Linux.

Edite el archivo de configuración de grub:

nano /etc/default/grub

busque la línea que comienza con GRUB_CMDLINE_LINUX y agregue rootflags=uquota,gquota a los parámetros de la línea de comandos para que la línea resultante se vea así:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet rootflags=uquota,gquota"

y aplique los cambios ejecutando el siguiente comando.

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg_bak
grub2-mkconfig -o /boot/grub2/grub.cfg

y reinicie el servidor.

reboot

Ahora comprueba si la cuota está habilitada:

mount | grep ' / '
[[email protected] ~]# mount | grep ' / '
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)
[[email protected] ~]#

Cuando la cuota está activa, podemos ver "usrquota,grpquota " en la lista de opciones de montaje.

Habilitar cuota en una partición /var separada

Si tiene una partición /var separada, edite /etc/fstab y agregue ,uquota,gquota a la partición / (/dev/mapper/centos-var):

nano /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Sep 21 16:33:45 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 1 1
/dev/mapper/centos-var /var xfs defaults,uquota,gquota 1 2
UUID=9ac06939-7e43-4efd-957a-486775edd7b4 /boot xfs defaults 1 3
/dev/mapper/centos-swap swap swap defaults 0 0

Entonces corre

mount -o remount /var
quotacheck -avugm
quotaon -avug

para habilitar la cuota. Cuando reciba un error de que no hay ninguna partición con la cuota habilitada, reinicie el servidor antes de continuar.

6 Instalar Apache, PHP, MySQL y phpMyAdmin

Habilite el repositorio de Remi para obtener versiones de PHP más nuevas:

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php72

Podemos instalar los paquetes necesarios con un solo comando:

yum -y install ntp httpd mod_ssl mariadb-server php php-mysql php-mbstring phpmyadmin

Para garantizar que el servidor no pueda ser atacado a través de la vulnerabilidad HTTPOXY, deshabilitaremos el encabezado HTTP_PROXY en apache globalmente.

Agregue la regla de encabezado de apache al final del archivo httpd.conf:

echo "RequestHeader unset Proxy early" >> /etc/httpd/conf/httpd.conf

Y reinicie httpd para aplicar el cambio de configuración.

service httpd restart

Cent OS
  1. El servidor perfecto:Ubuntu 17.10 (Artful Aardvark) con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3.1

  2. El servidor perfecto:Ubuntu 16.04 (Nginx, MySQL, PHP, Postfix, BIND, Dovecot, Pure-FTPD e ISPConfig 3.1)

  3. El servidor perfecto:Ubuntu 16.04 (Xenial Xerus) con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3.1

  4. El servidor perfecto:Ubuntu 18.04 (Bionic Beaver) con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3.1

  5. El servidor perfecto:Ubuntu 18.04 (Nginx, MySQL, PHP, Postfix, BIND, Dovecot, Pure-FTPD e ISPConfig 3.1)

El servidor perfecto CentOS 7.3 con Apache, Postfix, Dovecot, Pure-FTPD, BIND e ISPConfig 3.1

El servidor perfecto CentOS 7.4 con Apache, Postfix, Dovecot, Pure-FTPD, BIND e ISPConfig 3.1

El servidor perfecto:Ubuntu 20.04 con Apache, PHP, MariaDB, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3.2

El servidor perfecto CentOS 8 con Apache, PHP, Postfix, Dovecot, Pure-FTPD, BIND e ISPConfig 3.2

El servidor perfecto:Debian 9 (Stretch) con Apache, BIND, Dovecot, PureFTPD e ISPConfig 3.1

El servidor perfecto:Ubuntu 14.10 con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig