阿里云服务器又涨价了,感受已经负担不起了,可是又想拥有一台本身的私人服务器。某天,忽然发现了树莓派,价格便宜、高可用。心血来潮!!说搞就搞!!javascript
下载树莓派系统镜像(www.raspberrypi.org/downloads/)
java
接着就是把镜像烧入SD卡,windows下须要下载win32diskimager
(download.csdn.net/detail/long…python
解压镜像和win32diskimager(绿色版打开便可使用),插入SD卡 --> 打开win32diskimager --> 添加镜像 --> 确认SD卡后点击烧写便可
json
烧写结束后,在windows下SD卡会显示只有不到100M,不用担忧,由于这个分区只是Linux 的boot分区,而其余内容做为Linux 的文件系统被挂载为ext4 文件系统,Windows 下识别不了而已windows
把烧好的SD卡直接插入树莓派SD卡槽中,接上电源等待系统安装完成服务器
系统配置过程仍是碰到不少坑,你们有什么问题能够直接联系我,我会补充出来dom
家里办理的联通宽带有公网IP,决定好好利用,可是公网IP不固定,须要动态修改域名解析。ssh
在阿里云上购买本身喜欢的域名(抓紧时间备案,否则网站会被封)
(wanwang.aliyun.com/domain/com?…)网站
若是有公网IP配置一条A记录,若是你使用的是花生壳配置一条CNAME记录
阿里云
下面给出的是python主要的核心代码,若是须要完整的环境代码请留言联系我。树莓派系统镜像中自带Python,仍是很方便的
获取本身的公网出口IP
import urllib2
def getIp():
try:
ip = visit("http://www.ip138.com/ip2city.asp")
except:
ip = "failed to get internet ip"
return ip
def visit(url):
req = urllib2.Request(url)
opener = urllib2.urlopen(req)
result = opener.read()
return result[result.find('[') + 1: result.find(']')]复制代码
下载alidns python SDK
(develop.aliyun.com/sdk/java?sp…)
解压安装
sudo python setup.py install
安装alidns python SDK
pip install aliyun-python-sdk-alidns
第1步获取到本身的公网IP后,调用API设置DNS解析
import json
from aliyunsdkalidns.request.v20150109 import UpdateDomainRecordRequest,DescribeDomainRecordsRequest, \
DescribeDomainRecordInfoRequest, AddDomainRecordRequest
from aliyunsdkcore import client
# 更新域名解析
def updateDns(accessKey, accessKeySecret, hostRecord, dnsType, dnsValue, dnsRecordid, dnsTtl, returnFormat):
print hostRecord, dnsType, dnsValue, dnsRecordid, dnsTtl, returnFormat
clt = client.AcsClient(accessKey, accessKeySecret, 'cn-hangzhou')
request = UpdateDomainRecordRequest.UpdateDomainRecordRequest()
request.set_RR(hostRecord)
request.set_Type(dnsType)
request.set_Value(dnsValue)
request.set_RecordId(dnsRecordid)
request.set_TTL(dnsTtl)
request.set_accept_format(returnFormat)
result = clt.do_action(request)
return result
# 获取当前的解析IP
def getDnsIp(accessKey, accessKeySecret, dnsRecordid, returnFormat):
clt = client.AcsClient(accessKey, accessKeySecret, 'cn-hangzhou')
request = DescribeDomainRecordInfoRequest.DescribeDomainRecordInfoRequest()
request.set_accept_format(returnFormat)
request.set_RecordId(dnsRecordid)
result = clt.do_action(request)
result = json.JSONDecoder().decode(result)
result = result['Value']
return result复制代码
路由器端口映射,配置完成记得点击保存而且生效
accessKey、accessKeySecret如何获取
登陆阿里云控制台(ak-console.aliyun.com/#/accesskey)
域名解析RecoreId如何获取
# dns_domain 域名 如uthinks.com
def check_records(dnsDomain):
clt = client.AcsClient(accessKeyId, accessKeySecret, 'cn-hangzhou')
request = DescribeDomainRecordsRequest.DescribeDomainRecordsRequest()
request.set_DomainName(dnsDomain)
request.set_accept_format('json')
result = clt.do_action(request)
print result
return result
返回值:
{
"PageNumber": 1,
"TotalCount": 2,
"PageSize": 20,
"RequestId": "***",
"DomainRecords": {
"Record": [
{
"RR": "*",
"Status": "ENABLE",
"Value": "****",
"RecordId": "****",
"Type": "A",
"DomainName": "uthinks.com",
"Locked": false,
"Line": "default",
"TTL": "600"
},
]
}
}复制代码
注: