
Carlos Frias
1
Ro
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
¡Usuario popular!
Suscripción a IA
Hola que tal,
Con este mini tutorial por tu propia cuenta podrás preparar cualquier servidor con única y exclusivamente lo necesario, hablamos de PHP 5.6, PHP 7.0, Nginx, Antivirus ClamAV, Antimalware Maldetect, MariaDB (MySQL) y Vsftpd haciendo uso de los repositorios Remi, Epel y Base de y para CentOS 7.x. Así que, sin mucho palabrerío, comenzamos.
Requisitos mínimos:
Ocupamos un servidor no importa si es un dedicado, si es un virtual server o un cloud server, esto básicamente aplica para todos, lo importante es que tu servidor tenga como mínimo 1GB de memoria RAM disponible, 10GB de disco duro, 10Mbps de Internet dedicado y 1 core al menos de 1 Ghz. Con esto podemos comenzar nuestra aventura del aprendizaje en tan solo unos próximos y sencillos pasos, puedes igual hacer esto con alguna computadora vieja y no precisamente un servidor.
Es recomendado tener:
Una IP fija (puedes hacer uso de un hostname gratuito de NoIP si lo estás haciendo desde la comodidad de tu casa e instalarte el client para que vaya dando el update cada vez que reinicies el router, abrir puertos en tu router y apuntar el DMZ a la ip local de tu computador/servidor).
Ocupamos instalar lo siguiente:
CentOS 7.x x64 Minimal, es recomendable dejar que la distribución auto particione el disco duro principal de la máquina a no ser que seas alguien experimentado con la suficiente experiencia de distribuir este tipo de acciones, estableces tu zona horaria, creas tu usuario personalizado con permisos de administrador y nos vamos a la pantalla negra al terminar la instalación.
* En caso de servidores es posible que simplemente ocupes conectarte por consola usando un cliente SSH como Putty, descargalo desde aqui.
Ahi vamos:
1) Vamos y borramos los repositorios que no vamos a utilizar
* En mi caso suelo dejar siempre los siguientes; CentOS-Base.repo y epel.repo. Si epel no está instalado, ocuparas instalarlo mediante un simple yum install -y epel-release, después de esto, ocuparas activar los repositorios que restaron borrando el epel-testing.repo, acá todo es producción.
2) Activando o asegurándonos de que los repositorios base y epel estén activos sin ningún otro adicional
* Me gusta el editor nano porque es más cómodo que vi, yo lo instalo haciendo uso de yum install -y nano y luego vamos a editar los únicos dos repositorios que hemos dejado como existentes el cual deben de ser CentOS-Base.repo y epel.repo a no ser que tu hayas puesto alguno adicional.
- CentOS-Base.repo
- epel.repo
Epel necesita que instales el yum-plugin-priorities, lo puedes hacer mediante yum install -y yum-plugin-priorities así de sencillo.
* Tengo una maña de correr yum remove -y deltarpm* y yum remove -y yum-plugin-local, creeme que no te sirven para nada.
3) Actualizando yum, instalando el repositorio Remi, el package Memcached, el Antivirus ClamAV y cosas importantes que ocuparemos luego
Actualizando
Nota: Si tu proveedor te ha instalado una versión antigua de CentOS 7.x, seguro te será necesario que vuelvas a repetir esta linea.
Instalando REMI
Dejando sólo lo necesario
- remi-php70.repo
- remi.repo
* Borramos lo que no vamos a ocupar haciendo uso de rm remi-php71.repo remi-php72.repo remi-php54.repo remi-safe.repo.
Re-cargando paquetes
Instalando componentes
Breve explicación: Con el anterior comando, vamos a instalar varias librerías que ocuparan nuestros sitios web o determinados plugins, quizás no se usen todas, pero siempre es bueno tener instaladas todas las que anteriormente he escrito, aparte, adicionalmente se desactiva el selinux y el firewall por default del sistema para prevenir conflictos, bloqueos de puertos inesperados y cualquier detalle no deseado de lugar.
Instalando PHP 5.6
Instalando PHP 7.0
Instalando NGINX y MariaDB
nano /etc/yum.repos.d/nginx.repo y pega el siguiente código.
nano /etc/yum.repos.d/maria.repo y pega el siguiente código.
* Actualizamos los repositorios con yum update -y e instalamos con yum install -y nginx MariaDB-server MariaDB-client php-mysql
Configurando PHP 5.6 y PHP 7.0
nano /etc/opt/remi/php70/php-fpm.conf
nano /opt/remi/php56/root/etc/php-fpm.conf
nano /php70/www.conf
nano /php56/www.conf
Entramos a apache y nobody al group de nginx
* Ahora bien, nuestro usuario es www en este caso, es recomendable que le pongamos una clave haciendo uso de passwd www
Activando servicios
Configurando NGINX
Limpiando basura... cd /etc/nginx;rm -rf conf.d nginx.conf
nano /etc/nginx/nginx.conf
Arreglando algunas cosas y finalizando con NGINX
nano /etc/nginx/conf.d/www.conf
nano /etc/nginx/conf.d/status.conf
Acorde al puerto de la v. de PHP que tenemos instalado, es que vamos a modificar en fastcgi_pass, por default como nos podemos dar cuenta el index del contenido se está situado dentro del /home/www/web, para crear esta carpeta y comenzar a alojar contenido podemos simplemente correr mkdir /home/www/web;chown www:www -R /home/www y darle permisos con chmod 0755 -R /home/www, recuerda como dato importante que a medidas vayas agregando sitios ocuparas ir variando los .conf dentro de /php56 y /php70 acorde a la versión de PHP y desde luego irlos propagando por el mismo NGINX en /etc/nginx/conf.d.
Si vas a subir Wordpress te bastará con adicionar después del location /; la simple línea de try_files $uri $uri/ /index.php?$args; para que funcionen las URL amigables del CMS, toda la documentación la puedes encontrar aquí.
Finalizamos esta etapa con service nginx restart
4) Configurando Memcached, Instalando Maldetect, Actualizando ClamAV y concluyendo con VSFTPD
nano /etc/sysconfig/memcached
Lo ajustas a tu gusto y luego service memcached restart;chkconfig memcached on
* Si gustas instalar redis lo haces con un simple yum install -y redis;chkconfig redis on;service redis restart
Instalando Maldetect y Actualizando tanto Maldet como ClamAV
Para ponerlo a trabajar en tiempo real basta con instalar inotify mediante yum install inotify* -y y seguido correr maldet -m /home, para escanear tan simple como sencillo solo tienes que correr maldet -a /home, entonces él hará un escaneo completo de tu directorio home (suele tardar bastante). Para que maldet automáticamente mueva amenazas o las detecte correctamente ocuparas configurar el conf.maldet ubicado en el directorio /usr/local/maldetect.
Instalando y configurando VSFTPD
nano /etc/vsftpd/vsftpd.conf
En la línea listen_port=5656 podrás apuntar al puerto que gustes, para poderte conectar a FTP ocuparas establecer o tener establecida un password a tu usuario www o el que hayas creado, seguido de esto un cliente como el Filezilla o de tu preferencia, ya con esto tu aventura empieza 😛7:
Espero que este tutorial te haya sido de su agrado, he tratado de hacerlo lo más transparente posible, es más que suficiente para comenzar a mover tus proyectos a tus propios servidores ya sean dedicados, instancias o inclusive local (de contar con buena conexión a internet y experiencia en seguridad linux), solo tendrán que afinar un pal de detalles con mysql_secure_installation para darle una contraseña al root del MariaDB, subir en alguna carpeta el phpMyAdmin para manejar gráficamente las bases de datos, entender un poco de php-fpm, del directorio conf.d y finalmente instalar algún firewall de preferencia que no sea el default.
Cualquier crítica o comentario es bien recibida, solo brindará ayuda y asistiré con lo comentado en el tutorial más solo voy a responder a quienes comenten en este tema, si ocupas ayuda profesional, personal o cualquier cosa que necesites resolver a fondo puedes contar conmigo y mis servicios a través de este tema.
Regards,
Con este mini tutorial por tu propia cuenta podrás preparar cualquier servidor con única y exclusivamente lo necesario, hablamos de PHP 5.6, PHP 7.0, Nginx, Antivirus ClamAV, Antimalware Maldetect, MariaDB (MySQL) y Vsftpd haciendo uso de los repositorios Remi, Epel y Base de y para CentOS 7.x. Así que, sin mucho palabrerío, comenzamos.
Requisitos mínimos:
Ocupamos un servidor no importa si es un dedicado, si es un virtual server o un cloud server, esto básicamente aplica para todos, lo importante es que tu servidor tenga como mínimo 1GB de memoria RAM disponible, 10GB de disco duro, 10Mbps de Internet dedicado y 1 core al menos de 1 Ghz. Con esto podemos comenzar nuestra aventura del aprendizaje en tan solo unos próximos y sencillos pasos, puedes igual hacer esto con alguna computadora vieja y no precisamente un servidor.
Es recomendado tener:
Una IP fija (puedes hacer uso de un hostname gratuito de NoIP si lo estás haciendo desde la comodidad de tu casa e instalarte el client para que vaya dando el update cada vez que reinicies el router, abrir puertos en tu router y apuntar el DMZ a la ip local de tu computador/servidor).
Ocupamos instalar lo siguiente:
CentOS 7.x x64 Minimal, es recomendable dejar que la distribución auto particione el disco duro principal de la máquina a no ser que seas alguien experimentado con la suficiente experiencia de distribuir este tipo de acciones, estableces tu zona horaria, creas tu usuario personalizado con permisos de administrador y nos vamos a la pantalla negra al terminar la instalación.
* En caso de servidores es posible que simplemente ocupes conectarte por consola usando un cliente SSH como Putty, descargalo desde aqui.
Ahi vamos:
1) Vamos y borramos los repositorios que no vamos a utilizar
Insertar CODE, HTML o PHP:
cd /etc/yum.repos.d;rm CentOS-Media.repo CentOS-CR.repo CentOS-Sources.repo google-cloud.repo CentOS-Debuginfo.repo CentOS-Vault.repo CentOS-fasttrack.repo epel-testing.repo
* En mi caso suelo dejar siempre los siguientes; CentOS-Base.repo y epel.repo. Si epel no está instalado, ocuparas instalarlo mediante un simple yum install -y epel-release, después de esto, ocuparas activar los repositorios que restaron borrando el epel-testing.repo, acá todo es producción.
2) Activando o asegurándonos de que los repositorios base y epel estén activos sin ningún otro adicional
* Me gusta el editor nano porque es más cómodo que vi, yo lo instalo haciendo uso de yum install -y nano y luego vamos a editar los únicos dos repositorios que hemos dejado como existentes el cual deben de ser CentOS-Base.repo y epel.repo a no ser que tu hayas puesto alguno adicional.
- CentOS-Base.repo
Insertar CODE, HTML o PHP:
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
- epel.repo
Insertar CODE, HTML o PHP:
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Epel necesita que instales el yum-plugin-priorities, lo puedes hacer mediante yum install -y yum-plugin-priorities así de sencillo.
* Tengo una maña de correr yum remove -y deltarpm* y yum remove -y yum-plugin-local, creeme que no te sirven para nada.
3) Actualizando yum, instalando el repositorio Remi, el package Memcached, el Antivirus ClamAV y cosas importantes que ocuparemos luego
Actualizando
Insertar CODE, HTML o PHP:
cd;yum clean all;yum upgrade -y;yum autoremove -y;rm -rf /etc/yum.repos.d/*.rpmnew
Nota: Si tu proveedor te ha instalado una versión antigua de CentOS 7.x, seguro te será necesario que vuelvas a repetir esta linea.
Insertar CODE, HTML o PHP:
cd /etc/yum.repos.d;rm CentOS-Media.repo CentOS-CR.repo CentOS-Sources.repo google-cloud.repo CentOS-Debuginfo.repo CentOS-Vault.repo CentOS-fasttrack.repo epel-testing.repo
Instalando REMI
Insertar CODE, HTML o PHP:
cd /tmp;yum -y install sudo wget;wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm;sudo rpm -Uvh remi-release-7*.rpm;yum update -y
Dejando sólo lo necesario
- remi-php70.repo
Insertar CODE, HTML o PHP:
[remi-php70]
name=Remi's PHP 7.0 RPM repository for Enterprise Linux 7 - $basearch
mirrorlist=http://rpms.remirepo.net/enterprise/7/php70/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
- remi.repo
Insertar CODE, HTML o PHP:
[remi]
name=Remi's RPM repository for Enterprise Linux 7 - $basearch
mirrorlist=http://rpms.remirepo.net/enterprise/7/remi/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
[remi-php56]
name=Remi's PHP 5.6 RPM repository for Enterprise Linux 7 - $basearch
mirrorlist=http://rpms.remirepo.net/enterprise/7/php56/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
* Borramos lo que no vamos a ocupar haciendo uso de rm remi-php71.repo remi-php72.repo remi-php54.repo remi-safe.repo.
Re-cargando paquetes
Insertar CODE, HTML o PHP:
yum clean all;rm -rf /var/cache/yum;yum upgrade -y
Instalando componentes
Insertar CODE, HTML o PHP:
yum groupinstall -y "SNMP Support" "Legacy UNIX Compatibility" "Development Tools" "Compatibility Libraries";yum -y install mesa-libGL-devel mesa-libGLU-devel libXi-devel libXmu-devel freeglut-devel SDL-devel alsa-lib-devel freetype-devel giflib gsm gsm-devel imlib2 imlib2-devel libICE-devel libSM-devel libX11-devel libXau-devel libXdmcp-devel libXext-devel libXrandr-devel libXrender-devel libXt-devel libid3tag libogg-devel libvorbis-devel mesa-libGL-devel mesa-libGLU-devel xorg-x11-proto-devel zlib-devel libtheora libtheora-devel glibc gcc gcc-c++ autoconf automake libtool subversion ncurses-devel libdc1394 libdc1394-devel yasm nasm libmcrypt libmcrypt-devel libpq* libc-client-devel curl* *curl curl-devel openssl* libcurl* bzip2* bzip* libx* curl* png* jpeg* psmisc* memcached memcached-devel libmemcached libmemcached-devel* inotify* clamav clamav-data clamav-devel clamav-filesystem clamav-lib clamav-scanner clamav-scanner-systemd clamav-server clamav-server-systemd clamav-unofficial-sigs clamav-update;yum remove -y selinux-policy* firewall*;systemctl set-default multi-user.target;chkconfig iptables off;chkconfig ip6tables off;chkconfig ipset off
Breve explicación: Con el anterior comando, vamos a instalar varias librerías que ocuparan nuestros sitios web o determinados plugins, quizás no se usen todas, pero siempre es bueno tener instaladas todas las que anteriormente he escrito, aparte, adicionalmente se desactiva el selinux y el firewall por default del sistema para prevenir conflictos, bloqueos de puertos inesperados y cualquier detalle no deseado de lugar.
Instalando PHP 5.6
Insertar CODE, HTML o PHP:
yum install -y php56-php php56-php-bcmath php56-php-cli php56-php-common php56-php-dba php56-php-devel php56-php-enchant php56-php-fpm php56-php-gd php56-php-gmp php56-php-imap php56-php-interbase php56-php-intl php56-php-ioncube-loader php56-php-ldap php56-php-litespeed php56-php-lz4 php56-php-magickwand* php56-php-mbstring php56-php-mcrypt php56-php-mysqlnd php56-php-odbc php56-php-opcache php56-php-pdo php56-php-pear php56-php-pecl-env php56-php-pecl-geoip php56-php-pecl-gnupg php56-php-pecl-igbinary php56-php-pecl-igbinary-devel php56-php-pecl-imagick php56-php-pecl-imagick-devel php56-php-pecl-inotify php56-php-pecl-json* php56-php-pecl-lzf php56-php-pecl-mailparse php56-php-pecl-memcache php56-php-pecl-memcached php56-php-pecl-msgpack php56-php-pecl-msgpack-devel php56-php-pecl-mysqlnd* php56-php-mysqlnd* php56-php-pecl-newt php56-php-pecl-redis php56-php-pecl-scrypt php56-php-pecl-sqlite* php56-php-sqlite* php56-php-pecl-uploadprogress php56-php-pecl-xmldiff php56-php-pecl-xmldiff-devel php56-php-pecl-yaml php56-php-pecl-zip php56-php-phpiredis* php56-php-process php56-php-pspell php56-php-snmp php56-php-soap php56-php-tidy php56-php-xml php56-php-xmlrpc php56-runtime
Instalando PHP 7.0
Insertar CODE, HTML o PHP:
yum install -y php70-php php70-php-bcmath php70-php-cli php70-php-common php70-php-dba php70-php-devel php70-php-enchant php70-php-fpm php70-php-gd php70-php-gmp php70-php-imap php70-php-interbase php70-php-intl php70-php-ioncube-loader php70-php-ldap php70-php-litespeed php70-php-lz4 php70-php-magickwand* php70-php-mbstring php70-php-mcrypt php70-php-mysqlnd php70-php-odbc php70-php-opcache php70-php-pdo php70-php-pear php70-php-pecl-env php70-php-pecl-geoip php70-php-pecl-gnupg php70-php-pecl-igbinary php70-php-pecl-igbinary-devel php70-php-pecl-imagick php70-php-pecl-imagick-devel php70-php-pecl-inotify php70-php-pecl-json* php70-php-pecl-lzf php70-php-pecl-mailparse php70-php-pecl-memcache php70-php-pecl-memcached php70-php-pecl-msgpack php70-php-pecl-msgpack-devel php70-php-pecl-mysqlnd* php70-php-mysqlnd* php70-php-pecl-newt php70-php-pecl-redis php70-php-pecl-scrypt php70-php-pecl-sqlite* php70-php-sqlite* php70-php-pecl-uploadprogress php70-php-pecl-xmldiff php70-php-pecl-xmldiff-devel php70-php-pecl-yaml php70-php-pecl-zip php70-php-phpiredis* php70-php-process php70-php-pspell php70-php-snmp php70-php-soap php70-php-tidy php70-php-xml php70-php-xmlrpc php70-runtime php-mysqlnd mlocate;updatedb;chkconfig httpd off;service httpd stop
Instalando NGINX y MariaDB
nano /etc/yum.repos.d/nginx.repo y pega el siguiente código.
Insertar CODE, HTML o PHP:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/x86_64/
gpgkey=http://nginx.org/keys/nginx_signing.key
gpgcheck=1
enabled=1
nano /etc/yum.repos.d/maria.repo y pega el siguiente código.
Insertar CODE, HTML o PHP:
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled=1
* Actualizamos los repositorios con yum update -y e instalamos con yum install -y nginx MariaDB-server MariaDB-client php-mysql
Configurando PHP 5.6 y PHP 7.0
Insertar CODE, HTML o PHP:
cd /;mkdir php70 php56;chmod 7777 php70 php56;rm -rf /etc/opt/remi/php70/php-fpm.conf /opt/remi/php56/root/etc/php-fpm.conf
nano /etc/opt/remi/php70/php-fpm.conf
Insertar CODE, HTML o PHP:
include=/php70/*.conf
[global]
pid = /php70/php-fpm.pid
error_log = /php70/error.log
daemonize = yes
nano /opt/remi/php56/root/etc/php-fpm.conf
Insertar CODE, HTML o PHP:
include=/php56/*.conf
[global]
pid = /php56/php-fpm.pid
error_log = /php56/error.log
daemonize = yes
nano /php70/www.conf
Insertar CODE, HTML o PHP:
[www]
listen = 127.0.0.1:7000
user = www
group = www
pm = dynamic
pm.max_children = 50
pm.start_servers = 3
pm.min_spare_servers = 3
pm.max_spare_servers = 12
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
nano /php56/www.conf
Insertar CODE, HTML o PHP:
[www]
listen = 127.0.0.1:5600
user = www
group = www
pm = dynamic
pm.max_children = 50
pm.start_servers = 3
pm.min_spare_servers = 3
pm.max_spare_servers = 12
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Entramos a apache y nobody al group de nginx
Insertar CODE, HTML o PHP:
usergroup add nginx;usermod -G nginx apache;usermod -G nginx nobody;useradd www;usermod -G nginx www
* Ahora bien, nuestro usuario es www en este caso, es recomendable que le pongamos una clave haciendo uso de passwd www
Activando servicios
Insertar CODE, HTML o PHP:
chkconfig nginx on;chkconfig mariadb on;chkconfig php56-php-fpm on;chkconfig php70-php-fpm on;service nginx restart;service mariadb restart;service php56-php-fpm restart;service php70-php-fpm restart
Configurando NGINX
Limpiando basura... cd /etc/nginx;rm -rf conf.d nginx.conf
nano /etc/nginx/nginx.conf
Insertar CODE, HTML o PHP:
user nginx;
worker_processes auto;
worker_rlimit_nofile 65535;
error_log /var/log/nginx/error.log crit;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
use epoll;
multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
client_header_timeout 1m;
client_body_timeout 1m;
client_header_buffer_size 2k;
client_body_buffer_size 256k;
client_max_body_size 256m;
large_client_header_buffers 4 8k;
send_timeout 30;
keepalive_timeout 60 60;
reset_timedout_connection on;
server_tokens off;
server_name_in_redirect off;
server_names_hash_max_size 512;
server_names_hash_bucket_size 512;
log_format main '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
log_format bytes '$body_bytes_sent';
#access_log /var/log/nginx/access.log main;
access_log off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
gzip on;
gzip_comp_level 9;
gzip_min_length 512;
gzip_buffers 8 64k;
gzip_types text/plain text/css text/javascript text/js text/xml application/json application/javascript application/x-javascript application/xml application/xml+rss application/x-font-ttf image/svg+xml font/opentype;
gzip_proxied any;
gzip_disable "MSIE [1-6]\.";
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
set_real_ip_from 199.27.128.0/21;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
real_ip_header CF-Connecting-IP;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
proxy_cache_path /var/cache/nginx levels=2 keys_zone=cache:10m inactive=60m max_size=1024m;
proxy_cache_key "$host$request_uri $cookie_user";
proxy_temp_path /var/cache/nginx/temp;
proxy_ignore_headers Expires Cache-Control;
proxy_cache_use_stale error timeout invalid_header http_502;
proxy_cache_valid any 1d;
map $http_cookie $no_cache {
default 0;
~SESS 1;
~wordpress_logged_in 1;
}
open_file_cache max=10000 inactive=30s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
include /etc/nginx/conf.d/*.conf;
}
Arreglando algunas cosas y finalizando con NGINX
Insertar CODE, HTML o PHP:
cd /etc/nginx;mkdir conf.d;chmod 7777 -R /var/cache /opt/remi/php56/root/var/lib/php /opt/remi/php70/root/usr/include/php
nano /etc/nginx/conf.d/www.conf
Insertar CODE, HTML o PHP:
server {
listen *:80;
server_name _;
autoindex on;
root /home/www/web;
index index.php index.html index.htm;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
expires max;
}
location ~ [^/]\.php(/|$) {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass 127.0.0.1:5600;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
}
location ~* "/\.(htaccess|htpasswd)$" {
deny all;
return 404;
}
}
nano /etc/nginx/conf.d/status.conf
Insertar CODE, HTML o PHP:
server {
listen *:81 default;
server_name _;
server_name_in_redirect off;
location / {
stub_status on;
access_log off;
}
}
Acorde al puerto de la v. de PHP que tenemos instalado, es que vamos a modificar en fastcgi_pass, por default como nos podemos dar cuenta el index del contenido se está situado dentro del /home/www/web, para crear esta carpeta y comenzar a alojar contenido podemos simplemente correr mkdir /home/www/web;chown www:www -R /home/www y darle permisos con chmod 0755 -R /home/www, recuerda como dato importante que a medidas vayas agregando sitios ocuparas ir variando los .conf dentro de /php56 y /php70 acorde a la versión de PHP y desde luego irlos propagando por el mismo NGINX en /etc/nginx/conf.d.
Si vas a subir Wordpress te bastará con adicionar después del location /; la simple línea de try_files $uri $uri/ /index.php?$args; para que funcionen las URL amigables del CMS, toda la documentación la puedes encontrar aquí.
Finalizamos esta etapa con service nginx restart
4) Configurando Memcached, Instalando Maldetect, Actualizando ClamAV y concluyendo con VSFTPD
nano /etc/sysconfig/memcached
Insertar CODE, HTML o PHP:
PORT="11211"
USER="memcached"
MAXCONN="10240"
CACHESIZE="10240"
OPTIONS=""
Lo ajustas a tu gusto y luego service memcached restart;chkconfig memcached on
* Si gustas instalar redis lo haces con un simple yum install -y redis;chkconfig redis on;service redis restart
Instalando Maldetect y Actualizando tanto Maldet como ClamAV
Insertar CODE, HTML o PHP:
cd;wget http://www.rfxn.com/downloads/maldetect-current.tar.gz;tar -xvf maldetect-current.tar.gz;cd maldetect*;./install.sh;ln -s /usr/local/maldetect/maldet /bin/maldet;ln -s /usr/local/maldetect/maldett /bin/lmd;hash -r;maldet -u;maldet -d;freshclam
Para ponerlo a trabajar en tiempo real basta con instalar inotify mediante yum install inotify* -y y seguido correr maldet -m /home, para escanear tan simple como sencillo solo tienes que correr maldet -a /home, entonces él hará un escaneo completo de tu directorio home (suele tardar bastante). Para que maldet automáticamente mueva amenazas o las detecte correctamente ocuparas configurar el conf.maldet ubicado en el directorio /usr/local/maldetect.
Instalando y configurando VSFTPD
Insertar CODE, HTML o PHP:
yum install -y vsftpd;cd /etc/vsftpd;rm -rf vsftpd.conf;chkconfig vsftpd on
nano /etc/vsftpd/vsftpd.conf
Insertar CODE, HTML o PHP:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_umask=022
anon_upload_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
dual_log_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=YES
listen_port=5656
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
force_dot_files=YES
ascii_upload_enable=YES
ascii_download_enable=YES
pasv_enable=YES
pasv_max_port=12100
pasv_min_port=12000
use_localtime=YES
ssl_enable=NO
En la línea listen_port=5656 podrás apuntar al puerto que gustes, para poderte conectar a FTP ocuparas establecer o tener establecida un password a tu usuario www o el que hayas creado, seguido de esto un cliente como el Filezilla o de tu preferencia, ya con esto tu aventura empieza 😛7:
Espero que este tutorial te haya sido de su agrado, he tratado de hacerlo lo más transparente posible, es más que suficiente para comenzar a mover tus proyectos a tus propios servidores ya sean dedicados, instancias o inclusive local (de contar con buena conexión a internet y experiencia en seguridad linux), solo tendrán que afinar un pal de detalles con mysql_secure_installation para darle una contraseña al root del MariaDB, subir en alguna carpeta el phpMyAdmin para manejar gráficamente las bases de datos, entender un poco de php-fpm, del directorio conf.d y finalmente instalar algún firewall de preferencia que no sea el default.
Cualquier crítica o comentario es bien recibida, solo brindará ayuda y asistiré con lo comentado en el tutorial más solo voy a responder a quienes comenten en este tema, si ocupas ayuda profesional, personal o cualquier cosa que necesites resolver a fondo puedes contar conmigo y mis servicios a través de este tema.
Regards,
Última edición: