配置个C++ CGI环境真是要给人整死,所幸终于解决了~
环境:ubuntu-server 20.04 LTS
卸载apache2
(要保留网页文件的不要 rm -rf /var/www)
apt autoremove apache2
rm -rf /etc/apache2
rm -rf /var/www
dpkg -P apache2
1.安装apache2
root用户:
apt update
apt install apache2
安装成功后应该会自启动,没启动的话
systemctl start apache2
浏览器输入localhost访问,这里用域名访问了,总之会出现下面的页面,说明安装成功。
2.建立软链接
首先“ cd /etc/apache2 ” 进入到apache2的目录里输入ls查看 可以看到这两个文件夹 ” mods-enabled “ 和 ” mods-available “ 其中 ” mods-enabled “ 为常用的(也就是默认开启的), ” mods-available “为不常用的(也就是默认不开启) (引自 Ubuntu16.04下Apache2的CGI简单配置)
对三个文件:cgid.conf、cgid.load、cgi.load 建立软链接
cd /etc/apache2
ln -s mods-available/cgid.conf mods-enabled/cgid.conf
ln -s mods-available/cgid.load mods-enabled/cgid.load
ln -s mods-available/cgi.load mods-enabled/cgi.load
3.开放端口
看个人需求,这里以开放端口6000为例,在Listen 80下面加上Listen 6000
cd /etc/apache2
vim ports.conf
重启apache2
systemctl restart apache2
据说也要改sites-enabled中配置文件的端口,但是没改也能用,搞不懂。
4.开启支持cgi
a2enmode cgi
systemctl restart apache2
5.编写测试CGI
默认cgi路径为usr/lib/cgi-bin
cd /usr/lib/cgi-bin
vim 1.cpp
#include <iostream>
using namespace std;
int main(void)
{
cout << "Content-type:text/html\r\n\r\n";
cout << "succeed" << endl;
}
g++ 1.cpp -o 1.cgi
chmod 755 1.cgi
注意,按照规范,CGI的标准输出要写Head信息(这里用Content-type),具体另行查询。 否则页面会500错误
浏览器访问
成功执行了CGI程序
一次性配置
apt update
apt install apache2
cd /etc/apache2
ln -s mods-available/cgid.conf mods-enabled/cgid.conf
ln -s mods-available/cgid.load mods-enabled/cgid.load
ln -s mods-available/cgi.load mods-enabled/cgi.load
a2enmode cgi
systemctl restart apache2
我解决了,你解决了吗?
参考博客:Ubuntu16.04下Apache2的CGI简单配置
|