ubuntu 18 配置apache2并和运行cgi脚本

ubuntu 18 下配置apache2并和运行cgi脚本

配置环境太恶心了,各种问题,感谢度娘。
这个小作业还是不可避免的需要在linux下运行,没办法,只能继续在linux下整一个环境。

安装apache2

1、解决权限问题

安装过程中不可避免的会遇到一些里的权限不足的问题,所以安装前需要解决权限的问题。
su root可以获取最高权限,并在这个终端下左右的命令都具有root权限。第一次使用需要配置密码,以后只用只需输入密码即可。比较推荐这种方式。
sudo + 命令可以让这条命令具有root权限。

2、解决依赖包

pache2安装前需要先解决apache2的依赖包:否则直接安装往往会出现apr not foundAPR-util not foundpcre-config for libpcre not found类似的错误。
arp和apr-util的下载地址在这,可以找到自己适合的版本,以下两个地址是我安装的版本直接下载地址。
apr-1.4.5.tar.bz2下载地址
apr-util-1.5.2.tar.bz2

3、安装apr:

首先根剪切apr与apr-util到/usr/local/src下,然后进行解压和编译安装操作

mv  apr-1.4.6.tar.bz2  /usr/local/src
mv  apr-util-1.5.2.tar.bz2  /usr/local/src
tar -xjvf apr-1.4.6.tar.bz2
tar -xjvf apr-util-1.5.2tar -xjvf apr-1.4.6.tar.bz2
cd apr-1.4.6 
./configure --prefix=/usr/local/apr      #安装在/usr/local/下 命名为apr
make
make install

4、编译安装apr-util

mv  apr-util-1.5.2.tar.bz2  /usr/local/src
tar -xjvf apr-util-1.5.2.tar.bz2
cd apr-util-1.5.2
 ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make
make install

5、pcre-devel包

httpd-2.4.4编译过程也要依赖于pcre-devel软件包,需要事先安装。此软件包系统光盘自带,因此,找到并安装即可。

yum -y install pcre-devel

如果没有,这里可以下载pcre-8.31.zip

./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre # (除了指定Apache的安装目录外,还要安装apr、apr-util、pcre,并指定参数)
make  
make install

6、安装apache2

在解决以上依赖包之后,现在开始进行apache2的安装。
httpd-2.4.4.tar.bz2下载地址

mv httpd-2.4.4.tar.bz2  /usr/local/src
tar -xjvf  httpd-2.4.4.tar.bz2
cd httpd-2.4.4
./configure --prefix=/usr/local/apache2 --enable-module=shared

命令解释
--enable-so:支持动态共享模块,如果支持php将不能与apache一起工作。必须要有
--enable-ssl:启用ssl功能,如果不启用将无法使用https
--enable-mpms-shared=all:prefork、worker、event
--with-mpm=event:event为默认
 --enable-rewrite:支持URL重写
--enable-cgi :支持cgi
--enable-cgid:httpd使用event或者worker得启用被线程方式访问
--enable-modules=most :启用大多数模块
--enable-mods-shared=most:启用大多数共享模块

7、运行apache

sudo apt-get remove --purge apache apache2 # (彻底删除)
sudo /etc/init.d/apache2 restart # 重启
sudo /etc/init.d/apache2 start # 启动
sudo /etc/init.d/apache2 stop # 停止
sudo makedir /home/htdocs 
sudo chmod 777 /home/htdocs #  生成网站目录,并修改权限

启动apache后,在浏览器地址栏输入localhost即可运行。

配置apache支持cgi脚本

1、建立保存cgi脚本的文件夹,进入/var/www/文件下,建立cgi-bi

cd /var/www
mkdir cig-bin

2、在ubuntu 18下,apache2的配置文件都在/etc/apache2下.进入/etc/apache2/mods-enabled,打开mime.load 文件,添加模块

LoadModule mime_module /usr/lib/apache2/modules/mod_mime.so
LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so # 这一行是添加的

3、进入/etc/apache2/conf-enabled,打开serve-cgi-bin.conf,按如下修改:
以下第11行和12行是修改后的路径,16行是新添加的。

<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 .py .sh 
		</Directory>
	</IfDefine>
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

4、重启apache2

sudo /etc/init.d/apache2 restart

运行脚本

1、运行.sh脚本

/var/www/cgi-bin/文件夹建立hw0.sh(建立命令为touch hw0.sh),并写入以下内容:

#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "hello web"
exit 0

然后赋予可执行权限:

sudo chmod a+x hw0.sh

之后在浏览器地址栏输入:localhost/cig-bin/hw0.sh即可

2、运行c脚本

/var/www/cgi-bin/文件夹建立hello.c,并写入以下内容:

#include <stdio.h>
int main()
{
    printf("Content-Type: text/html\n\n");
    printf("Hello, world\n");
    return 0;
}

然后生成cgi文件,这里不需要赋予可执行权限。

gcc hello.c -o hello.cgi

之后浏览器输入localhost/cgi-bin/hello.cgi即可。

注意的问题

错误代码404

404为找不到文件,有可能是路径错误。
apache2的html默认文件夹在/etc/apche2/sites-enabled/000-default.conf
文件中DocumentRoot即默认路径。

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html 
	
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

错误代码500

这是我配置过程遇到最多的问题。
1、如果c脚本生成cgi可以运行,但py,sh脚本不能运行,原因可能是没有为sh脚本赋予可执行权限
2、还有可能的原因为脚本第一行路径不对,解决方式为找到自己的环境的路径,具体参考我上篇文章

至此apache环境配置完成,终于可以应用起来了,如果你在配置过程中遇到各种报错,不要气馁,我前前后后也是安装了几遍才可以,其中遇到的问题不计其数,感谢度娘。

posted @ 2021-11-16 11:57  MJT12044  阅读(1053)  评论(1编辑  收藏  举报