天天看點

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

作者:cpolar極點雲

前言

寶塔面闆作為簡單好用的伺服器運維管理面闆,它支援Linux/Windows系統,我們可用它來一鍵配置LAMP/LNMP環境、網站、資料庫、FTP等,通過Web端輕松管理伺服器。

以下教程,我們将示範使用寶塔面闆快速簡單搭建本地web網站,并做内網穿透,實作不在同個區域網路下的使用者也可以通路到本地web站點,無需公網IP,也不用設定路由器。

1. 環境安裝

安裝apache伺服器,在寶塔面闆中我們點選網站,然後會提示安裝apache伺服器。

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

選擇極速安裝

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

然後等待安裝完成即可,安裝完成在左邊消息清單會提示

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

2. 安裝cpolar内網穿透

https://www.cpolar.com/

打開寶塔終端指令視窗,使用cpolar一件安裝腳本:

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路
  • token認證

登入cpolar官網,點選左側的驗證,檢視自己的認證token,之後将token貼在指令行裡

cpolar authtoken xxxxxxx           
Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路
  • 向系統添加服務
sudo systemctl enable cpolar           
  • 啟動cpolar服務
sudo systemctl start cpolar           
  • 開放9200端口

在寶塔面闆中選擇安全.然後開放9200端口

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路
  • 登入cpolar web UI 管理界面

然後區域網路ip通路9200端口即可出現cpolar管理界面,輸入cpolar郵箱賬号進行登陸

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

3. 内網穿透

登入cpolar web UI管理界面後,我們建立一個http隧道,指向80端口,因為apache服務預設是80端口

  • 隧道名稱:可自定義,注意不要重複
  • 協定:http
  • 本地位址:80
  • 端口類型:随機域名
  • 地區:China vip

點選建立

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

建立成功後我們打開線上隧道清單複制建立的公網位址

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

然後我們打開寶塔面闆,點選網站,選擇添加站點,把複制的公網位址粘貼到域名的參數框,然後點選送出

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

這個時候我們可以看到站點建立成功

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

然後我們再使用複制的公網位址,打開浏覽器通路,出現歡迎頁表示成功

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

4.固定http位址

由于剛剛建立隧道使用的是随機臨時位址,該位址會在24小時内發生變化,為了長期遠端通路,我們接下來将這個公網位址配置為固定的。

需更新至基礎套餐或以上才支援配置二級子域名

登入cpolar官網背景,點選左側儀表盤的預留,找到保留二級子域名,為http隧道保留一個二級子域名。

  • 地區:選擇伺服器地區
  • 名稱:填寫您想要保留的二級子域名(可自定義)
  • 描述:即備注,可自定義填寫
Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

本例保留一個名稱為mywebsitegame的二級子域名。子域名保留成功後,我們将子域名複制下來,接下來需要将其配置到隧道中去。

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

5. 配置二級子域名

登入cpolar web ui管理界面。點選左側儀表盤的隧道管理——隧道清單,找到需要配置二級子域名的隧道(本例中為apache website隧道),點選右側的編輯

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

修改隧道資訊,将二級子域名配置到隧道中:

  • 域名類型:改為選擇二級子域名
  • Sub Domain:填寫我們剛剛所保留的二級子域名(本例為mywebsitegame)

修改完成後,點選更新

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

隧道更新成功後,點選左側儀表盤的狀态——線上隧道清單,可以看到隧道的公網位址,已經更新為二級子域名了,将公網位址複制下來。

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

然後我們打開寶塔面闆,找到站點,點選設定

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

添加一個我們固定的公網位址域名

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

然後把之前建立的随機位址删除

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

然後我們打開浏覽器,使用固定的公網位址進行通路,以上我們就配置好了站點遠端通路

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

6.建立一個測試頁面

點選站點根目錄路徑,直接點選

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

建立一個名字為game.html頁面

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

然後輕按兩下檔案編輯,把下面代碼複制進去(貪吃蛇小遊戲),然後Ctrl+S儲存

<!DOCTYPE html>
<html>
<head>
	<title>貪吃蛇</title>
	<meta charset="UTF-8">
	<meta name="keywords" content="貪吃蛇">
	<meta name="Description" content="這是一個初學者用來學習的小遊戲">
	<style type="text/css">
	*{margin:0;}
	.map{margin:100px auto;
		height:600px;
		width:900px;
		background:#00D0FF;
		border:10px solid #AFAEB2;
		border-radius:8px;
	}
	</style>
</head>
 
<body>
<div class="map">
<canvas id="canvas" height="600" width="900">
	
</canvas>
</div>
 
<script type="text/javascript">
 //擷取繪制工具
	/*
	var canvas = document.getElementById("canvas");
	var ctx = canvas.getContext("2d");//擷取上下文
	ctx.moveTo(0,0);
	ctx.lineTo(450,450);*/
	var c=document.getElementById("canvas");
    var ctx=c.getContext("2d");
    /*ctx.beginPath();
    ctx.moveTo(0,0);
    ctx.lineTo(450,450);
    ctx.stroke();
    */
 
    var snake =[];//定義一條蛇,畫蛇的身體
    var snakeCount = 6;//初始化蛇的長度
	var foodx =0;
	var foody =0;
    var togo =0;
    function drawtable()//畫地圖的函數
    {
 
 
    	for(var i=0;i<60;i++)//畫豎線
    	{
    		ctx.strokeStyle="black";
    		ctx.beginPath();
    		ctx.moveTo(15*i,0);
    		ctx.lineTo(15*i,600);
    		ctx.closePath();
    		ctx.stroke();
    	}
        for(var j=0;j<40;j++)//畫橫線
    	{
    		ctx.strokeStyle="black";
    		ctx.beginPath();
    		ctx.moveTo(0,15*j);
    		ctx.lineTo(900,15*j);
    		ctx.closePath();
    		ctx.stroke();
    	}
    	
    	for(var k=0;k<snakeCount;k++)//畫蛇的身體
			{
			ctx.fillStyle="#000";
			if (k==snakeCount-1)
			{
				ctx.fillStyle="red";//蛇頭的顔色與身體區分開
			}
			ctx.fillRect(snake[k].x,snake[k].y,15,15);//前兩個數是矩形的起始坐标,後兩個數是矩形的長寬。
			
			}
			//繪制食物	
    		ctx.fillStyle ="black";
	     ctx.fillRect(foodx,foody,15,15);
	     ctx.fill();
    	
    }
 
    
    function start()//定義蛇的坐标
    {
    	//var snake =[];//定義一條蛇,畫蛇的身體
        //var snakeCount = 6;//初始化蛇的長度
		
		for(var k=0;k<snakeCount;k++)
    		{
    			snake[k]={x:k*15,y:0};
    			
            }
			
		  drawtable();
          addfood();//在start中調用添加食物函數
 
    }
 
    function addfood()
	{
	foodx = Math.floor(Math.random()*60)*15; //随機産生一個0-1之間的數
	foody = Math.floor(Math.random()*40)*15;
		
		for (var k=0;k<snake;k++)
		{
			if (foodx==snake[k].x&&foody==sanke[k].y)//防止産生的随機食物落在蛇身上
			{	
			addfood();
			}
		}
	
	
	}	
    		
   function move()
   {
	switch (togo)
	{
	case 1: snake.push({x:snake[snakeCount-1].x-15,y:snake[snakeCount-1].y}); break;//向左走
	case 2: snake.push({x:snake[snakeCount-1].x,y:snake[snakeCount-1].y-15}); break;
	case 3: snake.push({x:snake[snakeCount-1].x+15,y:snake[snakeCount-1].y}); break;
	case 4: snake.push({x:snake[snakeCount-1].x,y:snake[snakeCount-1].y+15}); break;
	case 5: snake.push({x:snake[snakeCount-1].x-15,y:snake[snakeCount-1].y-15}); break;
	case 6: snake.push({x:snake[snakeCount-1].x+15,y:snake[snakeCount-1].y+15}); break;
	default: snake.push({x:snake[snakeCount-1].x+15,y:snake[snakeCount-1].y});
	}
    snake.shift();//删除數組第一個元素
   	ctx.clearRect(0,0,900,600);//清除畫布重新繪制
   	isEat();
	isDead();
	drawtable();
   } 			
   
   function keydown(e)
   {
   switch(e.keyCode)
		{
         case 37: togo=1; break;
		 case 38: togo=2; break;
		 case 39: togo=3; break;
		 case 40: togo=4; break;
		 case 65: togo=5; break;
		 case 68: togo=6; break;
		}
   }
   
   function isEat()//吃到食物後長度加1
   {
    if(snake[snakeCount-1].x==foodx&&snake[snakeCount-1].y==foody)
   {
		addfood();
		snakeCount++;
		snake.unshift({x:-15,y:-15});
   }
   
   }
   //死亡函數
   function isDead()
   {
    if (snake[snakeCount-1].x>885||snake[snakeCount-1].y>585||snake[snakeCount-1].x<0||snake[snakeCount-1].y<0)
		{
        

		window.location.reload();
		}
   }
   
    document.onkeydown=function(e)
{
	keydown(e);
 
} 
window.onload = function()//調用函數
{ 
	start();
	setInterval(move,150);
	drawtable();
	
	
 
}
</script>
</body>
</html>
           
Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

然後我們浏覽器使用公網位址加這個html檔案通路,即可看到我們部署的小遊戲。

Linux使用寶塔面闆搭建網站,并内網穿透實作公網通路

繼續閱讀