CONFIGURAÇÕES DO SERVIDOR 👋 👁️
- HOST: 88.198.104.148
- USER: ************
- PORTA: 22
- PASSWORD: ********************
- TOKEN GITHUB:
- USUÁRIO GIT
$ git config user.name
: lucioweb - ACESSO SSH:
$ ssh -22 ************@88.198.104.148
PHP 👁️
php -v //Versão do PHP instalada
php -m //Lista os módulos instalados
O comando acima retorna:
[PHP Modules]
calendar
Core
ctype
curl
date
...
...
tokenizer
find / -name php.ini //Localiza arquivos php.ini
O Comando acima retorna:
/etc/php/8.1/cli/php.ini
/etc/php/8.1/apache2/php.ini
Last login: Sun Jun 9 14:33:19 2024 from 177.89.246.188
luciolemos@cloud18344:~$ php -v
PHP 8.1.2-1ubuntu2.17 (cli) (built: May 1 2024 10:10:07) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.17, Copyright (c), by Zend Technologies
with Xdebug v3.1.2, Copyright (c) 2002-2021, by Derick Rethans
luciolemos@cloud18344:~$ sudo add-apt-repository ppa:ondrej/php
[sudo] password for luciolemos:
luciolemos@cloud18344:~$ sudo apt update
luciolemos@cloud18344:~$ sudo apt install php8.3
luciolemos@cloud18344:~$ php -v
PHP 8.1.2-1ubuntu2.17 (cli) (built: May 1 2024 10:10:07) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.17, Copyright (c), by Zend Technologies
with Xdebug v3.1.2, Copyright (c) 2002-2021, by Derick Rethans
luciolemos@cloud18344:~$ sudo update-alternatives --list php
/usr/bin/php.default
/usr/bin/php8.1
/usr/bin/php8.3
luciolemos@cloud18344:~$ sudo update-alternatives --set php /usr/bin/php8.3
update-alternatives: using /usr/bin/php8.3 to provide /usr/bin/php (php) in manual mode
luciolemos@cloud18344:~$ php -v
PHP 8.3.8 (cli) (built: Jun 8 2024 21:34:22) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.8, Copyright (c) Zend Technologies
with Zend OPcache v8.3.8, Copyright (c), by Zend Technologies
luciolemos@cloud18344:~$ systemctl restart apache2.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'apache2.service'.
Authenticating as: Lúcio Flávio Lemos,,, (luciolemos)
Password:
==== AUTHENTICATION COMPLETE ===
luciolemos@cloud18344:~$
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt update
$ sudo apt install php8.2
$ sudo update-alternatives --set php /usr/bin/php8.2 //Alterna para a versão do PHP 8.2
$ sudo update-alternatives --set php /usr/bin/php7.4 //Volta para a versão do PHP 7.4
$ php -v //Verifica a versão
$ php -m //Lista os módulos instalados
sudo update-alternatives --list php //Lista as versões do PHP instaladas
/usr/bin/php7.2
/usr/bin/php7.4
/usr/bin/php8.0
/usr/bin/php8.1
MYSQL 👁️
mysql -V
O comando acima retorna:
mysql Ver 8.0.36-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))
mariadb -V
O comando acima retorna:
mariadb Ver 15.1 Distrib 10.11.6-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
sudo apt install mysql-server
sudo mysql_secure_installation
service mysql status
service mysql start
service mysql stop
service mysql reload
O servidor MySQL é iniciado automaticamente após a instalação. Você pode verificar o status do servidor MySQL com o seguinte comando systemctl status mysql
.
Se o sistema operacional estiver habilitado para systemd, comandos systemctl padrão (ou alternativamente, service com os argumentos invertidos) como stop , start , status e restart devem ser usados para gerenciar o serviço do servidor MySQL.
systemctl status mysql //Funcionou
root@cloud18344:~# mysql
Ou:
root@cloud18344:~# mysql -u root -p
O comando acima retorna:
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 297
Server version: 8.0.36-0ubuntu0.22.04.1 (Ubuntu)
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Repare que o mysql não exigiu autenticação. É possível logar no servidor sem ter que digitar a senha.
mysql> show databases;
O comando acima retorna:
+--------------------+
| Database |
+--------------------+
| crud |
| exemplo1 |
| exemplo2 |
| fsphp |
| information_schema |
| loja |
| mysql |
| performance_schema |
| sys |
+--------------------+
9 rows in set (0.01 sec)
CREATE DATABASE db_crud CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
create table tbl_users
(
id int auto_increment primary key,
first_name varchar(50) not null ,
last_name varchar(50) not null,
email varchar(50) not null,
message varchar(20) not null,
ts timestamp null
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
ALTER TABLE tbl_users MODIFY first_name varchar(50) COLLATE utf8mb4_0900_ai_ci;
mysql> SHOW CHARACTER SET;
+----------+---------------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+---------------------------------+---------------------+--------+
| armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 |
| ascii | US ASCII | ascii_general_ci | 1 |
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
| binary | Binary pseudo charset | binary | 1 |
| cp1250 | Windows Central European | cp1250_general_ci | 1 |
| cp1251 | Windows Cyrillic | cp1251_general_ci | 1 |
| cp1256 | Windows Arabic | cp1256_general_ci | 1 |
| cp1257 | Windows Baltic | cp1257_general_ci | 1 |
| cp850 | DOS West European | cp850_general_ci | 1 |
| cp852 | DOS Central European | cp852_general_ci | 1 |
| cp866 | DOS Russian | cp866_general_ci | 1 |
| cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 |
| dec8 | DEC West European | dec8_swedish_ci | 1 |
| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 |
| euckr | EUC-KR Korean | euckr_korean_ci | 2 |
| gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 |
| gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 |
| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |
| geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 |
| greek | ISO 8859-7 Greek | greek_general_ci | 1 |
| hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 |
| hp8 | HP West European | hp8_english_ci | 1 |
| keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 |
| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |
| koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 |
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |
| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |
| macce | Mac Central European | macce_general_ci | 1 |
| macroman | Mac West European | macroman_general_ci | 1 |
| sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 |
| swe7 | 7bit Swedish | swe7_swedish_ci | 1 |
| tis620 | TIS620 Thai | tis620_thai_ci | 1 |
| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |
| ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |
| utf16 | UTF-16 Unicode | utf16_general_ci | 4 |
| utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 |
| utf32 | UTF-32 Unicode | utf32_general_ci | 4 |
| utf8mb3 | UTF-8 Unicode | utf8mb3_general_ci | 3 |
| utf8mb4 | UTF-8 Unicode | utf8mb4_0900_ai_ci | 4 |
+----------+---------------------------------+---------------------+--------+
41 rows in set (0.01 sec)
Repare que para o charset
utf8mb4
a collation éutf8mb4_0900_ai_ci
.
SHOW CHARACTER SET LIKE 'utf%';
+---------+------------------+--------------------+--------+
| Charset | Description | Default collation | Maxlen |
+---------+------------------+--------------------+--------+
| utf16 | UTF-16 Unicode | utf16_general_ci | 4 |
| utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 |
| utf32 | UTF-32 Unicode | utf32_general_ci | 4 |
| utf8mb3 | UTF-8 Unicode | utf8mb3_general_ci | 3 |
| utf8mb4 | UTF-8 Unicode | utf8mb4_0900_ai_ci | 4 |
+---------+------------------+--------------------+--------+
5 rows in set (0.01 sec)
Alterando o método de autenticação do root. O comando
ALTER USER
altera o método de autenticação do usuário root para um que use uma senha. O exemplo a seguir altera o método de autenticação paramysql_native_password
:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Diferent@1968#';
Alterando o método de autenticação do root. O comando
ALTER USER
altera o método de autenticação do usuário root para um que use uma senha. O exemplo a seguir altera o método de autenticação paracaching_sha2_password
:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Diferent@1968#';
Agora:
root@cloud18344:~# mysql -u root -p
Enter password: Diferent@****#
Verificando quais métodos de autenticação cada usuário utiliza
SELECT user,authentication_string,plugin,host FROM mysql.user;
Retorna:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user1 | *668425423DB5193AF921380129F465A6425216D0 | mysql_native_password | % |
| debian-sys-maint | $A$005N]s;"azZNI
T OaijZQpZxQlq2DwIy3GfWsMGGFn/wV2YlH//rNbQExVNT9 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | *0B65A16710B01533DBAA7AA5CC7AB93313B0ACD4 | mysql_native_password | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
6 rows in set (0.00 sec)
Apache2 👁️
sudo apt install apache2
apache2 -v
sudo systemctl status apache2
sudo systemctl start apache2
service apache2 status
service apache2 start
ufw 👁️
sudo ufw app list
sudo ufw allow in "Apache"
sudo ufw status //Para verificar o status do UFW
sudo ufw enable //Para habilitar o UFW
sudo ufw disable //Se você decidir que não quer usar o UFW, você pode desativá-lo com esse comando.
sudo ufw allow ssh //Para configurar seu servidor para permitir as conexões de entrada via SSH.
sudo ufw allow 22 //No entanto, podemos realmente escrever a regra equivalente, especificando a porta em vez do nome do serviço.
sudo ufw allow http
sudo ufw allow https
sudo ufw reset //Se você já tiver regras do UFW configuradas, mas decidir que quer começar novamente.
sudo ufw reload
sudo ufw status numbered //O comando status do UFW tem uma opção para mostrar números ao lado de cada regra
Git Hub 👁️
git config user.name //Exibindo o nome do usuário git
git config --global user.name "lucioweb" //Nome do usuário
git config --global user.email "lucio.lemos.385@ufrn.edu.br" //Email do suário
git --version //Exibe a versão instalada
git config --list //Listando as configurações
Note GIT ≠ GIT HUB ≠ GIT BASH
Alert
De forma geral, ...
Curl 👁️
Curl é uma ferramenta para transferir dados de/para um servidor, usando um dos protocolos suportados. Normalmente, usamos o HTTP, mas as opções são muitas, de FTP e GOPHER a IMAP e LDAP.
O cURL é uma ferramenta de linha de comando
que funciona como interface para a biblioteca que faz o serviço pesado, o libcurl.
De forma geral, seu navegador realiza requisições web, recebe respostas, lê/escreve cookies e renderiza sua página. Você pode usar o cURL para fazer tudo isso, exceto a renderização, que cabe ao seu navegador.
Ele oferece uma infinidade de funções úteis como realização de autenticação, interação com API's, preencher formulários HTML, download de arquivos e páginas HTML, etc.
sudo apt install curl
curl -V //Verificando a versão instalada do curl
curl -L www.alura.com/ //Visualizando o HTML do site www.alura.com
curl -O https://releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso //Fazendo download de arquivos
curl -i https://www.alura.com/ //Agora temos um retorno diferente. Primeiro temos as informações de cabeçalho.
curl http://icanhazip.com
NodeJS 👁️
dev@dev:~$ node -v
-> v20.13.1
dev@dev:~$ npm -v
-> 10.5.2
dev@dev:~$ nvm -v
-> 0.39.7
dev@dev:~$ nvm ls
-> v20.13.1
nvm ls-remote //Lista as versões disponíveis do Node
dev@dev:~$ nvm use 20
-> Now using node v20.13.1 (npm v10.5.2)
SSH 👁️
ls -al ~/.ssh
O comando acima retorna:
total 24
drwx------ 2 dev dev 4096 May 28 07:46 .
drwx------ 12 dev dev 4096 May 28 06:51 ..
-rw------- 1 dev dev 464 May 28 07:22 id_ed25519
-rw-r--r-- 1 dev dev 109 May 28 07:22 id_ed25519.pub
-rw------- 1 dev dev 1956 May 28 07:46 known_hosts
-rw------- 1 dev dev 1120 May 28 07:45 known_hosts.old
cat ~/.ssh/id_ed25519.pub
O comando acima retorna:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJtbrJAkEGhsQHazSe7sFy4CcQbgEdCV6jPLCV
9O2Nm6 lucio.lemos.385@ufrn.edu.br
- Você pode gerar uma nova chave SSH no computador local. Depois de gerar a chave, você pode adicionar a chave pública à sua conta em GitHub.com
para habilitar a autenticação para operações do Git no SSH.
ssh-keygen -t ed25519 -C "luciolemos.j5@gmail.com"
O comando acima retorna
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/dev/.ssh/id_ed25519):
/home/dev/.ssh/id_ed25519 already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/dev/.ssh/id_ed25519
Your public key has been saved in /home/dev/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:2yHw+hDQzMwTaNv4bOISXWrZX4K2BA13OPAqI+KFN6o luciolemos.j5@gmail.com
The key's randomart image is:
+--[ED25519 256]--+
| .o.. |
| +B+.. |
| ..BXo |
| . +o++ |
|o.o=.O..S . |
|o.=oB Oo.+.. |
| o + =oo.o. |
|. . . .o. |
|E . . |
+----[SHA256]-----+
ls -al ~/.ssh
O comando acima retorna:
total 24
drwx------ 2 dev dev 4096 May 28 07:46 .
drwx------ 12 dev dev 4096 May 28 06:51 ..
-rw------- 1 dev dev 464 May 29 06:47 id_ed25519
-rw-r--r-- 1 dev dev 105 May 29 06:47 id_ed25519.pub
-rw------- 1 dev dev 1956 May 28 07:46 known_hosts
-rw------- 1 dev dev 1120 May 28 07:45 known_hosts.old
cat ~/.ssh/id_ed25519.pub
ssh -T git@github.com
O comando acima retorna:
Enter passphrase for key '/home/dev/.ssh/id_ed25519':
Hi luciolemos! You've successfully authenticated, but GitHub does not provide shell access.
Ubuntu CLI 👁️
mkdir fsphp && cd $_ //Criando e acessando simultaneamente um diretório.
pwd //Retorna o diretório corrente
sudo apt install tree //Instala tree
lsb_release -a
O comando acima retorna:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy
$ sudo apt update
$ sudo apt upgrade
root@cloud18344:~# chmod -R 777 /var/www/crud
Para localizar um programa instalado no Linux basta usar o comando which.
Por exemplo, para localizar onde está o executável do Firefox digite:
$ which firefox
Para saber quais são os diretórios do programa instalado digite o comando whereis.
Exemplo:
$ whereis firefox
RUST 👁️
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
$ rustc --version
Retorna:
rustc 1.78.0 (9b00956e5 2024-04-29)
~$ rustup self uninstall
Retorna:
Thanks for hacking in Rust!
This will uninstall all Rust toolchains and data, and remove
$HOME/.cargo/bin from your PATH environment variable.
Continue? (y/N)
cargo new hello_world
Vamos conferir o que o Cargo gerou para nós:
dev@dev:~$ ls -l
total 4
drwxr-xr-x 4 dev dev 4096 Jun 1 06:44 hello_world
dev@dev:~$ cd hello_world
dev@dev:~/hello_world$ tree .
.
├── Cargo.toml
└── src
└── main.rs
2 directories, 2 files
dev@dev:~/hello_world$
ELEARNING_PHP (PROJETO) 👁️
sudo mkdir /var/www/elearning_php
sudo chown -R $USER:$USER /var/www/elearning_php
sudo nano /etc/apache2/sites-available/elearning_php.conf
<VirtualHost 88.198.104.148:80>
ServerName elearning_php
ServerAlias www.elearning_php
ServerAdmin webmaster@localhost
DocumentRoot /var/www/elearning_php
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
a2ensite elearning_php
a2dissite 000-default
systemctl reload apache2
sudo nano /var/www/elearning_php/index.html
cd elearning_php
sudo nano index.php
sudo nano /etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
DirectoryIndex index.php index.cgi index.pl index.html index.xhtml index.htm
</IfModule>
CREATE TABLE db_example_database.tbl_todo_list (
item_id INT AUTO_INCREMENT,
content VARCHAR(255),
PRIMARY KEY(item_id)
);