zoukankan      html  css  js  c++  java
  • 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环境配置完成,终于可以应用起来了,如果你在配置过程中遇到各种报错,不要气馁,我前前后后也是安装了几遍才可以,其中遇到的问题不计其数,感谢度娘。

  • 相关阅读:
    zookeeper 初步学习
    nginx+redis+4个tomcat 负载均衡
    nginx的配置文件解析
    nginx-----惹不起的端口修改
    Api2Doc生成 Restful API 文档
    swagger2 注解整体说明
    SpringMVC 中xml 配置多数据源
    lombok 注解使用
    springboot 中 集成druid ,redis
    spring学习---day01
  • 原文地址:https://www.cnblogs.com/mjtcn/p/15560483.html
Copyright © 2011-2022 走看看