舊筆記本電腦打造個(gè)人網(wǎng)站,網(wǎng)盤/centos 7+寶塔linux面板+阿里云ddns云解析+wordpress

標(biāo)題有點(diǎn)長(zhǎng)。

概述:虛擬主機(jī),阿里云主機(jī),騰訊云主機(jī),都不是我想要的。個(gè)人用戶想建個(gè)站,發(fā)布博客,傳輸點(diǎn)大文件(不限速和無廣告)的低成本方案。

設(shè)備:

舊筆記本電腦:acer d257上網(wǎng)本,cpu:atom n570(四核,支持64位)+2G內(nèi)存+160G硬盤
U盤:8G格式化空白
阿里云域名:已認(rèn)證,費(fèi)用幾元到幾十元。
家庭寬帶:電信寬帶(有公網(wǎng)IP),普通路由器。

步驟:(文字版,先記錄一下,圖片以后補(bǔ)充)

1、在舊筆記本電腦上安裝:centos 7

1)使用UltraISO軟件(官網(wǎng)下載最新試用版,試用版即可),寫入centos 7 dvd版的iso。使用UltrsISO默認(rèn)就是usb-hdd+模式。

2)制作好centos 7 U盤安裝盤,設(shè)置電腦從U盤啟動(dòng),進(jìn)入安裝界面。

3)在centos7安裝界面,按:tab鍵,修改安裝命令。(網(wǎng)上有大量的說明,我都沒有成功,只是在quiet后加了一個(gè)e(如下),回車,等待比較長(zhǎng)時(shí)間的loading,之后出現(xiàn)圖形安裝界面。
vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiete

4)設(shè)置好相應(yīng)的用戶名,網(wǎng)卡,安裝選擇上KNOME Desktop(方便以后使用)等,保證可以上網(wǎng)。

*若忘記安裝圖形界面,以后安裝時(shí),出現(xiàn)不能上網(wǎng),設(shè)置如下:


1、登錄默認(rèn)用戶名root
2、CentOS安裝圖像桌面,
yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
報(bào)錯(cuò):CANNOT FIND A VALID BASEURL FOR
無法連接到網(wǎng)絡(luò),測(cè)試(ping www.baidu.com 終止ping命令:ctrl+c)

解決辦法:
進(jìn)入網(wǎng)絡(luò)配置目錄:cd /etc/sysconfig/network-scripts/
列出文件列表:ls
找到類似文件:ifcfg-enxxxx
編輯文件:vi ifcgf-enxxx

按i鍵進(jìn)入編輯模式,找到ONBOOT=no,把no改成yes
改好后,按esc鍵,輸入(以下三個(gè)字符)   :wq (:wq)保存退出,
命令:reboot,重啟后ping通,說明網(wǎng)絡(luò)成功

3、安裝桌面操作
sudo yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
命令行停下來提示輸入就輸入y然后繼續(xù)
運(yùn)行指定啟動(dòng)時(shí)啟動(dòng)桌面:
ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target

2、寶塔linux面板

安裝完成centos,重啟使用圖形界面的終端或直接在命令行下:(請(qǐng)?jiān)诠倬W(wǎng)查看)

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

等待系統(tǒng)更新及完成安裝寶塔面析。大約30分鐘。寶塔相關(guān)登陸網(wǎng)址,用戶名和密碼一定要記下。

3、在寶塔界面安裝運(yùn)行環(huán)境。

一般首次會(huì)讓你安裝環(huán)境,選lnmp(或你喜歡apache,就選lamp)。
PHP版本是:5.6,安裝后,在軟件商店里升級(jí)為PHP7.3

4、在寶塔界面安裝wordpress。

1)在寶塔面板,軟件商店里:安裝:寶塔一鍵部署源碼 1.1
2)在寶塔面板,軟件商店里:一鍵布署wordpress。

5、使用wordpress。(wordpress,默認(rèn)你是懂得使用和管理)

