# Publicar o seu site

## Para onde vão os seus ficheiros

Cada domínio da sua conta tem a sua pasta, e o seu site é servido a partir da pasta `public_html` que ela contém:

```
/home/USERNAME/domains/your-domain.com/public_html
```

`USERNAME` é o nome de utilizador da sua conta, apresentado na sua área de cliente. Um ficheiro `index.php` ou `index.html` colocado em `public_html` torna-se a página inicial do seu site.

## Colocar os seus ficheiros

Três caminhos levam à mesma pasta; escolha o que lhe convém.

### O gestor de ficheiros

No painel, **File Manager**: envie os seus ficheiros a partir do navegador, incluindo um arquivo `.zip`, que descomprime no próprio local. É o caminho mais rápido para alguns ficheiros.

### O FTP cifrado (FTPS)

Num programa de FTP como o FileZilla:

| Definição              | Valor                                                                            |
| ---------------------- | -------------------------------------------------------------------------------- |
| **Protocolo**          | FTP, com **cifragem TLS explícita** (FTPS)                                       |
| **Anfitrião**          | o nome do seu servidor, por exemplo `web1.simafri.cloud`                         |
| **Porta**              | `21`                                                                             |
| **Nome de utilizador** | o nome de utilizador da sua conta, ou uma conta FTP criada em **FTP Management** |
| **Palavra-passe**      | a do painel, ou a da conta FTP                                                   |

A cifragem TLS protege a sua palavra-passe e os seus ficheiros durante a transferência; no FileZilla, escolha **Requer FTP explícito sobre TLS**. Uma conta FTP criada em **FTP Management** tem a forma `name@your-domain.com` e pode ficar limitada a uma pasta, para um prestador de serviços, por exemplo.

### O SSH e o SFTP

O acesso SSH faz-se por **chave**, que regista no painel:

1. Ainda não tem chave? No seu computador, execute `ssh-keygen -t ed25519` e abra o ficheiro que termina em `.pub`: é a sua chave **pública**.
2. No painel, abra **SSH Keys** e cole a sua chave pública.
3. Ligue-se:

```
ssh USERNAME@web1.simafri.cloud
```

A mesma chave abre o **SFTP** (porta `22`) no FileZilla ou no WinSCP. Só se regista a chave pública: a sua chave privada fica no seu computador.

## Escolher a versão de PHP

Cada domínio escolhe a sua versão de PHP em **PHP Version Selector**. Estão hoje disponíveis o **PHP 8.4**, o **8.3** (a versão predefinida), o **8.1** e o **7.4**, com OPcache e as extensões habituais: intl, mbstring, gd, curl, zip, xml, sodium, bcmath, soap, PDO para MySQL e SQLite. A sua aplicação pede outra versão? Escreva ao suporte: a nossa equipa adiciona-a.

## Criar uma base de dados

1. No painel, abra **MySQL Databases** e crie uma base de dados: o seu nome e o seu utilizador têm a forma `USERNAME_nome`.
2. Anote a palavra-passe do utilizador.
3. Na sua aplicação, indique:

| Definição                          | Valor                                               |
| ---------------------------------- | --------------------------------------------------- |
| **Anfitrião**                      | `localhost`                                         |
| **Porta**                          | `3306`                                              |
| **Base de dados** e **utilizador** | os que acabou de criar, por exemplo `USERNAME_site` |

O **phpMyAdmin**, aberto a partir da mesma secção, importa um ficheiro `.sql`, exporta a sua base de dados e percorre as suas tabelas.

## Composer, Node.js e as frameworks

Por SSH, o seu alojamento executa:

* **Composer 2**: `composer install`, `composer update`;
* **Node.js 24** e **npm**: `npm install`, `npm run build` para compilar o seu front-end ou os seus assets;
* **Git**, **Python 3** e **Perl**.

Para **Symfony** ou **Laravel**, a raiz web do domínio é a pasta `public/` do projeto. Coloque o seu projeto ao lado de `public_html` e substitua depois `public_html` por uma ligação para a sua pasta `public/`:

```
cd ~/domains/your-domain.com

mv public_html public_html.original

ln -s my-project/public public_html
```

Os comandos da framework (`php bin/console`, `php artisan`) executam-se na pasta do projeto. Para um front-end **Angular**, **React** ou **Vue**, coloque o resultado de `npm run build` em `public_html`, com um ficheiro `.htaccess` que reencaminha as rotas para `index.html`.

Uma aplicação que deve ficar em execução contínua, como um servidor Node.js ou uma fila de mensagens, tem o seu lugar num [VPS Pro](https://docs.simafri.com/pt/vps-pro/).

## Agendar uma tarefa

Em **Cron Jobs**, indique a frequência e o comando, por exemplo todos os dias às 3h00:

```
0 3 * * * /usr/local/bin/php /home/USERNAME/domains/your-domain.com/my-project/bin/console app:cleanup
```

## O HTTPS dos seus domínios

Cada domínio e subdomínio recebe o seu **certificado HTTPS** Let's Encrypt, pedido e renovado automaticamente assim que o domínio aponta para o seu servidor. **SSL/TLS Certificates** apresenta o certificado de cada domínio. Para encaminhar sempre os seus visitantes para o endereço em `https://`, acrescente no início do ficheiro `.htaccess` de `public_html`:

```
RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
```

## Perguntas frequentes

### O meu site ainda mostra a página predefinida.

A sua página inicial deve ficar diretamente em `public_html`, com o nome `index.php` ou `index.html`, e não numa subpasta. Elimine a página predefinida se ainda lá estiver.

### Como instalo o WordPress?

Escreva ao suporte indicando o domínio: a nossa equipa instala o WordPress no seu alojamento e entrega-lhe o acesso à sua administração.

### A minha ligação SSH é recusada.

Verifique se a sua chave **pública** figura em **SSH Keys** e se se liga com o **Nome de utilizador** da sua conta. A ligação SSH faz-se por chave: o seu programa deve utilizar a chave privada que corresponde à que registou.
