标题有点长。
概述:虚拟主机,阿里云主机,腾讯云主机,都不是我想要的。个人用户想建个站,发布博客,传输点大文件(不限速和无广告)的低成本方案。
设备:
旧笔记本电脑:acer d257上网本,cpu:atom n570(四核,支持64位)+2G内存+160G硬盘
U盘:8G格式化空白
阿里云域名:已认证,费用几元到几十元。
家庭宽带:电信宽带(有公网IP),普通路由器。
步骤:(文字版,先记录一下,图片以后补充)
1、在旧笔记本电脑上安装:centos 7
1)使用UltraISO软件(官网下载最新试用版,试用版即可),写入centos 7 dvd版的iso。使用UltrsISO默认就是usb-hdd+模式。
2)制作好centos 7 U盘安装盘,设置电脑从U盘启动,进入安装界面。
3)在centos7安装界面,按:tab键,修改安装命令。(网上有大量的说明,我都没有成功,只是在quiet后加了一个e(如下),回车,等待比较长时间的loading,之后出现图形安装界面。
vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiete
4)设置好相应的用户名,网卡,安装选择上KNOME Desktop(方便以后使用)等,保证可以上网。
*若忘记安装图形界面,以后安装时,出现不能上网,设置如下:
1、登录默认用户名root
2、CentOS安装图像桌面,
yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
报错:CANNOT FIND A VALID BASEURL FOR
无法连接到网络,测试(ping www.baidu.com 终止ping命令:ctrl+c)
解决办法:
进入网络配置目录:cd /etc/sysconfig/network-scripts/
列出文件列表:ls
找到类似文件:ifcfg-enxxxx
编辑文件:vi ifcgf-enxxx
按i键进入编辑模式,找到ONBOOT=no,把no改成yes
改好后,按esc键,输入(以下三个字符) :wq (:wq)保存退出,
命令:reboot,重启后ping通,说明网络成功
3、安装桌面操作
sudo yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
命令行停下来提示输入就输入y然后继续
运行指定启动时启动桌面:
ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target
2、宝塔linux面板
安装完成centos,重启使用图形界面的终端或直接在命令行下:(请在官网查看)
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
等待系统更新及完成安装宝塔面析。大约30分钟。宝塔相关登陆网址,用户名和密码一定要记下。
3、在宝塔界面安装运行环境。
一般首次会让你安装环境,选lnmp(或你喜欢apache,就选lamp)。
PHP版本是:5.6,安装后,在软件商店里升级为PHP7.3
4、在宝塔界面安装wordpress。
1)在宝塔面板,软件商店里:安装:宝塔一键部署源码 1.1
2)在宝塔面板,软件商店里:一键布署wordpress。
5、使用wordpress。(wordpress,默认你是懂得使用和管理)
* 宝塔面板-数据库,phpmyadmin打不开的解决办法。原因是:在phpmyadmin的设置里,无法设置为php56或php73,无论如何修改均为:纯静态,以致于phpmyadmin无法打开连接。卸载phpmyadmin,安装最新版5.0,到:phpmyadmin的设置里,可以看到,php的版本可以设置和保存了。 \2月1日补充。
* wordpress,入门教程:https://blog.naibabiji.com/an-zhuang-wordpress
6、域名解析,路由器设置,自动将自己的IP更新到阿里域名云解析(实现DDNS功能。
1)在阿里云控制台,管理AccessKey。现在在使用阿里云AccessKey时,请使用子帐号的AccessKey。新建子帐号,给予权限:管理云解析(DNS)的权限。
2)在阿里云域名解析页面,请设置相应的A记录。
如:share.XXXX.com A地址,IP地址,建议写一个其他的IP,不是家里的公网IP,以测试自动更新是否成功。
3)在宝塔面板,文件,找到wwwroot下的wordpress站点文件,新建一个文档ddns.php,内容如下:
其中的参数:RecordId 需要请你登陆阿里云-OpenAPI开发者门户-查找DescribeDomainRecords,请选择你域名正确的地址。
参考网址:https://next.api.aliyun.com/api/Alidns/2015-01-09/DescribeDomainRecords?lang=PHP&sdkStyle=old
实施过程,参考网址:https://blog.csdn.net/jxyk2007/article/details/109219855
只需要做第1、2、6步。
注意以下5个参数,需要修改。AccessKeyId,AccessKeySecret,DomainName,RecordId,RR
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", //你自己在第一步获得的数据,是一串数字。
"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)在宝塔面板,设置计划任务,添加类型:URL访问任务。
a)在宝塔面板,站点中,设置默认站点,应该是你的wordpress站点。如:share.XXXX.com
b)在宝塔面板,设置计划任务,URL访问任务,网址应为:http://192.168.*.*:端口号/ddns.php。设置相应的时间,一般为N小时,因家里的公网IP应该1-2天会换下。
保存后,运行一次。到阿里云域名解析这里,就可以看到IP已经更新为你家里宽带IP了。
5)路由器设置
这个一般没有什么问题,在路由器的"端口转发"里设置。根据你的实际情况。
一般为:
源IP为:*.*.*.* (即所有IP,路由器不同,可能表示法不同)
端口范围:7770(避开宝塔默认的8888,80,8000,8080等,以免80端口服务商不让转发)
内网IP: 192.168.*.* (就是你的电脑IP,也就是宝塔IP,)
内网端品:7770(可以不同,根据你的实际)
有关宽带猫和路由器的连接:电信宽带猫请自行想办法改为桥接模式,方便使用,用超级管理员或请电信客服处理。宽带猫下接自备路由器。路由器有些人用华硕梅林里面的阿里的ddns,对于普通路由器来说,使用以上ddns.php文件更方便,更换路由器等不受影响。
7 使用网址来访问wordpress
使用网址:http://share.XXXX.com:7770/ 来管理wordpress,发布文章,实现真正的对外的主机。
后续可以布置开源类网盘等等,实现个人网盘等。
最后:大约需要花1天的时间,付出阿里云域名的费用(低成本),实现:独立的云主机、网盘等等、基于服务器的功能。实现DDNS,将个人的宽带发挥最大的功用。可以实现多个站点(配合:解析,端口号)
可以学习centos,宝塔,wordpress,域名等基础知识。