Nesse artigo, assista a como criar um Cloud com WordPress. Nele, vou mostrar como criar um servidor no Google Cloud dentro do CentOS 7.
Para isso, primeiramente vou criar este cloud com NGINX + PHP 7.4 + MariaDB 10.5.
Segue o vídeo da instalação dentro do Google Cloud.
Início
Primeiramente, vamos atualizar o nosso sistema e instalar alguns aplicativos que iremos utilizar na nossa instalação como yum-utils, nano e wget.
Adicionando Repositório
Logo depois de ter instalado os aplicativos, vamos adicionar o repositório do remi.
http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Agora vamos habilitar o repositório.
Instalação do NGINX
Vamos então instalar o NGINX, iniciar o serviço e abrir o firewall.
Logo depois vamos abrir a página para ver se está funcionando.
Instalando MariaDB
Vamos adicionar o repositório do MariaDB 10.5 no nosso Centos 7 para poder instalar ele e então fazer a instalação.
Instalação do PHP
Chegou a hora de instalar o PHP, como é uma linha muito grande segue a linha da instalação do php.
Logo após ter instalado o PHP vamos fazer algumas modificações no arquivo de configuração do php-fpm para que seja executado pelo usuário do NGINX.
Então vamos configurar o nginx.conf.
Agora chegou a hora de criar as pastas que vamos utilizar no servidor e nosso arquivo snippets e default.conf.
Vamos reiniciar os serviços para depois testar o funcionamento do php com o respectivo domínio já configurado.
Certbot https
Logo depois de ter o servidor com o php funcionando está na hora de deixar o nosso site seguro com https e http2 para ficar mais rápido.
Instalação do WordPress
Vamos então, fazer o download do WordPress, descomprimir e criar a database e usuário no mariadb para utilizar o wordpress.
Extra
Se você desejar fazer configurações extras de segurança veja o artigo a seguir.
Melhores práticas de segurança para o Nginx Web Server
Enfim, espero poder ter ajudado com mais este tutorial de assista como criar um Cloud com WordPress.
Lista de comandos utilizados:
sudo -i
yum update
yum install yum-utils nano wget
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php74
yum install nginx
systemctl enable --now nginx
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
nano /etc/yum.repos.d/MariaDB.repo
#####################
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
#####################
yum install mariadb-server -y
systemctl enable --now mariadb
mysql_secure_installation
yum install php php-fpm php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo php-mbstring php-dom php-imagick
vim /etc/php-fpm.d/www.conf
#####################
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server.
; Default Values: user and group are set as the running user
; mode is set to 0660
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
#####################
chown root.nginx /var/lib/php/session
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conk.orig
nano /etc/nginx/nginx.conf
#####################
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;
}
#####################
mkdir /etc/nginx/sites-avaliable
mkdir /etc/nginx/sites-enabled
mkdir /etc/nginx/snippets
nano /etc/nginx/snippets/fastcgi-php.conf
#####################
# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+?.php)(/.*)$;
# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;
# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
include fastcgi.conf;
#####################
nano /etc/nginx/sites-avaliable/default.conf
#####################
server {
listen 80;
root /usr/share/nginx/html;
index index.php index.html index.htm;
server_name dominio.com.aqui;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass 127.0.0.1:9000;
}
# Log do server
error_log /var/log/nginx/error-dominio.log;
access_log /var/log/nginx/access-dominio.log;
}
#####################
cp /etc/nginx/sites-avaliable/default.conf /etc/nginx/sites-avaliable/dominio.conf
nano /etc/nginx/sites-avaliable/dominio.conf
ln -sf /etc/nginx/sites-avaliable/dominio.conf /etc/nginx/sites-enabled/dominio.conf
nano /usr/share/nginx/html/info.php
#####################
<?php phpinfo(); ?>
#####################
systemctl enable --now php-fpm
systemctl restart mariadb
systemctl restart nginx
rm /usr/share/nginx/html/info.php
yum install certbot-nginx
certbot --nginx
nano /etc/nginx/sites-avaliable/dominio.conf
#####################
listen 443 ssl http2; # managed by Certbot
#####################
chown nginx.nginx /usr/share/nginx/html -R
systemctl restart nginx
crontab -e
#####################
0 0 * * 1 /usr/bin/certbot renew >> /var/log/sslrenew.log
#####################
systemctl restart crond
cd /usr/share/nginx/
mv html/ html-old
wget https://br.wordpress.org/latest-pt_BR.tar.gz
tar -xzvf latest-pt_BR.tar.gz
mysql -u root -p
create database dominio;
create user 'dominio'@'localhost' identified by 'senha';
grant all privileges on dominio.* to 'dominio'@'localhost';
flush privileges;
exit
setenforce 0
nano /etc/sysconfig/selinux
#####################
SELinux=disabled
#####################
mv wordpress html
chown nginx.nginx html -R