Sabias que hay un nuevo OS en el mercado? Linux Centos 7 vio la luz hace unos días y ya muchos estamos ansiosos por ponerlo a prueba con su diversas características. Una de las formas comunes de ver su potencial es instalar un servidor LAMP (palabra que se forma de las iniciales de Linux Apache MySQL/MariaDB PHP) que nos sirva para hostear nuestras paginas/proyectos web.
Ya entrados en detalles (y el tiempo corriendo) hoy veremos como instalar paso a paso un servidor Linux Centos 7 LAMP en el cual veremos nuevos comandos para ejecutar servicios, abrir puertos en el firewall y el reemplazo de MySQL por MariaDB. Para resultados sin errores sugiero copiar y pegar los comandos evitando problemas por sintaxis.
Requerimientos para instalar LAMP en Linux Centos
- Linux Centos 7 instalación mínima
- Conexión a internet
Artículos recomendados: Instalación modo gráfico en Linux Centos
Configurando servicios en Linux Centos / RedHat
Playlist Implementaciones Linux en Youtube
Playlist Implementaciones Linux en Youtube
En 15 minutos configura un Linux Centos 7 LAMP
-Se que es un posible problema de seguridad pero para este articulo prefiero desactivar SELinux. Reiniciamos nuestro servidor después de este cambio
vi /etc/selinux/config
SELINUX=disabled
-Instalamos los paquetes que necesitaremos
yum install httpd mariadb-server mariadb php php-mysql php-gd php-pear php-cli php-common NetworkManager-tui wget curl net-tools lsof firewalld
-Siguiente paso, dejar nuestro servidor con una ip fija y no dinámica por DHCP como posiblemente este después de instalar. Verificamos que ip tiene nuestro servidor
ip a sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:5a:48:4b brd ff:ff:ff:ff:ff:ff
inet 192.168.1.149/24 brd 192.168.1.255 scope global dynamic enp0s3
valid_lft 85741sec preferred_lft 85741sec
inet6 fe80::a00:27ff:fe5a:484b/64 scope link
valid_lft forever preferred_lft forever
-El estado original de nuestra tarjeta de red podemos verificarlo en el archivo ifcfg-enp0s3. Este archivo se origina de 2 palabras, ifcfg y el nombre de la interfaz enp0s3 como vimos en la salida del comando ip anterior
cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
UUID=8a348a54-bc7b-489f-bf53-5ef406f04854
ONBOOT=yes
HWADDR=08:00:27:5A:48:4B
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
-Aunque podemos modificar el archivo directamente, hay una forma mas sencilla y visual de hacerlo, ejecutando NetworkManager Text User Interface (TUI). Escogemos Edit a connection y presionamos Enter
nmtui
-Elegimos la interfaz de red que modificaremos y con la tecla TAB buscamos Edit. Presionamos Enter
-Ya editando nuestra conexión, damos Enter sobre Show en IPv4
-Escogemos Manual y escribimos los datos ip para nuestra tarjeta. Salimos guardando dando Enter sobre Ok
-Salimos presionando Enter sobre Quit
-Si visualizamos ahora el archivo de configuración de nuestra tarjeta veremos los cambios que acabamos de hacer
cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
UUID=8a348a54-bc7b-489f-bf53-5ef406f04854
ONBOOT=yes
HWADDR=08:00:27:5A:48:4B
IPADDR0=192.168.1.149
PREFIX0=24
GATEWAY0=192.168.1.1
DNS1=192.168.1.1
DNS2=8.8.8.8
DNS3=8.8.4.4
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
-Aunque podemos manejar iptables directamente, una buena alternativa es por medio de firewalld. Activamos el servicio y lo ejecutamos
systemctl enable firewalld
systemctl start firewalld
-Verificamos este ejecutándose correctamente el servicio
systemctl status mariadb
● mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since vie 2018-04-13 17:45:25 -05; 22s ago
Process: 11542 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
Process: 11462 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
Main PID: 11541 (mysqld_safe)
CGroup: /system.slice/mariadb.service
├─11541 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
└─11703 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var...
-Le damos permisos a apache
chown apache.apache /var/www/html/test.php
ip a sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:5a:48:4b brd ff:ff:ff:ff:ff:ff
inet 192.168.1.149/24 brd 192.168.1.255 scope global dynamic enp0s3
valid_lft 85741sec preferred_lft 85741sec
inet6 fe80::a00:27ff:fe5a:484b/64 scope link
valid_lft forever preferred_lft forever
-El estado original de nuestra tarjeta de red podemos verificarlo en el archivo ifcfg-enp0s3. Este archivo se origina de 2 palabras, ifcfg y el nombre de la interfaz enp0s3 como vimos en la salida del comando ip anterior
cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
UUID=8a348a54-bc7b-489f-bf53-5ef406f04854
ONBOOT=yes
HWADDR=08:00:27:5A:48:4B
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
-Aunque podemos modificar el archivo directamente, hay una forma mas sencilla y visual de hacerlo, ejecutando NetworkManager Text User Interface (TUI). Escogemos Edit a connection y presionamos Enter
nmtui
-Elegimos la interfaz de red que modificaremos y con la tecla TAB buscamos Edit. Presionamos Enter
-Ya editando nuestra conexión, damos Enter sobre Show en IPv4
-Escogemos Manual y escribimos los datos ip para nuestra tarjeta. Salimos guardando dando Enter sobre Ok
-Salimos presionando Enter sobre Quit
-Si visualizamos ahora el archivo de configuración de nuestra tarjeta veremos los cambios que acabamos de hacer
cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
UUID=8a348a54-bc7b-489f-bf53-5ef406f04854
ONBOOT=yes
HWADDR=08:00:27:5A:48:4B
IPADDR0=192.168.1.149
PREFIX0=24
GATEWAY0=192.168.1.1
DNS1=192.168.1.1
DNS2=8.8.8.8
DNS3=8.8.4.4
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
-Reiniciamos el servicio de red para que tome los cambios
systemctl restart network
Activamos firewalld para Linux Centos LAMP
-Aunque podemos manejar iptables directamente, una buena alternativa es por medio de firewalld. Activamos el servicio y lo ejecutamos
systemctl enable firewalld
systemctl start firewalld
Configuramos Apache para Linux Centos LAMP
-Activamos el servicio de apache y lo ejecutamos
systemctl enable httpd
systemctl start httpd
-Verificamos este ejecutándose correctamente
systemctl status httpd
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: active (running) since dom 2014-07-13 16:26:17 COT; 48s ago
Main PID: 3054 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─3054 /usr/sbin/httpd -DFOREGROUND
├─3056 /usr/sbin/httpd -DFOREGROUND
├─3057 /usr/sbin/httpd -DFOREGROUND
├─3058 /usr/sbin/httpd -DFOREGROUND
├─3059 /usr/sbin/httpd -DFOREGROUND
└─3060 /usr/sbin/httpd -DFOREGROUND
jul 13 16:26:17 ce7.test.com systemd[1]: Started The Apache HTTP Server.
-Verificamos configuración de apache
apachectl configtest
Syntax OK
Importante sobre apache
Configuración: /etc/httpd/conf/httpd.conf
Configuración de módulos: /etc/httpd/conf.modules.d/
Puertos: 80 (http) y 443 (https - SSL)
Logs: /var/log/httpd/
-Abrimos los puertos 80 y 443 en el firewall
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
-Abrimos un browser y navegamos a la ip de nuestro servidor
-Activamos el servicio mariadb y lo ejecutamos
systemctl enable mariadb
systemctl start mariadb
-Verificamos este ejecutándose correctamente el servicio
systemctl status mariadb
● mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since vie 2018-04-13 17:45:25 -05; 22s ago
Process: 11542 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
Process: 11462 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
Main PID: 11541 (mysqld_safe)
CGroup: /system.slice/mariadb.service
├─11541 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
└─11703 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var...
-Aseguramos nuestra configuración de mariadb. La contraseña de root de mariadb apenas instalamos no existe, por ello damos Enter, después dejamos los valores por default y escribimos una contraseña cuando se nos pida
/usr/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n]
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n]
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n]
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n]
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n]
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
-Ahora que ya tenemos asegurada nuestra instalación de MariaDB la probamos con el usuario root y la contraseña que acabamos de colocarle. Podemos verificar las bases de datos que tiene en este momento y salimos con el comando quit
mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
MariaDB [(none)]> quit;
Bye
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
MariaDB [(none)]> quit;
Bye
Importante sobre MariaDB
Configuración: /etc/my.cnf
Puertos: 3306
Logs: /var/log/mariadb/
Verificamos PHP
-Siguiente paso, verificar si nuestro apache tiene bien configurados php y con que módulos esta ejecutando. Para esto creamos un archivo php
vi /var/www/html/test.php
<?php
phpinfo();
?>
-Le damos permisos a apache
chown apache.apache /var/www/html/test.php
-Navegamos a http://192.168.1.149/test.php y veremos todos los módulos que tenemos activos en nuestro apache
Ahora ya tenemos nuestro servidor Linux Centos 7 LAMP listo para colocar nuestras paginas o proyectos web. Ya tienes un servidor LAMP, con Centos? con que distribución? Ya usas Centos 7?
Pretendo vivir de mi blog, de enseñar opensource, pero esto no sera posible sin tu apoyo
Satisfech@ con el articulo? Bien, hazme un favor, compártelo en tus redes sociales (compartir es sexy). Escríbeme en los comentarios aquí debajo y pasa la voz compartiendo el tweet.
15 minutos para configurar un #Linux #Centos 7 #LAMP ~ videoJuegos y Open Source https://t.co/xsQMXiWovb
— Manuel Cabrera C (@drivemeca) January 11, 2016