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環境配置完成,終於可以應用起來了,如果你在配置過程中遇到各種報錯,不要氣餒,我前前后后也是安裝了幾遍才可以,其中遇到的問題不計其數,感謝度娘。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM