HHVM (HipHop Virtual Machine) es una máquina virtual de código abierto para ejecutar programas escritos en lenguaje PHP y Hack. HHVM ha sido desarrollado por Facebook, proporciona la mayoría de las funciones de la versión actual de PHP 7. Para ejecutar HHVM en su servidor, puede usar un FastCGI para conectar HHVM con un servidor web Nginx o Apache, o puede usar el servidor web integrado en HHVM llamado "Proxygen".
En este tutorial, le mostraré cómo instalar WordPress con HHVM y Nginx como servidor web. Usaré CentOS 7 como sistema operativo, por lo que se requieren conocimientos básicos de CentOS.
Requisito previo
- CentOS 7 - 64 bits
- Privilegios de raíz
Paso 1:configurar SELinux y agregar el repositorio de Epel
En este tutorial, usaremos SELinux en modo de aplicación, por lo que necesitamos las herramientas de administración de SELinux instaladas en el sistema. Usaremos setools y setrobleshoot para administrar las políticas de SELinux.
De forma predeterminada, SELinux está habilitado en CentOS 7. Podemos comprobarlo con el siguiente comando:
sestatus
getenforce
Puede ver que SELinux está habilitado con el modo de cumplimiento.
A continuación, instale setools y configure la solución de problemas con el comando yum.
yum -y install setroubleshoot setools net-tools
Cuando se haya completado la instalación, puede instalar el repositorio EPEL.
yum -y install epel-release
Paso 2:instalar Nginx
Nginx o engine-x es un servidor web liviano con alto rendimiento y bajo consumo de memoria. En CentOS, podemos usar yum para instalar los paquetes de Nginx. ¡Asegúrese de haber iniciado sesión como usuario root!
Instale nginx con este comando yum del repositorio de CentOS:
yum -y install nginx
Ahora inicie Nginx y permita que se inicie en el momento del arranque con el comando systemctl:
systemctl start nginx
systemctl enable nginx
Para asegurarse de que Nginx se esté ejecutando en nuestro servidor, visite la dirección IP del servidor con su navegador o use el comando curl como se muestra a continuación para obtener los resultados:
curl 192.168.1.110
Lo verificaré con mi navegador web aquí:
Paso 3:instalar y configurar MariaDB
MariaDB es una base de datos de código abierto desarrollada por el desarrollador original de MySQL, Monty Widenius, se ha bifurcado de la base de datos MySQL pero sigue siendo compatible con ella en sus funciones principales. En este paso, instalaremos MariaDB y configuraremos la contraseña de root para la base de datos MariaDB. Luego crearemos una nueva base de datos y un nuevo usuario que son necesarios para nuestra instalación de WordPress.
Instale mariadb y mariadb-server:
yum -y install mariadb mariadb-server
Inicie MariaDB y agregue el servicio para que se inicie automáticamente en el momento del arranque:
systemctl start mariadb
systemctl enable mariadb
Se ha iniciado MariaDB, y ahora tenemos que configurar la contraseña de root para la base de datos mariadb/mysql. Escriba el siguiente comando para configurar la contraseña raíz de MariaDB.
mysql_secure_installation
Escriba su nueva contraseña para el usuario raíz de MariaDB cuando se le solicite.
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
... Success!
Disallow root login remotely? [Y/n] Y
... Success!
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
... Success!
La contraseña raíz de MariaDB ha sido configurada. Ahora inicie sesión en el shell de MariaDB/MySQL y cree una nueva base de datos "wordpressdb" y un nuevo usuario "wpuser" con contraseña "[email protected]" para nuestra instalación de WordPress. ¡Elige una contraseña segura para tu instalación!
Inicie sesión en el shell de MariaDB/MySQL:
mysql -u root -p
TYPE YOUR PASSWORD
Crear una nueva base de datos y un nuevo usuario:
create database wordpressdb;
create user [email protected] identified by '[email protected]';
grant all privileges on wordpressdb.* to [email protected] identified by '[email protected]';
flush privileges;
\q
Se ha instalado MariaDB y se ha creado la nueva base de datos para nuestra instalación de WordPress.
Paso 4:instalar HHVM
Para la instalación de HHVM, necesitamos instalar muchas dependencias. Podemos instalar HHVM desde la fuente descargando la fuente de github o instalando paquetes precompilados que están disponibles en Internet. En este tutorial, instalaré HHVM desde paquetes precompilados.
Instale las dependencias para la instalación de HHVM
yum -y install cpp gcc-c++ cmake git psmisc {binutils,boost,jemalloc,numactl}-devel \
{ImageMagick,sqlite,tbb,bzip2,openldap,readline,elfutils-libelf,gmp,lz4,pcre}-devel \
lib{xslt,event,yaml,vpx,png,zip,icu,mcrypt,memcached,cap,dwarf}-devel \
{unixODBC,expat,mariadb}-devel lib{edit,curl,xml2,xslt}-devel \
glog-devel oniguruma-devel ocaml gperf enca libjpeg-turbo-devel openssl-devel \
mariadb mariadb-server libc-client make
Luego instale los paquetes precompilados de HHVM desde este sitio con el comando rpm.
rpm -Uvh http://mirrors.linuxeye.com/hhvm-repo/7/x86_64/hhvm-3.15.2-1.el7.centos.x86_64.rpm
ln -s /usr/local/bin/hhvm /bin/hhvm
Se ha instalado HHVM, verifíquelo con el siguiente comando:
hhvm --version
Para usar el comando php, podemos configurar el comando hhvm como php. Entonces, cuando escriba 'php' en el shell, verá el mismo resultado que con el comando hhvm.
sudo update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60
php --version
Paso 5:configurar HHVM
En este paso, configuraremos HHVM. Ejecutaremos hhvm como un servicio systemd. En lugar de ejecutarlo en un puerto del sistema, ejecutaremos hhvm en un archivo de socket Unix, que es más rápido.
Vaya al directorio systemd y cree el archivo hhvm.service.
cd /etc/systemd/system/
vim hhvm.service
Pegue la configuración del servicio a continuación en ese archivo.
[Unit]
Description=HHVM HipHop Virtual Machine (FCGI)
After=network.target nginx.service mariadb.service
[Service]
ExecStart=/usr/local/bin/hhvm --config /etc/hhvm/server.ini --user nginx --mode daemon -vServer.Type=fastcgi -vServer.FileSocket=/var/run/hhvm/hhvm.sock
[Install]
WantedBy=multi-user.target
Guarde el archivo y salga de vim.
A continuación, vaya al directorio hhvm y edite el archivo server.ini.
cd /etc/hhvm/
vim server.ini
Reemplace hhvm.server.port en la línea 7 con la configuración de socket de Unix a continuación:
hhvm.server.file_socket = /var/run/hhvm/hhvm.sock
Guarde el archivo y salga del editor.
En el archivo de servicio de hhvm, hemos definido que hhvm se ejecuta con el usuario 'nginx', por lo que debemos cambiar el propietario del directorio del archivo de socket al usuario 'nginx'. Luego debemos cambiar el contexto de SELinux del directorio hhvm para permitir el acceso al archivo de socket.
chown -R nginx:nginx /var/run/hhvm/
semanage fcontext -a -t httpd_var_run_t "/var/run/hhvm(/.*)?"
restorecon -Rv /var/run/hhvm
Después de reiniciar el servidor, hhvm no se ejecutará porque no hay un directorio para el archivo de socket, por lo que debemos crearlo automáticamente en el momento del inicio.
Edite el archivo rc.local con vim.
vim /etc/rc.local
Pegue la configuración a continuación al final de la línea.
mkdir -p /var/run/hhvm/
chown -R nginx:nginx /var/run/hhvm/
semanage fcontext -a -t httpd_var_run_t "/var/run/hhvm(/.*)?"
restorecon -Rv /var/run/hhvm
Guarde el archivo y salga de vim. Haz que el archivo sea ejecutable.
chmod +x /etc/rc.local
Vuelva a cargar el servicio systemd, inicie hhvm y agréguelo para que se inicie en el momento del arranque.
systemctl daemon-reload
systemctl start hhvm
systemctl enable hhvm
Asegúrese de que no haya ningún error. Verifique que hhvm se esté ejecutando en el archivo de socket con el comando netstat.
netstat -pl | grep hhvm
Paso 6:configurar HHVM y Nginx
En este paso, configuraremos HHVM para que se ejecute con el servidor web Nginx. Necesitamos crear un nuevo archivo de configuración de hhvm en el directorio de Nginx.
Vaya al directorio /etc/nginx y cree un archivo hhvm.conf.
cd /etc/nginx/
vim hhvm.conf
Pegue la configuración a continuación:
location ~ \.(hh|php)$ {
root /usr/share/nginx/html;
fastcgi_keep_conn on;
fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Guardar y salir.
A continuación, edite el archivo nginx.conf y agregue la línea de inclusión de configuración de hhvm.
vim nginx.conf
Agregue la configuración a la línea 57 de la directiva del servidor.
include /etc/nginx/hhvm.conf;
Guardar y salir.
Luego cambie el contexto SELinux del archivo de configuración hhvm.
semanage fcontext -a -t httpd_config_t /etc/nginx/hhvm.conf
restorecon -v /etc/nginx/hhvm.conf
Pruebe la configuración de Nginx y reinicie el servicio.
nginx -t
systemctl restart nginx
Asegúrate de que no haya ningún error.
Paso 7:crear un host virtual con HHVM y Nginx
En este paso, crearemos una nueva configuración de host virtual con Nginx y hhvm. Usaré el nombre de dominio "natsume.co" para este ejemplo. Utilice su propio nombre de dominio y reemplácelo en los archivos de configuración y en la instalación de WordPress dondequiera que aparezca.
Vaya al directorio nginx conf.d donde almacenaremos el archivo de host virtual:
cd /etc/nginx/conf.d/
Cree la nueva configuración "natsume.conf" con vim:
vim natsume.conf
Pegue la configuración del host virtual a continuación:
server { listen 80; server_name natsume.co; # note that these lines are originally from the "location /" block root /var/www/hakase; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; location = /50x.html { root /var/www/hakase; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/hhvm/hhvm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Guardar y salir.
En nuestra configuración de host virtual, hemos definido el directorio raíz web para que el nombre de dominio sea el directorio "/var/www/hakase". Ese directorio aún no existe, por lo que debemos crearlo y cambiar la propiedad al usuario y grupo nginx.
mkdir -p /var/www/hakase
chown -R nginx:nginx /var/www/hakase
A continuación, configure el contexto de SELinux para el archivo y el directorio.
semanage fcontext -a -t httpd_config_t "/etc/nginx/conf.d(/.*)?"
restorecon -Rv /etc/nginx/conf.d
Finalmente, pruebe la configuración de nginx para asegurarse de que no haya ningún error, luego reinicie nginx:
nginx -t
systemctl restart nginx
Paso 8 - Instalar WordPress
En el paso 5, creamos la configuración de host virtual para nuestra instalación de WordPress. Ahora solo tenemos que descargar WordPress y editar la configuración de la base de datos utilizando la base de datos y el usuario que hemos creado en el paso 3.
Vaya al directorio raíz web "/var/www/hakase" y descargue WordPress con el comando wget:
cd /var/www/hakase
wget wordpress.org/latest.tar.gz
Extraiga "latest.tar.gz" y mueva todos los archivos y directorios de WordPress al directorio actual:
tar -xzvf latest.tar.gz
mv wordpress/* .
A continuación, copie el archivo "wp-config-sample.php" en "wp-config.php" y edítelo con vim:
cp wp-config-sample.php wp-config.php
vim wp-config.php
Establezca DB_NAME en "wordpressdb" , DB_USER a "wpuser" y DB_PASSWORD a "[email protected]" .
define('DB_NAME', 'wordpressdb'); define('DB_USER', 'wpuser'); define('DB_PASSWORD', '[email protected]'); define('DB_HOST', 'localhost');
Guardar y salir.
Cambie el contexto de SELinux para el directorio de WordPress.
semanage fcontext -a -t httpd_sys_content_t "/var/www/hakase(/.*)?"
restorecon -Rv /var/www/hakase
Ahora abra un navegador web y escriba el nombre de dominio de su dominio de wordpress en la barra de direcciones, el mío es "natsume.co".
Elija el idioma inglés y haga clic en 'Continuar '.
Complete el título y la descripción del sitio con su información y haga clic en "Instalar Wordpress".
Espere hasta que finalice la instalación. Verá la página a continuación, haga clic en "Iniciar sesión" para iniciar sesión en el panel de administración de WordPress:
Escriba su usuario y contraseña de administrador, luego haga clic en "Iniciar sesión" nuevamente.
Ahora estás en el panel de administración de WordPress.
Página de inicio de Wordpress.
Wordpress con Nginx y HHVM en CentOS 7 se ha instalado correctamente.