Uma breve nota sobre como escrevi a parte do servidor para o editor 3D Cube Art Project, o servidor deve salvar e exibir o trabalho dos usuários da versão web, fornecendo-lhes URLs curtas usando o botão salvar. No começo eu queria usar Swift/PHP/Ruby/JS ou alguma linguagem moderna semelhante para o backend, mas depois de observar as características do meu VPS, decidi escrever o servidor em C/C++.
Primeiro você precisa instalar o libfcgi no servidor e o módulo de suporte fcgi para o seu servidor web, exemplo para Ubuntu e Apache:
sudo apt install libfcgi libapache2-mod-fcgid
Em seguida configuramos o módulo no config:
FcgidMaxProcessesPerClass – número máximo de processos por classe, defini como 1 processo porque não espero uma carga grande.
AddHandler fcgid-script .fcgi – extensão de arquivo com a qual o módulo fcgi deve iniciar.
Adicione à configuração a pasta a partir da qual os aplicativos cgi serão iniciados:
A seguir, escrevemos uma aplicação em C/C++ com suporte fcgi, montamos e copiamos para a pasta /var/www/html/cgi-bin.
Exemplos de código e script de construção:
https://gitlab.com/demensdeum/cube-art-project-server/-/blob/master/src/cubeArtProjectServer.cpp
https://gitlab.com/demensdeum/cube-art-project-server/-/blob/master/src/build.sh
Depois disso, você precisará reiniciar seu servidor web:
systemctl restart apache2
Em seguida, insira as permissões necessárias para executar a pasta cgi-bin via chmod.
Depois disso, seu programa cgi deverá funcionar através de um navegador usando o link, exemplo para o servidor Cube Art Project:
http://192.243.103.70/cgi-bin/cubeArtProject/cubeArtProjectServer.fcgi
Se algo não funcionar, consulte os logs do servidor web ou conecte-se com um depurador ao processo em execução; o processo de depuração não deve ser diferente do processo de depuração de um aplicativo cliente normal.
Fontes
https://habr.com/ru/post/154187/ um
http://chriswu.me/blog/writing-hello-world-in-fcgi-with-c-plus-plus/
Código fonte
https://gitlab.com/demensdeum/cube-art -projeto-servidor