in

Assista a como criar um Cloud com WordPress

Google Cloud+Centos 7+NGINX+PHP 7.4+MariaDB 10.5

Assista como criar um Cloud com Wordpress

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.

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

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

Assista a como criar um Cloud com WordPress

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

 

Escrito por Rodrigo Leutz

Usuário do Linux a mais de 20 anos.
Desenvolvedor Web e Android ( Kotlin e Java ).
Membro da equipe de suporte do sempreupdate.