A maioria dos servidores locais que rodamos para desenvolvimento de uma aplicação nada mais é do que um protótipo para aquilo que realmente irá funcionar.
No Curso de C++ Moderno Avançado nós mostramos como fazer isso no Mint que também serve para Ubuntu, Debian e sistemas relacionados, e como um pouco mais de esforço você consegue fazer isso no Windows se baseando na instalação do Apache que você pode entender e saber como funciona nesse artigo.
Você também pode seguir esse tutorial e substituir tudo que houver no tutorial de .sh
por .cpp
que, com certeza, irá funcionar tranquilamente.
No Gentoo é o mesmo processo só que com caminhos e ferramentas de adição diferente, vamos ver como fazer!
Antes de mais nada. lógico, você precisa do Apache instalado:
Atualmente, por padrão, o Apache no Gentoo já possui suporte para CGI, logo não precisa adicionar flags ao make.conf
(~APACHE2_MODULES=”cgi”~). Então, só basta editar os seguintes arquivos:
Outra coisa que funciona também como padrão é a linha LoadModule cgi_module modules/mod_cgi.so
no arquivo: /etc/apache2/httpd.conf
, ou seja, não precisa fazer nada, mas é bom sempre dar aquela conferida pra ver se realmente está descomentada.
No entanto, abra o arquivo:
E descomente a linha: AddHandler cgi-script
. Vai estar assim:
Deixe assim:
Se quiser que o Apache também rode URLs com extensão .cpp
(por padrão ele só lê .html
e pra quem tem o PHP instalado, lê também .php
), adicione-o ao final da linha, assim:
Pode até adicionar mais extensões aí, caso seja do seu interesse, ex.:
.cc
,.c
,.hpp
,.h
, …
Abra o arquivo:
Procure a linha que tem a variável APACHE2_OPTS
e ela está mais ou menos assim:
Adicione o suporte para CGI inserindo um -D CGI
ao final:
Se quiser, adicione também o -D CPP
ao final, igual se faz quando instala o PHP(-D PHP
), deixando assim:
No caso do PHP isso é obrigatório, mas pra C++ essa parte é opcional!
Use o seu gerenciador de inicialização para restartar o Apache. No meu caso eu uso OpenRC:
Se você usa SystemD use o comando correspondente para reiniciar o Apache!
Antes de mais nada é interessante permitir criar e ler arquivos em CGI, para isso atribua as seguintes permissões:
Agora crie o diretório cgi-bin
:
Lembrando que o Gentoo separa o
localhost/htdocs
, ou seja, os arquivos públicos ficam emhtdocs
e os arquivos backend ficam emlocalhost/cgi-bin
.
Geralmente o próprio Apache cria esse diretório, se já houver, é recomendado também alterar o dono desse diretório pra você conseguir criar e editar arquivos sem precisar de usar sudo
ou root
, mas se não houver, crie o diretório:
Se já existir não esqueça de se tornar dono dele:
sudo chown -R $USER:$USER /var/www/localhost/cgi-bin
.
Em sistemas baseados em APT(Debian, Ubuntu, Mint,…) esse diretório fica em /usr/lib/cgi-bin
.
Agora vamos criar um arquivo dentro do diretório localhost/cgi-bin
:
E use o seguinte código de exemplo:
Atenção para os dois
/n/n
emContent-Type
, eles são fundamentais para evitar o erro do Apache de interpretação de código:Internal Server Error
.
Compile normalmente:
Se tiver habilitando o
AddHandler
para.cpp
também, pode salvar comoindex.cpp
ou até mesmo sem extensão!
Agora é só acessar o entendeço: http://localhost/cgi-bin/ ou http://localhost/cgi-bin/index.cpp(se você habilitou e salvou como index.cpp
)
Se quiser que o Apache interprete o index.cpp
sem precisar indicar o arquivo na URL edite o arquivo: /etc/apache2/modules.d/00_default_settings.conf
:
Procure a linha que tem o conteúdo:
E adicione o index.cpp
logo após ao index.html.var
deixando assim:
E reinicie o servidor:
É possível fazer absolutamente tudo: GET, POST, Autenticação, Sessões, Banco de Dados, Tokens, Cookies,… com C++ no Apache, aliás, muitos sites famosos que você acessa usa C++ na Web!
Para mais informações acesse o links:
web cpp apache desenvolvimentoweb