Apache2第一步,設置環境與HelloWorld.html跟HelloWorld.cgi
這篇會從安裝一路講到HelloWorld.html
並且做好cgi相關設定,可以執行cgi程式
環境的部分是在Raspberry Pi 3上面的Ubuntu16.04
web server用的是apache2.4
方法對的話很快就能建構好了,那我們就開始吧
[安裝apache2]
接著開放apache跟ssh(後者是我自己需要的,若不需要可不須開放)
如果有需要使用tcp socket的話記得開放特定port
最後我們來查看一下有沒有設定成功
移動到你帳號的目錄(例如:/home/burwei/)
創建一個名為public_html資料夾,然後設定權限
寫入以下內容 ,並儲存
[開啟可執行CGI模式]
修改/etc/apache2/mods-enabled/userdir.conf
改成以下內容(其實只需要改一點點而已)
寫入以下內容 ,並儲存
首先,我們來寫一個簡單的HelloWorld.cgi
編譯的時候有把副檔名編譯成.cgi,就像這樣
然後在瀏覽器中輸入ip/~username/helloworld_new.html即可看到網頁
例如: 140.113.1.1/~burwei/helloworld_new.html
點擊按鈕,可以看到CGI發揮作用了
[參考資料]
How To Install Apache Web Server on Ubuntu 16.04
w3schools.com
今天筆記到此
希望有幫助未來遺忘這些的自己,以及需要的人
並且做好cgi相關設定,可以執行cgi程式
環境的部分是在Raspberry Pi 3上面的Ubuntu16.04
web server用的是apache2.4
方法對的話很快就能建構好了,那我們就開始吧
[目錄]
前與注意事項
安裝apache2
防火牆設定
開啟userdir模式
執行HelloWorld.html
開啟可執行cgi模式
執行加強版HelloWorld.html與HelloWorld.cgi
參考資料
[前言與注意事項]
本文是記錄下如何用apache2架設簡單網頁以及CGI的設定
整個設定都是圍繞在使用userdir也就是public_html的方式
所有相關的程式及檔案都需要放在public_html之下
需要注意的是
設定完ufw之後,所有socket都不能用了
要用的話要用ufw allow,在防火牆設定那邊會提到
前與注意事項
安裝apache2
防火牆設定
開啟userdir模式
執行HelloWorld.html
開啟可執行cgi模式
執行加強版HelloWorld.html與HelloWorld.cgi
參考資料
[前言與注意事項]
本文是記錄下如何用apache2架設簡單網頁以及CGI的設定
整個設定都是圍繞在使用userdir也就是public_html的方式
所有相關的程式及檔案都需要放在public_html之下
需要注意的是
設定完ufw之後,所有socket都不能用了
要用的話要用ufw allow,在防火牆設定那邊會提到
[安裝apache2]
在terminal中輸入
sudo apt-get install apache2
[防火牆設定]
ufw是一個在Ubuntu上好用的防火牆tool,用簡化的介面來跑iptable
在terminal中輸入,查看ufw的application清單
在terminal中輸入,查看ufw的application清單
sudo ufw app list
接著開放apache跟ssh(後者是我自己需要的,若不需要可不須開放)
sudo ufw allow 'Apache Full' sudo ufw allow 'OpenSSH'
如果有需要使用tcp socket的話記得開放特定port
sudo ufw allow 2000/tcp
最後我們來查看一下有沒有設定成功
sudo ufw status
在安裝完apache2的時候apache應該就在運作了
此時我們可以用下列指令來查看apache的status
sudo systemctl status apache2
以下三個是apache的開啟停止以及重啟
sudo systemctl start apache2 sudo systemctl stop apache2 sudo systemctl restart apache2
接著在瀏覽器上輸入ip就能看到apache預設的index.html頁面囉
在terminal中輸入這個指令可以得到此刻的public ip
hostname -I
[開啟userdir模式]
在terminal中輸入
sudo a2enmod userdir
移動到你帳號的目錄(例如:/home/burwei/)
創建一個名為public_html資料夾,然後設定權限
cd ~ mkdir public_html chmod -R 755 public_html
[執行HelloWorld.html]
首先,我們來寫一個簡單的HelloWorld.html
首先,我們來寫一個簡單的HelloWorld.html
cd ~/public_html vim helloworld.html
寫入以下內容 ,並儲存
<!DOCTYPE html> <html> <head> <title>Page Title</title> </head> <body> <h1>HelloWorld</h1> <p>This is a my first HTML file.</p> </body> </html>
然後在瀏覽器中輸入ip/~username/helloworld.html即可看到網頁
例如: 140.113.1.1/~burwei/helloworld.html
[開啟可執行CGI模式]
修改/etc/apache2/mods-enabled/userdir.conf
改成以下內容(其實只需要改一點點而已)
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AllowOverride All
Options ExecCGI
AddHandler cgi-script .cgi
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
</Directory>
</IfModule>
[執行HelloWorld.cgi]
首先,我們來寫一個加強版的HelloWorld.html
首先,我們來寫一個加強版的HelloWorld.html
cd ~/public_html vim helloworld_new.html
寫入以下內容 ,並儲存
<!DOCTYPE html> <html> <head> <title>Page Title</title> </head> <body> <h1>HelloWorld</h1> <p>This is a my second HTML file.</p> <form method="get" action="hw3_new.cgi"> Name: <input type="text" name="name" value="Burwei"><br> Age: <input type="text" name="age" value="24"><br> <input type="submit" value="Submit form"> </form> </body> </html>
首先,我們來寫一個簡單的HelloWorld.cgi
cd ~/public_html vim helloworld_cgi.cpp
寫入以下內容 ,並儲存
其中QUERY_STRING那行是在讀取apache利用環境變數記下來的值
web server跟cgi之間訊息的傳遞通常都是透過它
其中QUERY_STRING那行是在讀取apache利用環境變數記下來的值
web server跟cgi之間訊息的傳遞通常都是透過它
#include <iostream> #include <string> #include <stdlib.h> int main(int argc, char *argv[]){ int sockfd = 0; std::string str_port = ""; std::string str_ip = ""; std::cout << "Content-type:text/html\n\n"; std::cout << "<html>\n"; std::cout << "<head>\n"; std::cout << "<title>Hello World - First CGI Program</title>\n"; std::cout << "</head>\n"; std::cout << "<body>\n"; std::cout << "<h3>Hello World! This is my first CGI program</h3>\n"; std::cout << "QUERY_STRING: " << getenv("QUERY_STRING") << std::endl; std::cout << "</body>\n"; std::cout << "</html>\n" << std::flush; }/*int main()*/
編譯的時候有把副檔名編譯成.cgi,就像這樣
g++ helloworld_cgi.cpp -o helloworld.cgi
如果有需要的話,可以編譯成靜態的
g++ helloworld_cgi.cpp -o helloworld.cgi -static
然後在瀏覽器中輸入ip/~username/helloworld_new.html即可看到網頁
例如: 140.113.1.1/~burwei/helloworld_new.html
點擊按鈕,可以看到CGI發揮作用了
[參考資料]
How To Install Apache Web Server on Ubuntu 16.04
w3schools.com
今天筆記到此
希望有幫助未來遺忘這些的自己,以及需要的人
留言
張貼留言