* 寶塔面板-數(shù)據(jù)庫(kù),phpmyadmin打不開的解決辦法。原因是:在phpmyadmin的設(shè)置里,無法設(shè)置為php56或php73,無論如何修改均為:純靜態(tài),以致于phpmyadmin無法打開連接。卸載phpmyadmin,安裝最新版5.0,到:phpmyadmin的設(shè)置里,可以看到,php的版本可以設(shè)置和保存了。 \2月1日補(bǔ)充。
* wordpress,入門教程:https://blog.naibabiji.com/an-zhuang-wordpress

6、域名解析,路由器設(shè)置,自動(dòng)將自己的IP更新到阿里域名云解析(實(shí)現(xiàn)DDNS功能。

1)在阿里云控制臺(tái),管理AccessKey。現(xiàn)在在使用阿里云AccessKey時(shí),請(qǐng)使用子帳號(hào)的AccessKey。新建子帳號(hào),給予權(quán)限:管理云解析(DNS)的權(quán)限。

2)在阿里云域名解析頁面,請(qǐng)?jiān)O(shè)置相應(yīng)的A記錄。
如:share.XXXX.com A地址,IP地址,建議寫一個(gè)其他的IP,不是家里的公網(wǎng)IP,以測(cè)試自動(dòng)更新是否成功。

3)在寶塔面板,文件,找到wwwroot下的wordpress站點(diǎn)文件,新建一個(gè)文檔ddns.php,內(nèi)容如下:
其中的參數(shù):RecordId 需要請(qǐng)你登陸阿里云-OpenAPI開發(fā)者門戶-查找DescribeDomainRecords,請(qǐng)選擇你域名正確的地址。
參考網(wǎng)址:https://next.api.aliyun.com/api/Alidns/2015-01-09/DescribeDomainRecords?lang=PHP&sdkStyle=old

實(shí)施過程,參考網(wǎng)址:https://blog.csdn.net/jxyk2007/article/details/109219855
只需要做第1、2、6步。

注意以下5個(gè)參數(shù),需要修改。AccessKeyId,AccessKeySecret,DomainName,RecordId,RR


<?php
date_default_timezone_set("GMT");
 
//綁定 ip 到域名
Ali::Obj()->UpdateDomainRecord();
 
class Ali
{
    private $accessKeyId  = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    private $accessSecrec = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    private static $obj  = null;
    public static function Obj ()
    {
        if(is_null(self::$obj))
        {
            self::$obj = new self();
        }
        return self::$obj;
    }
 
    public function DescribeDomainRecords()
    {
        $requestParams = array(
            "Action"    =>  "DescribeDomainRecords",
            "DomainName"    =>  "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.com"
        );
        $val =  $this->requestAli($requestParams);
        $this->outPut($val);
    }
 
    /**
     * 更新 ip
     */
    public function UpdateDomainRecord()
    {
        $ip = $this->ip();
        $requestParams = array(
            "Action"        =>  "UpdateDomainRecord",
            "RecordId"      =>  "11111111111111111111111111111111111111",  //你自己在第一步獲得的數(shù)據(jù),是一串?dāng)?shù)字。
            "RR"            =>  "share", //你自己的域名,我的是share.xx.com
            "Type"          =>  "A",
            "Value"         =>  $ip,
        );
        $val =  $this->requestAli($requestParams);
        $this->outPut($val."  ".$ip);
    }
 
    private function requestAli($requestParams)
    {
        $publicParams = array(
            "Format"        =>  "JSON",
            "Version"       =>  "2015-01-09",
            "AccessKeyId"   =>  $this->accessKeyId,
            "Timestamp"     =>  date("Y-m-d\TH:i:s\Z"),
            "SignatureMethod"   =>  "HMAC-SHA1",
            "SignatureVersion"  =>  "1.0",
            "SignatureNonce"    =>  substr(md5(rand(1,99999999)),rand(1,9),14),
        );
 
        $params = array_merge($publicParams, $requestParams);
        $params['Signature'] =  $this->sign($params, $this->accessSecrec);
        $uri = http_build_query($params);
        $url = 'http://alidns.aliyuncs.com/?'.$uri;
        return $this->curl($url);
    }
 
 
    private function ip()
    {
        $ip = $this->curl("http://httpbin.org/ip");
        $ip = json_decode($ip,true);
        return $ip['origin'];
    }
 
