Início

Teste a velocidade da internet do servidor via linha de comando com speedtest-cli

O speedtest-cli é uma ferramenta de linha de comando útil para administradores em servidores Linux testarem rapidamente a largura de banda, ping e outras informações. Este utilitário mantido pela Speedtest.net nos permite obter informações valiosas sobre o que está sendo oferecido pelo provedor de seu servidor linux.

Abaixo vamos abordar a instalação no CentOS/RedHat , Ubuntu/Debian e a forma manual que servirá para qualquer outra Distribuição Linux.

CentOS/RedHat

Instale o repositório Epel release

yum install epel-release -y

Instale python e python-pip

yum install python python-pip -y
pip install --upgrade pip

Instale o Speedtest-cli via pip

pip install speedtest-cli

Ubuntu

Primeiro atualize os packages do servidor

apt-get update

Instale python e python-pip

apt-get install python python-pip
pip install --upgrade pip

Instale o Speedtest-cli via pip

pip install speedtest-cli

Todas as outras Distribuições Linux/UNIX

Certifique-se que o pacote do python esteja instalado em sua distribuição linux

Faça o download do speedtest-cli

wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py

Corrija as permissões para execução

chmod +x speedtest-cli

./speedtest-cli
OU
python speedtest-cli

Exemplo de comandos para speedtest-cli

Execute o comando abaixo para o iniciar o teste de velocidade

speedtest-cli

Exemplo do teste

[root@gerenciandosrv ~]# speedtest-cli
Retrieving speedtest.net configuration...
Testing from OVH Hosting (xxx.xx.xx.xxx)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by TELUS (Montreal, QC) [1.07 km]: 7.488 ms
Testing download speed................................................................................
Download: 681.31 Mbit/s
Testing upload speed................................................................................................
Upload: 239.13 Mbit/s

Para executar o teste e gerar o link do Speedtest com o resultado utlize

speedtest-cli --share

[root@gerenciandosrv ~]#  speedtest-cli --share
Retrieving speedtest.net configuration...
Testing from OVH Hosting (xxx.xx.xx.xxx)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Openface Internet (Montreal, QC) [1.07 km]: 2.286 ms
Testing download speed................................................................................
Download: 732.54 Mbit/s
Testing upload speed................................................................................................
Upload: 224.14 Mbit/s
Share results: http://www.speedtest.net/result/8441139361.png

Importante: Alguns firewalls podem bloquear o teste, trazendo resultados de Download e Upload 00 Mbit/s . Neste caso sugiro pausar o firewall ou descobrir a porta utilizada pelo Speedtest para conexão.

Abaixo segue a imagem do meu teste de velocidade

Como habilitar HTTP/2 com nginx

Nginx Com Http/2

O HTTP/2 torna nossas aplicações web mais rápidas, simples e robustas. O http2 abre uma série de novas oportunidades para otimizar nossas aplicações e melhorar o desempenho.

O principal objetivo do http/2 é reduzir a latência permitindo a multiplexação total de solicitações e respostas, minimizando a sobrecarga de protocolos por meio de compactação eficiente do http header, além de adicionar suporte para a priorização de solicitações e envio de dados aos servidores. Existem ainda um grande suporte de outros aprimoramentos de protocolo, como novos mecanismos de controle de fluxo, tratamento de erros e atualização, mas os recursos descritos acima são os mais importantes .

 

Mãos a obra

Notas – Antes de começar:

  • Certifique-se que você tenha instalado em seu domínio um certificado ssl válido. http/2 somente funciona com HTTPS
  • Este passo a passo foi escrito utilizando um servidor com Painel CWP Pro (CentOS Web Panel) e CentOS 6, porém, já foi testado no CentOS 7, com ou sem Painel de controle   (foram necessárias apenas algumas adaptações lógicas).

-Acesse o SSH de seu servidor como root

Atualizando os packs do OS para a última versão


yum clean all
yum -y update

Atualizando Autoconf:


cd /usr/local/src
rm -rf autoconf-*
wget https://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
tar zxvf autoconf-latest.tar.gz
cd autoconf-*
./configure --prefix=/usr
make && make install

Atualizando Openssl:


