Ubuntu下配置Apache以及搭载CGI
在Windows下自己下载应用过Apache,在Linux下也用到了服务器,就选择了Apache。Apache的安装在Ubuntu下异常简单。
1. 上网下载自动包安装
sudo apt-get install apache2
2. 访问网址尝试安装是否成功
www.127.0.0.1 or http://localhost
成功的话将会出现Apache的欢迎页面
3. 启动Apache
/etc/init.d/apache2 start
4. 重启Apache
/etc/init.d/apache2 restart
5. 停止Apache
/etc/init.d/apache2 stop
好了,服务器搭好了接下来就可以跑程序了~
6. Web文档的根目录
在/etc/apache2/sites-available/000-default.conf有说明
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
/var/www
7. 配置CGI
在Web文档的根目录下新建cgi-bin目录,即/var/www/cgi-bin/。cgi代码均放置于该目录下。
当然该目录也可以自己定义,不得不说的是,CGI的配置参考了很多资料确实坑道了自己,由于现在Ubuntu的版本和Apache的版本,变化是有点的。
apache2.conf conf-enabled magic mods-enabled sites-available
conf-available envvars mods-available ports.conf sites-enabled
这是/etc/apache2目录下的所有文件和文件夹。其中较为关注的主要有available和enabled,其中我们配置的CGI并没有被包含在enabled内,而且enabled中的
文件均为avaliable中的链接。
ls -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load
ls -s /etc/apache2/mods-available/cgid.load /etc/apache2/mods-enabled/cgid.load
打开这两个文件其实是导入了
LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so
LoadModule cgid_module /usr/lib/apache2/modules/mod_cgid.so
同样地,在/etc/apache2/sites-enabled中打开的链接也是available中的sites-available的000-defalut.conf。
主要的配置都在/etc/apache2/conf-enabled中,该目录如下所示。
charset.conf other-vhosts-access-log.conf serve-cgi-bin.conf
localized-error-pages.conf security.conf
可以看到CGI的配置就在serve-cgi-bin.conf这个文件中。
打开该文件,便可以看到
<IfModule mod_alias.c>
<IfModule mod_cgi.c>
Define ENABLE_USR_LIB_CGI_BIN
</IfModule> <IfModule mod_cgid.c>
Define ENABLE_USR_LIB_CGI_BIN
</IfModule> <IfDefine ENABLE_USR_LIB_CGI_BIN>
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory "/var/www/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
AddHandler cgi-script .cgi .pl
</Directory>
</IfDefine>
</IfModule> # vim: syntax=apache ts= sw= sts= sr noet
其中/var/www/cgi-bin可以改为自己的cgi-bin路径名,其中Module mod_cgid.c和Module mod_cgi.c正是我们之前导入cgi.load和cgid.load的原因。
其实避免错误的话,可以将所有的available文件导入至enabled文件夹中~~~。
8. 配置这个完了,就该尝试一下了吧>.<
8.1 在/var/www/cgi-bin中新建文件HelloWorld.c
键入如下代码:
/**
* CGI测试程序
*/ #include "stdio.h" int main(int argc, char* argv[])
{
printf("Context-Type:text/html\n\n"); //这个必须得有
printf("Hello,World!\n");
return ;
}
8.2 编译源文件
sudo gcc -o HelloWorld.cgi HelloWorld.c
8.3 打开浏览器测试输出
http://localhost/cgi-bin/HelloWorld.cgi
终于出现了!!!
Hello,World!
结束了,写在博客上,防止以后忘记。
Ubuntu下配置Apache以及搭载CGI的更多相关文章
- ubuntu下配置Apache
ubuntu下配置Apache Apache的默认文档根目录是在Ubuntu上的/var/www目录 配置文件是/ etc/apache2/apache2.conf配置存储在的子目录在/etc/apa ...
- Ubuntu下配置Apache的Worker模式
其实Apache本身的并发能力是足够强大的,但是Ubuntu默认安装的是Prefork模式下的Apache.所以导致很多人后面盲目的去 安装lighttpd或者nginx一类替代软件.但是这类软件有一 ...
- 在ubuntu下配置apache运行python脚本
2008-12-05 常用的简单命令 sudo apt-get remove --purge apache apache2 (彻底删除) sudo /etc/init.d/apache2 r ...
- Ubuntu下配置apache开启https
一.HTTPS简述随着网络的日常,信息安全越来越重要,传统的网站都是http协议明文传输,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输.身份认证的网络协议,比http协议安全. 那ht ...
- Ubuntu 下配置apache和APR
软件环境:ubuntu14.04 虚拟机Vmware 软件:http://httpd.apache.org/ httpd-2.2.29.tar.gz 不需要单独下载APR. 1.解压apach ...
- ubuntu下配置Apache+mod_wsgi+Django项目(个人测试)
经过了一个星期的摸索,查找资料以及实验,我搭建的环境基本能用(还有就是Django后台的静态文件加载的问题) 这里面只是介绍一下我的过程,因为对应Apache还不是很熟练,特别是配置文件.只能供大家参 ...
- 在Ubuntu下配置Apache多域名服务器
1. 目标: 在本机 实现访问不同域名 可以访问不同的目录. 即:访问a.com 进入 /var/www/a 目录下的程序,访问b.com 进入/var/www/b目录下的程序. 2.遇到的问题: / ...
- Ubuntu下配置Nginx HTTPS
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入S ...
- [Apache手册]Linux环境下配置Apache运行cgi
CGI动态页面 相关模块 相关指令 mod_alias mod_cgi AddHandler Options ScriptAlias CGI(公共网关接口)定义了web服务器与外部内容生成程序之间交互 ...
随机推荐
- CF1151FSonya and Informatics
CF1151FSonya and Informatics 给一个长度为 n$ (n\leq 100)$的 \(0/1\) 串,进行 k\((k \leq 10^9)\)次操作,每次操作选择两个位置 \ ...
- Linux 内核驱动支持什么设备
struct usb_device_id 结构提供了这个驱动支持的一个不同类型 USB 设备的列表. 这个 列表被 USB 核心用来决定给设备哪个驱动, 并且通过热插拔脚本来决定哪个驱动自动加载, 当 ...
- boostrap-非常好用但是容易让人忽略的地方【5】:input-group-btn
1.正常的使用 <div class="form-group"> <div class="input-group"> <input ...
- python知识点总结01(不定时更新)
手写一个完整的装饰器模版 # 用于修复被装饰对象的名称空间 from functools import wrape def wrapper(func): @wraps(func) def inner( ...
- 最长公共前缀 leetcode 14
方法一(纵向扫描) 解题思路 先计算出数组中最小的字符串长度,这样就避免了越界的情况,思路更加明确,但同时时间复杂度就相应的上升了. 先计算所有字符串在同一列上的字符是否相同,然后依次向后延伸. 代码 ...
- docker常用命令(不包括run和build)
docekr 常用命令 :ls 列出容器 $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE jdk fec5236a803b seconds ...
- jenkins邮件通知html魔板
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 20191121-11 Scrum立会报告+燃尽图 07
次作业要求参见 http://edu.cnblogs.com/campus/nenu/2019fall/homework/10071 一:组名: 组长组 组长:杨天宇 组员:魏新 罗杨美慧 王歆瑶 ...
- ES6学习----let、const、解构赋值、新增字符串、模板字符串、Symbol类型、Proxy、Set
这篇es6的学习笔记来自于表哥 表严肃,是我遇到过的讲课最通透,英文发音最好听的老师,想一起听课就去这里吧 https://biaoyansu.com/i/hzhj1206 ES6就是JS6,JS的第 ...
- 【题解】P4585 [FJOI2015]火星商店问题(线段树套Trie树)
[题解]P4585 [FJOI2015]火星商店问题(线段树套Trie树) 语文没学好不要写省选题面!!!! 题目大意: 有\(n\)个集合,每个集合有个任意时刻都可用的初始元素.现在有\(m\)个操 ...