    private function sign($params, $accessSecrec, $method="GET")
    {
        ksort($params);
        $stringToSign = strtoupper($method).'&'.$this->percentEncode('/').'&';
 
        $tmp = "";
        foreach($params as $key=>$val){
            $tmp .= '&'.$this->percentEncode($key).'='.$this->percentEncode($val);
        }
        $tmp = trim($tmp, '&');
        $stringToSign = $stringToSign.$this->percentEncode($tmp);
 
        $key  = $accessSecrec.'&';
        $hmac = hash_hmac("sha1", $stringToSign, $key, true);
 
        return base64_encode($hmac);
    }
 
 
    private function percentEncode($value=null)
    {
        $en = urlencode($value);
        $en = str_replace("+", "%20", $en);
        $en = str_replace("*", "%2A", $en);
        $en = str_replace("%7E", "~", $en);
        return $en;
    }
 
    private function curl($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url );
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
        $result=curl_exec ($ch);
        return $result;
    }
 
    private function outPut($msg)
    {
        echo date("Y-m-d H:i:s")."  ".$msg.PHP_EOL;
    }
}

//2月4日修改,正確更新。

4)在寶塔面板,設(shè)置計(jì)劃任務(wù),添加類型:URL訪問任務(wù)。
a)在寶塔面板,站點(diǎn)中,設(shè)置默認(rèn)站點(diǎn),應(yīng)該是你的wordpress站點(diǎn)。如:share.XXXX.com

b)在寶塔面板,設(shè)置計(jì)劃任務(wù),URL訪問任務(wù),網(wǎng)址應(yīng)為:http://192.168.*.*:端口號(hào)/ddns.php。設(shè)置相應(yīng)的時(shí)間,一般為N小時(shí),因家里的公網(wǎng)IP應(yīng)該1-2天會(huì)換下。
保存后,運(yùn)行一次。到阿里云域名解析這里,就可以看到IP已經(jīng)更新為你家里寬帶IP了。

5)路由器設(shè)置
這個(gè)一般沒有什么問題,在路由器的"端口轉(zhuǎn)發(fā)"里設(shè)置。根據(jù)你的實(shí)際情況。
一般為:
源IP為:*.*.*.* (即所有IP,路由器不同,可能表示法不同)
端口范圍:7770(避開寶塔默認(rèn)的8888,80,8000,8080等,以免80端口服務(wù)商不讓轉(zhuǎn)發(fā))
內(nèi)網(wǎng)IP: 192.168.*.* (就是你的電腦IP,也就是寶塔IP,)
內(nèi)網(wǎng)端品:7770(可以不同,根據(jù)你的實(shí)際)

有關(guān)寬帶貓和路由器的連接:電信寬帶貓請(qǐng)自行想辦法改為橋接模式,方便使用,用超級(jí)管理員或請(qǐng)電信客服處理。寬帶貓下接自備路由器。路由器有些人用華碩梅林里面的阿里的ddns,對(duì)于普通路由器來說,使用以上ddns.php文件更方便,更換路由器等不受影響。

7 使用網(wǎng)址來訪問wordpress

使用網(wǎng)址:http://share.XXXX.com:7770/ 來管理wordpress,發(fā)布文章,實(shí)現(xiàn)真正的對(duì)外的主機(jī)。

后續(xù)可以布置開源類網(wǎng)盤等等,實(shí)現(xiàn)個(gè)人網(wǎng)盤等。

最后:大約需要花1天的時(shí)間,付出阿里云域名的費(fèi)用(低成本),實(shí)現(xiàn):獨(dú)立的云主機(jī)、網(wǎng)盤等等、基于服務(wù)器的功能。實(shí)現(xiàn)DDNS,將個(gè)人的寬帶發(fā)揮最大的功用。可以實(shí)現(xiàn)多個(gè)站點(diǎn)(配合:解析,端口號(hào))

可以學(xué)習(xí)centos,寶塔,wordpress,域名等基礎(chǔ)知識(shí)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容