apache和php的工作流程(網站放家裡隨處看電影)
2023-06-14 21:09:29 1
使用5G網絡,隨處都可以看到放自己家裡電腦的視頻。這個功能很容易實現,不需要太多的專業知識,也不需要額外花錢。如果確實需要,最多花不到兩百塊錢買一臺舊電腦放家裡,做個網站,就能解決全部問題,FreeBSD對硬體的要求不高,沒必要買更好的電腦。當然,你也可以用虛擬機,連舊電腦都不用。下面是實現方法,作業系統是FreeBSD13.0。
一、安裝Apache。
登錄root,輸入下面的命令安裝 apache24:
pkg install apache24
設置為在啟動計算機時啟動apache:
echo'>>/etc/rc.conf
注意上面的命令是兩個>號:>>,如果只用一個>號,會覆蓋掉文件原來的內容。
到這裡,apache 可以正常使用了。但為了更加完善,還需要繼續安裝其他的模塊。
二、安裝php81。
輸入下面的命令:
pkg install php81-extensions
安裝apache的php模塊:
root@test:/usr/ports/www # pkg search mod_phpmod_php74-7.4.29_2 PHP Scripting Languagemod_php80-8.0.18_2 PHP Scripting Languagemod_php81-8.1.5_2 PHP Scripting Language (8.1.X branch)root@test:/usr/ports/www # pkg install mod_php81-8.1.5_2...//安裝程序提示,複製下面幾行到 httpd.conf 中 SetHandler application/x-httpd-php SetHandler application/x-httpd-php-source
複製上面提示的六行內容,粘貼到 httpd.conf 文件裡。
三、httpd.conf 配置。
使用下面的命令,找到配置文件 httpd.conf:
cd /usr/local/etc/apache24ls httpd.conf
為了防止在編輯過程中出錯無法恢復,先備份httpd.conf。
cp httpd.conf httpd.conf.bak
如果要恢復原來的文件內容,複製回來覆蓋掉就行了:
cp httpd.conf.bak httpd.conf
打開 httpd.conf。FreeBSD 有一個名為 ee 的編輯器,如果對 vi 不熟悉,可以使用 ee。
ee httpd.conf
在編輯完成之後,按一下鍵盤左上角的鍵,會彈出菜單:
按鍵彈出菜單
選擇 a) leave editor(離開編輯器),按鍵盤的字母a鍵。
按a鍵彈出菜單
如果要保存,按鍵盤上的字母a,選擇 a) save changes 保存更改。如果不想保存,按 b鍵,表示不保存。
在 ee 中查找字符的方法:按鍵盤左上角的 鍵,彈出菜單後,按 f 鍵,彈出菜單後按 a 鍵,輸入要查找的內容就可以了。在 vi 中查找字符的方法是:按 / 鍵,輸入要查找的內容,反覆按 n 鍵,直到找到你需要的位置為止。
在文件中找到 DocumentRoot。
DocumentRoot "/usr/local/www/apache24/data"
在這行的上一行粘貼前面安裝 mod_php 時提示的內容。
SetHandler application/x-httpd-php SetHandler application/x-httpd-php-sourceDocumentRoot "/usr/local/www/apache24/data"
你還可以根據需要改變網站文件的存放位置。我把上面最後兩行改為:
DocumentRoot "/usr/www"
這樣日常操作起來會更方便點。我只需要輸入 cd /usr/www 就到達網站文件的根目錄了。
繼續在文件中找 ServerName,該行顯示為:
ServerName www.example.com:80
修改為:
ServerName localhost:8080
因為我們的 80 埠在外面是訪問不了的,為了能從外網訪問,得改為其他埠。以前是可以的,以前你可以在家裡做個人網站,動態解釋域名指向你的 IP 地址。如果現在能便宜拿到固定 IP 地址,也不封 80 埠,做網站會節省很多錢。現在只能購買。
再找到DirectoryIndex,文件中是這樣的:
DirectoryIndex index.html
加上index.php
DirectoryIndex index.html index.php
到這裡,apache 已經可以支持 php 網頁。
輸入命令啟動 apache:
apachectl start
如果啟動不了,可能是前面的配置搞錯了。用備份文件覆蓋後重新再做一次就可以了。
三、準備視頻目錄。
作為演示,我在網站根目錄下創建了一個目錄
mkdir mp4
複製了一些視頻文件在裡面。如何從 Windows 複製視頻到網站目錄,可以看我前面寫的一篇的關於 samba 共享文件的文章,那篇文章教你如何安裝和配置 samba,實現 unix 與 Windows 的文件共享。
在網站根目錄中創建一個文件 list.php,用於列出 mp4 目錄中的全部視頻文件名。
list.php
視頻列表2); $cnt ; } }closedir($handle);$x=sizeof($lst);$rnd=rand(0,$x-1);$sn=explode("/",$lst[$rnd]);$fname=$sn[sizeof($sn)-1];?> <source src="" /><?phpfor($i=0;$i<sizeof($lst);$i ) echo "".$lst[$i]."";?>
現在用瀏覽器打開網站,在瀏覽器地址欄中輸入這臺機器的 ip 地址和埠:
http://10.10.10.5:8080
手機uc瀏覽器截圖
到這裡,一個能播放視頻的網站就完成了。
但有一個的問題:我們上網的動態IP位址每48小時就變一次,怎樣才能得到最新的IP位址呢?我的方法是把 IP 地址刷到自己的網站上。如果你沒有網站,可以讓電腦定期給自己發送電子郵件,附上你的 IP 地址,在需要的時候,打開郵件就可以收到IP位址了。
四、用電子郵件定時發送IP位址。
在網站根目錄創建文件 sendip.php
創建一個文件 sendmail.sh
#!/bin/sh/usr/local/bin/php -q /usr/srun/sendip.php
指定執行屬性:
chmod a x sendmail.sh
編輯 /etc/crontab
ee /etc/crontab
加上一句:
0 7 * * * root /usr/www/sendmail.sh
如果你的 sendmail.sh 文件保存的目錄不是這個,改為相應的路徑就行了。
這樣電腦每天早上7點就把IP位址發到你指定的郵箱裡。不花一分錢,就可以隨處看家裡放的視頻了。
到這裡,有人可能還會擔心。網站的信息是明文的,會不會有人監視我看的是什麼?你的懷疑非常正確。根據我維護網站多年的經驗,我們通過 HTTP 傳送的明文在路上是有可能被分析過的,因為我發現單純傳送數字的速度比中文快。
如果你需要解決明文的安全問題,可以繼續下面的操作,給apache加上ssl,使用 HTTPS 連接來看視頻。
五、讓 apache 支持 https。
cd /usr/local/etc/apache24
打開 httpd.conf 文件。
ee httpd.conf
找到
#LoadModule ssl_module libexec/apache24/mod_ssl.so
去掉前面的# 號(# 表示注釋)。
LoadModule ssl_module libexec/apache24/mod_ssl.so
找到
#Include etc/apache24/extra/httpd-ssl.conf
去掉 # 號。
Include etc/apache24/extra/httpd-ssl.conf
保存並退出。
編輯 httpd-ssl.conf 文件。
ee extra/httpd-ssl.conf
找到 SSLSessionCache,在前面加上#號。
#SSLSessionCache
將 443 全部改為8443,或者你想要的其他數字。443 是 https 服務偵聽的默認埠。
再把 ServerName 那行改為這個樣:
ServerName localhost:8443
另外,我還把
DocumentRoot "/usr/local/www/apache24/data"
改成了
DocumentRoot "/usr/www"
保存更改並退出。
在命令行中依次執行下面的命令
cd /usr/local/etc/apache24openssl req -new -nodes -out req.pem -keyout cert.key -sha256 -newkey rsa:2048
生成兩個文件用於下一步生成證書。輸入命令後,電腦出現系列提示,照樣操作即可。
Generating a RSA private key................. ....... writing new private key to 'cert.key'-----You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [AU]:CNState or Province Name (full name) [Some-State]:GuangDongLocality Name (eg, city) []:MyCityOrganization Name (eg, company) [Internet Widgits Pty Ltd]:MyOrgOrganizational Unit Name (eg, section) []:Common Name (e.g. server FQDN or YOUR name) []:serverEmail Address []:[email protected] enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:abcd1234An optional company name []:
執行完命令後,生成了 cert.key 和 req.pem 兩個文件。接下來要生成證書文件,執行以下操作:
openssl req -new -x509 -days 365 -key cert.key -out cert.crt -sha256
系統顯示和前面相似的提示,照樣操作即可。
You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [AU]:CNState or Province Name (full name) [Some-State]:GuangDongLocality Name (eg, city) []:MyCityOrganization Name (eg, company) [Internet Widgits Pty Ltd]:MyOrgOrganizational Unit Name (eg, section) []:Common Name (e.g. server FQDN or YOUR name) []:serverEmail Address []:[email protected]
這個命令生成了證書文件。執行下面兩個命令生成給 apache 使用的證書:
cp cert.crt server.crtcp cert.key server.key
重新啟動 apache。
apachectl restart
如果上面的操作沒有問題,就可以使用 https 訪問網站了。
打開瀏覽器,在地址欄輸入:https://10.10.10.5:8443/list.php。第一次訪問時瀏覽器會顯示警告頁面。因為我們的證書不是花錢從權威機構購買的,為了省錢,只能這樣了。
單擊「高級」,然後單擊「接受風險並繼續」就可以了。