网站搭建全程

1.基本信息

网站网址:Haite的个人博客(服务器过期,网站已无法继续访问)

2.创建网站

2.1 需求分析

(1)动机平时做完一些设计,实验喜欢分享给别人,所以想要建立一个个人博客,让网友可以通过我的网站来阅读我的文章。其次身为一个计算机专业的学生,一些网上的进制转换计算器等小工具也有方便过我的学习,所以我想要做出一些小工具帮助别人。

(2)网站功能 支持我自己的文章发布及修改,支持网友的评论留言、数据库小工具。

2.2 申请域名

  • 本来打算使用课堂上讲到的五个免费域名。

但是发现因为版权原因这五个域名也不再能申请

  • 于是乎我就在阿里云中购买了haite.site域名。

  • 后来听同学说,在硅云中新用户可以免费注册一年的域名(我也没有去验证过)。

2.3 申请服务器

在这个步骤中我经历了两个过程

  • 首先我在微软AZURD完成学生认证,并申请的一台虚拟机,但在使用虚拟机SSH连接时遇到了问题,导致我放弃了这个方法。

  • 虽然这个过程失败了 但我也收获到了知识。

  • 关于虚拟机的配置设置,增加对虚拟机的了解。

  • 虚拟机尝试ssh连接,虽然再这一步失败了,但我也学到了一些使用powershell尝试ssh连接的指令,powershell指令。

  • 失败的原因我也没有探究出来。

  • 之后我就在阿里云中的飞天计划申请了一台七个月的云服务器。

2.4 建立网站

2.4.1 域名解析

将云服务器的公网ip解析到域名中,使得通过域名可以访问到我的网站。

添加这两条域名记录后我便可以通过www.haite.site与haite.site访问网站

2.4.2服务器配置并添加站点

  • 在服务器中输入安装脚本,服务器就会开始安装宝塔面板,安装成功后会给一个外网地址和内网地址,进入外网地址,输入账号密码,就可以打开宝塔面板,点击一键安装数据库MYSQL,PHP,nginx等,服务器基本配置就完成了。

  • 并且能在宝塔面板中很方便的管理网站。

  • 这一个过程中,由于使用宝塔面板,导致我没什么参与感,于是我决定再申请一个服务器,自己尝试服务器配置这个过程。

  • 安装数据库:

  • 我的操作步骤以注解的形式批注在图片上。

  • 这一步是解压刚刚下载的安装包。

  • 至此Mysql安装完毕。

  • 安装nginx:

  • 由于安装nginx需要用到yum指令,但是在使用yum指令时出现了问题1的报错。 问题1:Command 'yum' not found, did you mean:(无法使用YUM指令)

  • 在我尝试安装yum时又出现了新的错误,如下问题2。 问题2:Unable to locate package yum

  • 不断尝试中,我没有找到解决方法,这些错误仿佛形成一个循环,又加上备考原因我 暂时放弃了手动配置云服务器nginx。

2.4.3 网站备案

由于我的域名及云服务器都是国内的,所以建立网站后需要备案,才能访问。 于是我在阿里云申请了ICP备案。

申请后大概等待了7-8个工作日就通过了。 之后我就可以开始为我的网站添加内容。

2.4.4 完善我的网站

  • 先使用网站安装PHP个人博客网站模板,使网站有一个基本框架,便于后续网站管理。

  • 修改HTML文件,将首页的LOGO,头像,座右铭改为自己的。

  • 我为网站绘制了一个自己的专属LOGO,并使用PHP将它添加到我的网站。

  • 通过修改HTML,添加自己喜欢的文字,把个人信息修改为自己的。

  • 为我的博客网站添加文章。

  • 我为我的网站新建了课程设计标签,并在其中添加了我大二上学期完成的三个课程设计所写的文章。

2.4.5 网站完整效果呈现:

  • 首页

  • 数据库小工具

  • 文章详细

进阶

  • 由于网站大部分内容使用了PHP模板,为了多学习一些内容,也为了丰富我的网站我还使用了HTML,CSS,Javascript设计了一个数据库小工具。

  • 设计理念:当我们设计好一个数据库表时,为了对它进行测试,我们需要有数据,但让我们手动码出一条条插入语句,一个个数据这个过程往往是很繁琐乏味的,就想设计一个工具来帮助我们生成插入语句,我们只需要CRTL+C&&CRTL+V就能完成数据的插入。

最终成果:

例如:我想生成五条数据,首先勾选我想要的属性,其次输入我想要的表名(示例中的表名为Employer),最后输入5,点击数据,在最后一块矩形块中就会生成五条插入语句。

HTML源代码

 <!DOCTYPE html>