cd /usr/local/src
rm -rf openssl-*
wget https://www.openssl.org/source/openssl-1.0.2q.tar.gz
tar zxvf openssl-1.0.2q.tar.gz
cd openssl-*
./config --prefix=/usr --openssldir=/usr/lib64 shared
make && make install

Instalando Nghttp2:


cd /usr/local/src
rm -rf nghttp2-* yum install libtool -y wget https://github.com/nghttp2/nghttp2/releases/download/v1.35.1/nghttp2-1.35.1.tar.gz tar zxvf nghttp2-1.35.1.tar.gz cd nghttp2-* ./configure --prefix=/usr make && make install

Acesse o diretório de configuração do nginx


cd /etc/nginx/conf.d/vhosts/

Edite o arquivo “seudodominio_ssl.conf”


nano seudodominio_ssl.conf

Localize:


server {
listen xxx.xx.xxx.xx:443;

xxx é apenas um exemplo. não altere o ip

Adicione após “:443” ssl http2


server {
listen xxx.xx.xxx.xx:443 ssl http2;

Salve e saia do editor nano ( “ctrl+x “ e “y” )

Reiniciei o nginx


service nginx restart

Agora, vamos verificar se está tudo certo, acesse https://tools.keycdn.com/http2-test
digite a url de seu site para verificar se o HTTP/2 está ativo

Como usar o comando tar para compactar/descompactar com Gzip e Bzip2

O comando tar (tape archive) é usado frequentemente no Linux para adicionar vários arquivos e pastas a um único arquivo. Os Arquivos tar são frequentemente compactados após serem criados, dando-lhes a extensão tar.gz(Gzip) ou tar.bz2(bzip2) principalmente. O comando tar possui um grande número de opções, mas precisamos lembrar apenas de algumas letras para criar ou extrair arquivos.

Abaixo, segue uma lista com os parâmetros mais importantes para o uso diário do tar ao compactar e descompactar arquivos:

  • -x (eXtract) Extrai os dados do arquivo .tar.gz
  • -c (Create) Cria um arquivo tar
  • -z (gZip) Utilizado para manipular o arquivo .tar.gz ou .tgz.
  • -j (Bzip2) Utilizado para manipular o arquivo .tar.bz2, .tar.bz ou .tbz.
  • -v (Verbose) Mostra na tela os arquivos que estão sendo comprimidos ou manipulados, um a um. Se não deseja ver os arquivos que estão sendo manipulados, você pode ignorar este parâmetro.
  • -f (File) Define que estamos trabalhando com arquivos.

Compactando um arquivo tar.gz

Por exemplo, se você possui um diretório /home/pedro e deseja compactar com tar.gz e nome backup-do-pedro.tar.gz utilize:

tar -czvf backup-do-pedro.tar.gz /home/pedro

Para compactar múltiplos diretórios utilize:

tar -czvf backup-geral.tar.gz /home/pedro /home/maria /home/jose

Descompactando um arquivo tar.gz

Para descompactar um arquivo tar.gz , utilize :

tar -xzvf nomedoarquivo.tar.gz

Embora a compactação gzip seja utilizada com mais frequência para criar arquivos .tar.gz ou .tgz o tar também suporta compactação bzip2. Isso nos permite criar arquivos compactados com bzip2, denominados arquivos .tar.bz2, .tar.bz ou .tbz.

O Gzip é mais rápido, mas geralmente comprime um pouco menos, criando o arquivo um pouco maior. O Bzip2 é mais lento, mas comprime um pouco mais, criando o arquivo um pouco menor.

Para utilizar a compactação com bzip2, basta substituir o -z para gzip nos comandos por um -j para bzip2.

Compactando um arquivo tar.bz2

tar -cjvf backup-do-pedro.tar.bz2 /home/pedro

Descompactando um arquivo tar.bz2

tar -xjvf nomedoarquivo.tar.bz2

Como desabilitar funções perigosas do PHP

O PHP é uma linguagem de script rica em recursos, mas quando utilizada de forma incorreta , intencionalmente ou não, pode comprometer grande parte do servidor web ou seus dados.

Através do arquivo php.ini em disable_functions, vamos criar uma lista de funções que devem ser desabilitadas por motivos de segurança.

Localizando o arquivo php.ini correto no servidor.

O primeiro passo é encontrar o arquivo php.ini correto no servidor. Existem vários cenários em um servidor web em que são criados vários arquivos php.ini . Por exemplo, se utilizamos o php-fpm com múltiplas versões do php instaladas em nosso servidor, haverá um php.ini para cada versão… Neste caso você deverá procurar o php.ini responsável por cada versão. O local correto irá variar dependendo de sua Distribuição Linux, se utiliza algum Painel de controle ou não , etc.

A forma mais simples de localizar o php.ini correto em nosso servidor é executando um arquivo php que nos traga através de “phpinfo()” todas as configurações de nosso php.

Crie um arquivo info.php em alguma url ativa em seu servidor web e insira

<?php
phpinfo();
?>

Acesse através de seu navegador web o arquivo info.php. Serão exibidas várias informações úteis sobre o php ativo nessa URL.

Localize: “Loaded Configuration File” . Este é o caminho correto para o php.ini que desejamos . Copie o caminho para php.ini , nós vamos utilizá-lo a seguir para informar em disable_functions as funções que desejamos desabilitar.

Php Info Loaded Configuration

Acesse seu servidor linux utilizado o ssh e edite o arquivo php.ini

nano /caminhodeseuphp.ini/php.ini

Localize “disable_functions =” e modifique para :

disable_functions =  exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname

Em tempo, recomendo que por motivos de segurança desabilite allow_url_fopen e allow_url_include:

allow_url_fopen=Off
allow_url_include=Off

Salve (Ctrl+o) e saia do nano (Ctrl+x)

Reinicie o httpd server

  • Se utiliza o Apache e não possui o php-fpm:

Para CentOS/RedHat:

systemctl restart httpd 

ou

service httpd restart

Para Debian/Ubuntu:

service apache2 restart
  • Se utiliza o PHP-FPM

O PHP-FPM (FastCGI Process Manager ), é um manipulador do PHP que funciona a parte, como um serviço e não um módulo. A forma correta de reiniciar irá variar dependendo de como foi instalado em seu servidor .

Para simplificar, acesse seu arquivo info.php criado anteriormente e note que em ” Loaded Configuration File” haverá um nome parecido com “php-fpmxxx” esse será o nome do processo que você deverá reiniciar .

Phpinfo Php-Fpm
Nome do processo php-fpm .Exemplo php-fpm72

Com as informações acima reinicie o serviço substituindo “php-fpmxxx” pelo nome encontrado em seu servidor. :

Para CentOS/RedHat:

systemctl restart php-fpmxxx 

ou

service php-fpmxxx restart

Para Debian/Ubuntu:

service php-fpmxxx restart

Para se certificar que as configurações foram atualizadas, acesse novamente seu arquivo info.php e verifique em disable_functions se a lista de funções estão sendo exibidas.

Nota Final: Para informação, utilizando o php-fpm existem ainda outras formas de desabilitar as funções que não foram abordadas neste post.

Como Configurar Pure-FTPd para aceitar encriptação TLS/SSL no CentOS

Pure-Ftpd Com Tls

FTP ou File Transfer Protocol é o protocolo de rede padrão da camada de aplicação usado para transferir o arquivo do cliente para o servidor.

O FTP simples é um protocolo inseguro porque todas as senhas e dados são transferidos em texto não criptografado. Ao usar o TLS, toda a comunicação será criptografada, tornando o FTP muito mais seguro.

O Pure-FTPd é um servidor FTP gratuito, com forte foco na segurança do software. É uma excelente opção, se deseja fornecer um serviço de FTP rápido, seguro e leve com muitos recursos .

Neste tutorial vamos abordar como habilitar o TLS no Pure-FTPd e criar um certificado SSL para ser utilzado pelo Pure-FTPd.

Primeiro Passo – Instalar OpenSSL

O OpenSSL é necessário para que TLS funcione. Para instalar utilize:

yum -y install openssl

Segundo Passo – Configurando Pure-FTPd

Edite o arquivo de configuração

nano /etc/pure-ftpd/pure-ftpd.conf

Para permitir sessões FTP e TLS, descomente removendo # e altere TLS para 1

TLS     1

Descomente as linhas abaixo removendo “#”

TLSCipherSuite           HIGH
CertFile                 /etc/ssl/private/pure-ftpd.pem

salve e saia do nano ( CTRL+o , Ctrl+x)

Terceiro Passo – Criar o Certificado SSL para o TLS

Para utilizar o TLS, precisamos criar um certificado SSL. O primeiro passo é criar o local onde será armazenado nosso certificado.

mkdir -p /etc/ssl/private/

Agora, vamos gerar o certificar SSL com o comando :

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Serão solicitadas algumas informações

Country Name (2 letter code) [XX]: <-- Digite a sigla do seu País (exemplo "BR").
State or Province Name (full name) []:<-- Digite seu estado ( exemplo : Minas Gerais)
Locality Name (eg, city) [Default City]:<-- Digite sua cidade
Organization Name (eg, company) [Default Company Ltd]: < -- Digite o nome de sua empresa ou organização.
Organizational Unit Name (eg, section) []:<-- Digite o setor responsável. (exemplo: Departamento de TI)
Common Name (eg, your name or your server's hostname) []:<-- Digite o nome de seu hostname 
Email Address []:<-- Digite o e-mail de contato

Altere as permissões do arquivo SSL

chmod 600 /etc/ssl/private/pure-ftpd.pem

Reinicie o Pure-FTP

systemctl restart pure-ftpd.service

Feito ! Agora , você poderá se conectar utilizando seu programa de FTP configurando para utilizar TLS . Quando conectar será exibido informações sobre o certificado do Servidor com as informações que digitou anteriormente.

Como instalar e configurar, Linux, Nginx, MySQL, PHP 7 no CentOS 7 (LEMP)

Lemp - Linux, Nginx, Mysql, Php

LEMP é um grupo de Software Livre. A sigla LEMP significa Linux, Nginx (pronuncia-se Engine x), MySQL e PHP .

Nginx é um software de servidor Web de código aberto robusto, pequeno, de alto desempenho, servidor proxy reverso e também servidor proxy de E-mail.
Os dados do site serão armazenados em um banco de dados MySQL (usando MariaDB) e o conteúdo dinâmico será processado pelo PHP 7.4.

O Pré Requisito para continuar com esse tutorial é que você já tenha o Linux CentOS 7 instalado.

Primeiro passo – Instalar o Nginx

No CentOS o Nginx não está disponível no repositório padrão. Vamos adicionar o repositório EPEL para que possamos instalar o Nginx através do yum.

yum install epel-release

Com o repositório EPEL instalado no servidor, vamos instalar o nginx

yum install nginx

Vamos iniciar o nginx

systemctl start nginx

Nós já podemos acessar utilizando o IP de seu servidor, a página “default” do nginx e certificar que tudo está ok. Caso não saiba ou tenha certeza de qual é o IP utilize:


ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

ou

curl http://icanhazip.com

Se está utilizando o CentOS 7, provavelmente precisará de uma nova regra ao Firewall padrão (firewalld), para permitir tráfego na porta 80.




Adicionando nova regra ao Firewalld

firewall-cmd --permanent --zone=public --add-service=http

ou

firewall-cmd --permanent --zone=public --add-port=80/tcp

Restart firewalld

systemctl restart firewalld.service

Abra seu Browser e acesse:


http://IP_do_Seu_Servidor

Você verá a página Default do NGINX, que é exibida para fins de informação e teste.

Página Default Do Nginx
Página Default do NGINX

Segundo Passo – Instalar MySQL(MariaDB)

Agora que temos o servidor web NGINX instalado e configurado, vamos instalar o MariaDB, que irá armazenar e gerenciar os dados do site. O MariaDB é mantido pela comunidade de desenvolvedores originais do antigo e conhecido MySQL.

O MariaDB vem com repositórios padrão do CentOS, bastaria utilizar o yum para instala-lo rapidamente. Porém nós desejamos instalar o MariaDB 10.4, que não é a versão disponível como padrão . Após atualizar o servidor com yum , vamos adicionar o repositório do MariaDB e definir a versão ‘0.4

yum update -y; 

Crie o arquivo abaixo e insira:

nano /etc/yum.repos.d/MariaDB.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

Atualize o cache do yum

yum makecache fast

Instale o MariaDB

yum -y install MariaDB-server MariaDB-client

Vamos dar um start no MariaDB e habilita-lo para iniciar após o reboot.

systemctl start mariadb
systemctl enable mariadb

Com o MariaDB (MySQL) iniciado, precisamos executar um script de segurança que irá remover algumas configurações default e deixará nossa instalação mais segura.

mysql_secure_installation

A primeira opção irá perguntar qual é a senha do root para o MariaDB. Como acabamos de instalar o MariaDB, você deverá deixar esta opção em branco e pressionar enter para continuar. Na próxima questão será solicitado que digite uma senha para o root do MariaDB e confirme.

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.

New password: password
Re-enter new password: password
Password updated successfully!
Reloading privilege tables..
 ... Success!

Para as outras questões digite Y.

Remove anonymous users? [Y/n] Y
...
Disallow root login remotely? [Y/n] Y
...
Remove test database and access to it? [Y/n] Y
...
Reload privilege tables now? [Y/n] Y

Teceiro Passo – Instalar o PHP 7.4


O PHP é o responsável em processar o código para exibir conteúdo dinâmico. Ele poderá executar scripts, conectar-se ao bancos de dados MySQL para obter informações e entregar o conteúdo processado ao seu servidor da Web para exibição.

O primeiro passo será instalar o repositório do CentOS que contém os pacotes de instalação do PHP 7.4

wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm

Habilitar o repositório do php74:

yum install yum-utils -y
yum-config-manager --enable remi-php74

Instalar pacotes do PHP:

yum --enablerepo=remi,remi-php74 install php-fpm php-common

Instalando módulos comuns:

yum --enablerepo=remi,remi-php74 install php-fpm php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml

Configurando o processamento do PHP

Nós já temos agora, o php 7.4 e componentes instalados no servidor mas precisamos fazer algumas modificações para manter o servidor mais seguro.

Edite o arquivo principal de configuração do php:

nano /etc/php.ini

Vamos configurar o PHP para aceitar apenas URLs de arquivos que realmente existem no servidor. Isso atenua uma vulnerabilidade de segurança em que o interpretador PHP pode ser induzido a permitir a execução de código arbitrário se o arquivo .php solicitado não estiver presente no sistema de arquivos.

Localize cgi.fix_pathinfo altere para 0 , isso irá desabilitar essa função.Lembre-se de Remover o “;” antes do nome para descomentar essa função.

cgi.fix_pathinfo=0

Salve e saia do editor nano. ( ctrl+x , y)

Abra e edite o arquivo de configuração do php-fpm www.conf:

nano /etc/php-fpm.d/www.conf

Procure a linha “listen =” e modifique conforme abaixo:

listen = /var/run/php-fpm/php-fpm.sock

Localize listen.owner e listen.group . Descomente removendo o “;” antes das funções e altere para :

listen.owner = nginx
listen.group = nginx

Localize user e group. Altere os valores de apache para nginx

user = nginx
group = nginx

Salve e saia do editor nano. ( ctrl+x , y)

Agora, precisamos apenas iniciar nosso processador de PHP e habilitar para iniciar após o boot.

systemctl start php-fpm
systemctl enable php-fpm

Quarto Passo – Configurar Nginx para processar páginas PHP 7.2

Agora vamos criar um novo arquivo de configuração para o Nginx . Substitua em server_name “nome_dominio_ou_IP_do_Seu_Servidor” para o IP de seu servidor :

nano /etc/nginx/conf.d/default.conf

Insira o código abaixo:

server {
    listen       80;
    server_name  nome_dominio_ou_IP_do_Seu_Servidor;

    # note that these lines are originally from the "location /" block
    root   /usr/share/nginx/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Salve e saia do editor nano. ( ctrl+x , y)

Reinicie o nginx para que as modificações sejam carregadas.

systemctl restart nginx

Para Finalizar, vamos criar um arquivo de teste em php que trará informações sobre nosso servidor e php .

nano /usr/share/nginx/html/info.php

Insira o código:

Phpinfo

Salve e saia do editor nano. ( ctrl+x , y) .

Agora acesse :

http://ip_do_seu_servidor/info.php
.

Será exibido uma página semelhante a :

Php Info 7.2

Agora você tem o LEMP instalado e configurado em seu servidor da melhor forma possível. Com estas configurações você poderá hospedar em seu servidor os mais diversos sistemas, como por exemplo WordPress, Joomla, etc…

Espero que tenha gostado!