<html lang="en-us">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>数据生成小工具</title>
     <link href="tbtool.css" type="text/css" rel="stylesheet">
  </head>
  <body>
   <h1>数据库插入数据生成工具</h1>
      <h2>简介:作为一名程序员,在前期的数据库设计阶段,需要一些数据进行测试,而手动输入数据是费时而乏味的,所以开发一个数据生成工具来解决</h1>
        <div class="input_">
        常用属性:
        <input type="checkbox" name="Keys" value="id" />ID
        <input type="checkbox" name="Keys" value="name" />姓名
        <input type="checkbox" name="Keys" value="age" />年龄
        <input type="checkbox" name="Keys" value="sex" />性别
        <input type="checkbox" name="Keys" value="tell" />电话号码
        <input type="checkbox" name="Keys" value="wage" />工资
        <br>
        生成数据数量:
        <input type="number" id="count" value="0" />
        <br>
        <br>
        生成数据表名:
        <input type="text" id="tname" value="Employer" />
        <br>
        <br>
        <input type="button" value="生成数据" onclick="getAll()"/>
        </div>  
  <div class="output_" id="output_">
     <p>产生的数据</p>
  </div>
  <script src="tbtool.js"></script>
</body>
</html>

CSS源代码:

 h1 {
    line-height: 50px;
    color: rgba(242, 107, 10, 0.881);
    text-align: center;
    font-size: 30px;
    font-weight: 1000;
    font-family: "Microsoft JhengHei UI";
    background:
    radial-gradient(circle farthest-side at 0% 50%,#fb1 23.5%,rgba(240,166,17,0) 0)21px 30px,
    radial-gradient(circle farthest-side at 0% 50%,#B71 24%,rgba(240,166,17,0) 0)19px 30px,
    linear-gradient(#fb1 14%,rgba(240,166,17,0) 0, rgba(240,166,17,0) 85%,#fb1 0)0 0,
    linear-gradient(150deg,#fb1 24%,#B71 0,#B71 26%,rgba(240,166,17,0) 0,rgba(240,166,17,0) 74%,#B71 0,#B71 76%,#fb1 0)0 0,
    linear-gradient(30deg,#fb1 24%,#B71 0,#B71 26%,rgba(240,166,17,0) 0,rgba(240,166,17,0) 74%,#B71 0,#B71 76%,#fb1 0)0 0,
    linear-gradient(90deg,#B71 2%,#fb1 0,#fb1 98%,#B71 0%)0 0 #fb1;
    background-size: 40px 60px;
    background-size: 20px 20px;
    border-radius: 5px;
    text-shadow: 2px 2px 3px #ffffff;
    margin-top: 20px;
    margin-left: 10px;
    margin-right: 10px;
    box-shadow: 3px 3px 3px rgba(0, 0, 0,0.9),inset 2px 1px 2px rgba(255, 255, 255,0.5);
    border-color:black;
    border:2px solid black;
}
h2 {
    line-height: 50px;
    color: white;
    text-align: center;
    font-size: 20px;
    font-family: "Microsoft JhengHei UI";
    background-color: rgb(51, 169, 37);
    border-radius: 5px;
    text-shadow: 2px 2px 3px #222222;
    margin-top: 20px;
    margin-left: 10px;
    margin-right: 10px;
    box-shadow: 3px 3px 3px rgba(0, 0, 0,0.9),inset 2px 1px 2px rgba(255, 255, 255,0.5);
    border-color: black;
    border: 2px solid black;
}
.input_{
    color: white;
    width: 100fr;
    height: 180px;
    text-align: center;
    font-size: 20px;
    font-family: "Microsoft JhengHei UI";
    background:
    radial-gradient(circle at 100% 50%, transparent 20%, rgba(159, 110, 42, 0.925) 21%, rgba(159, 110, 42, 0.925) 34%, transparent 35%, transparent),
    radial-gradient(circle at 0% 50%, transparent 20%, rgba(159, 110, 42, 0.925), rgba(159, 110, 42, 0.925) 34%, transparent 35%, transparent) 0 -50px;
    background-color: rgb(125, 59, 0);
    background-size:75px 100px;
    border-radius: 5px;
    text-shadow: 2px 2px 3px #222222;
    box-shadow: 3px 3px 3px rgba(0, 0, 0,0.9),inset 2px 1px 2px rgba(255, 255, 255,0.5);
    border-color: black;
    border: 2px solid black;
    padding: 10px;
    margin-top: 30px;
    margin-left: 10px;
    margin-right: 10px;
}
​
.output_{
    line-height: 50px;
    color: rgb(13, 13, 13);
    text-align: center;
    font-size: 20px;
    font-weight: 700;
    font-family: "Microsoft JhengHei UI";
    background-color: rgb(51, 169, 37);
    border-radius: 5px;
    margin-top: 20px;
    margin-left: 10px;
    margin-right: 10px;
    box-shadow: 3px 3px 3px rgba(0, 0, 0,0.9),inset 2px 1px 2px rgba(255, 255, 255,0.5);
    background-color: #fff;
    background-image:
    linear-gradient(90deg, transparent 79px, #abced4 79px, #abced4 81px, transparent 81px),
    linear-gradient(#eee .1em, transparent .1em);
    background-size: 100% 1.2em;
    border: 2px solid black;
​
}
​
#num{
    margin-top: 30px;
}

javascript源代码:

 var id;
var name;
var age;
var sex;
var tell;
var wage;
var sql;
​
var prename=["陈","黄","周","吴","徐","朱","胡","林","何","罗","郑",];
var lastname=['靖','铭','琛','川','承','司','斯','宗','骁','聪','在','钩','锦','铎','楚','铮','钦','则','真','心','新','悦','西','兮','楚','初','千','锐','素','锦','静','镜','斯','舒','瑜','童'];
​
var pretell=["139","132","147","157","188","159","181","150"];
​
function getAll(){
    var Keys=document.getElementsByName("Keys");
    var count=document.getElementById("count").value;
    var tname=document.getElementById("tname").value;
    var last=getlast();
    var allsql='';
    if(last=='kong'){
        alert("请输入要生成的数据项的属性");
    }else{
for(var i=1;i<=count; i++){
    sql="INSERT INTO ";
    sql+=tname;
    sql+=" VALUEWS ("
    for(var j=0;j<Keys.length;j++){
        if(Keys[j].checked){
            if(Keys[j].value=='id'){
                id=i;
                sql+=id;
                if(last=='id'){
                    sql+=");";
                    break;
                }else{
                    sql+=",";
                }
            }else if(Keys[j].value=='name'){
                name=getname();
                sql+='\'';
                sql+=name;
                sql+='\'';
                if(last=='name'){
                    sql+=");"; 
                    break;
                }else{
                    sql+=",";
                }
            }else if(Keys[j].value=='age'){
                age=getage();
                sql+=age;
                if(last=='age'){
                    sql+=');'; 
                    break;
                }else{
                    sql+=",";
                }   
            }else if(Keys[j].value=='sex'){
                sex=getsex();
                sql+='\'';
                sql+=sex;
                sql+='\'';
                if(last=="sex"){
                    sql+=");"; 
                    break;
                }else{
                    sql+=",";
                }        
            }else if(Keys[j].value=='tell'){
                tell=gettell();
                sql+='\'';
                sql+=tell;
                sql+='\'';
                if(last=="tell"){
                    sql+=");"; 
                    break;
                }else{
                    sql+=",";
                }   
            }else if(Keys[j].value=='wage'){
                wage=getwage();
                sql+=wage;
                if(last=="wage"){
                    sql+=");"; 
                    break;
                }else{
                    sql+=",";
                }            
            }
        }
        
    }
    allsql+=sql;
    allsql+="<br>";
}
let div = document.getElementById("output_");
    div.innerHTML=allsql;
    document.body.appendChild(div);
}
}
function getname(){
    var temp='';
    temp+=prename[Math.ceil(Math.random()*prename.length-1)];
    temp+=lastname[Math.ceil(Math.random()*lastname.length-1)];
    temp+=lastname[Math.ceil(Math.random()*lastname.length-1)];
    return temp;
}
function getage(){
    return Math.ceil(Math.random()*47+18);
}
function getsex(){
    var flag=Math.ceil(Math.random()*2);
    if(flag==1){
     return '男';
    }else{
     return '女';
    }
}
function gettell(){
    var temp='';
    temp+=pretell[Math.ceil(Math.random()*pretell.length-1)];
    for(var i=0;i<8;i++){
        temp+=Math.ceil(Math.random()*10-1);
    }
    return temp;
}
function getwage(){
  return Math.ceil(Math.random()*70+30)*100;
}
​
function getlast(){
    var Keys=document.getElementsByName("Keys");
    for(var j=Keys.length-1;j>=0;j--){
        if(Keys[j].checked){
            if(Keys[j].value=='wage'){
                return 'wage';
            }else if(Keys[j].value=='tell'){
                return 'tell';
            }else if(Keys[j].value=='sex'){
                return 'sex';  
            }else if(Keys[j].value=='age'){
                return 'age';  
            }else if(Keys[j].value=='name'){
                return 'name';   
            }else if(Keys[j].value=='id' ){
                return 'id';   
            }
        }
    }
    return "kong";
}
​
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值