java做網站如何引流推廣軟件
文章目錄
- 前言
- 1. 本地環(huán)境服務搭建
- 2. 局域網測試訪問
- 3. 內網穿透
- 3.1 ubuntu本地安裝cpolar內網穿透
- 3.2 創(chuàng)建隧道
- 3.3 測試公網訪問
- 4. 配置固定二級子域名
- 4.1 保留一個二級子域名
- 4.2 配置二級子域名
- 4.3 測試訪問公網固定二級子域名
前言
網:我們通常說的是互聯(lián)網;站:可以理解成在互聯(lián)網上的一個房子。把互聯(lián)網看做一個城市,城市里面的每一個房子就是一個站點,房子里面放著你的資源,那如果有人想要訪問你房子里面的東西怎么辦?
在現(xiàn)實生活中,去別人家首先要知道別人的地址,某某區(qū)某某街道,幾號,在互聯(lián)網中也有地址的概念,就是ip。通過ip我們就能找到在互聯(lián)網上面的站點,端口可以看做是這個房子的入口,不同的入口所看到的東西也就不一樣,如從大門(80端口)進是客廳,從窗戶(8080端口)進是書房。
接下來我們將通過簡單幾步來在ubuntu搭建一個web站點 html小游戲,并使用cpolar內網穿透將其發(fā)布到公網上,使得公網用戶也可以正常訪問到本地web站點的小游戲。
1. 本地環(huán)境服務搭建
apach2是一個服務,也可以看做一個容器,也就是上面說的房子,運行在ubuntu里,這個服務可以幫助我們把我們自己的網站頁面通過相應的端口讓除本機以外的其他電腦訪問。
下載apach2
sudo apt install apache2 php -y
下載好后啟動apache2
sudo service apache2 restart
然后打開Ubuntu 瀏覽器,輸入:http://localhost 即可看到我們apache 默認的頁面,此時說明本地站點已經搭建好了。
進入Apache默認服務器主目錄路徑,這個目錄放的是想要讓別人看到的資源,如一張圖片,一個html頁面等
cd /var/www/html
進入后刪掉index.html這個文件,由于apache默認頁面并不是我們自己想要的頁面,我們想要換成自己喜歡的頁面,所以需要刪掉.執(zhí)行以下命令:
sudo rm -rf index.html
為了達到測試效果,我們設置一個html頁面小游戲,創(chuàng)建名稱為game.html
的頁面
sudo vim game.html
按i
鍵 進入編輯模式,復制以下html代碼進去(復制全部)
<!DOCTYPE html>
<html><head><h4>Take it Easy!Please playing Game</h4></head><body><div></div><!-- 4個board --><div id="board1" style="position: absolute; width:80px; height:10px; left:420px; top:555px; background-color: cadetblue;"></div><div id="board2" style="position: absolute; width:80px; height:10px; left:520px; top:555px; background-color: cadetblue;"></div><div id="board3" style="position: absolute; width:80px; height:10px; left:620px; top:555px; background-color: cadetblue;"></div><div id="board4" style="position: absolute; width:80px; height:10px; left:720px; top:555px; background-color: cadetblue;"></div><!-- 小球 --><div id="ball" class="circle" style="width:20px; height:20px; background-color:crimson; border-radius: 50%; position:absolute; left:600px; top:100px"></div><!-- 框 --><div id="box" style="border: 5px solid #555555; width:400px; height:550px; display=hide"></div><!-- 分數(shù) 過的board越多,分數(shù)越高 --><div id="score" style="width:200px; height:10px; position:absolute; left:900px; font-family:'隸書'; font-size: 30px;">score: 0</div><!-- 游戲結束 --><div id="gg" style="width:200px; height:10px; position:absolute; left:550px; top:200px;font-family:'隸書'; font-size: 30px; display: none;">Game Over</div><script>// 設置box的樣式var box = document.getElementById("box");box.style.position = "absolute";box.style.left = "400px";// 設置board的樣式var board1 = document.getElementById("board1");var board2 = document.getElementById("board2");var board3 = document.getElementById("board3");var board4 = document.getElementById("board4");// 聲音var shengyin = new Audio();shengyin.src = "聲音2.mp3";shengyinFlag = 0; // 用來表示小球在第幾塊board上// 鍵盤事件函數(shù)var ball = document.getElementById("ball");document.onkeydown = f;function f(e){var e = e || window.event;switch(e.keyCode){case 37:// 按下左鍵,小球左移,但不要超過左邊框if(ball.offsetLeft>=box.offsetLeft + 10)ball.style.left = ball.offsetLeft - 8 + "px";break;case 39:// 按下右鍵,小球右移,但不要超過由邊框if(ball.offsetLeft<=box.offsetLeft+box.offsetWidth-ball.offsetWidth-10)ball.style.left = ball.offsetLeft + 8 + "px";break;case 32:}}// 定義一個分數(shù)變量var fenshu = 0;// 定義一個函數(shù),移動給定的一個boardfunction moveBoard(board){var t1 = board.offsetTop;if(t1<=0){// 如果board移到最上面了,就隨機換個水平位置,再移到最下面t2 = Math.floor(Math.random() * (720- 420) + 420);board.style.left = t2 + "px";board.style.top = "555px";fenshu += 1; //分數(shù)增加1document.getElementById("score").innerHTML = "score " + fenshu;}// elseboard.style.top = board.offsetTop - 1 + "px";}// 定義小球的速度變量var startSpeed = 1;var ballSpeed =startSpeed;// step函數(shù)是游戲界面的單位變化函數(shù)function step(){// board直接上下隔得太近,就逐個移動,否則,同時移動var t1 = Math.abs(board1.offsetTop - board2.offsetTop);var t2 = Math.abs(board2.offsetTop - board3.offsetTop);var t3 = Math.abs(board3.offsetTop - board4.offsetTop);// 定義一個board之間的間隔距離var t4 = 140;if(t1<t4){moveBoard(board1);}else if(t2<t4){moveBoard(board1);moveBoard(board2);}else if(t3<t4){moveBoard(board1);moveBoard(board2);moveBoard(board3);}else{moveBoard(board1);moveBoard(board2);moveBoard(board3);moveBoard(board4);}// 定義小球的垂直移動規(guī)則,1、向下勻加速運動,2、如果碰到board就被board持續(xù)抬上去,// 直到按左右鍵離開了該board// 如果小球的縱坐標等于某個board的縱坐標,就被抬起var t5 = Math.abs(ball.offsetTop - board1.offsetTop);var t6 = Math.abs(ball.offsetTop - board2.offsetTop);var t7 = Math.abs(ball.offsetTop - board3.offsetTop);var t8 = Math.abs(ball.offsetTop - board4.offsetTop);if(t5<=ball.offsetHeight && t5>0 && ball.offsetLeft>=board1.offsetLeft-ball.offsetWidth && ball.offsetLeft<=board1.offsetLeft+board1.offsetWidth){ball.style.top = board1.offsetTop - ball.offsetHeight + "px";ballSpeed = startSpeed;if(shengyinFlag != 1){shengyin.play();shengyinFlag = 1;}}else if(t6<=ball.offsetHeight && t6>0 && ball.offsetLeft>=board2.offsetLeft-ball.offsetWidth && ball.offsetLeft<=board2.offsetLeft+board2.offsetWidth){ball.style.top = board2.offsetTop - ball.offsetHeight + "px";ballSpeed = startSpeed;if(shengyinFlag != 2){shengyin.play();shengyinFlag = 2;}}else if(t7<=ball.offsetHeight && t7>0 && ball.offsetLeft>=board3.offsetLeft-ball.offsetWidth && ball.offsetLeft<=board3.offsetLeft+board3.offsetWidth){ball.style.top = board3.offsetTop - ball.offsetHeight + "px";ballSpeed = startSpeed;if(shengyinFlag != 3){shengyin.play();shengyinFlag = 3;}}else if(t8<=ball.offsetHeight && t8>0 && ball.offsetLeft>=board4.offsetLeft-ball.offsetWidth && ball.offsetLeft<=board4.offsetLeft+board4.offsetWidth){ball.style.top = board4.offsetTop - ball.offsetHeight + "px";ballSpeed = startSpeed;if(shengyinFlag != 4){ shengyin.play();shengyinFlag = 4;}}else{ballSpeed = ballSpeed + 0.01; // 數(shù)字相當于加速度ball.style.top = ball.offsetTop + ballSpeed + "px";}// ballSpeed = ballSpeed + 0.01; // 數(shù)字相當于加速度// ball.style.top = ball.offsetTop + ballSpeed + "px";// 如果小球跑出來box,就結束游戲if(ball.offsetTop==0 || ball.offsetTop>=box.offsetTop+box.offsetHeight){clearInterval(gameover);ball.style.display = 'none';board1.style.display = 'none';board2.style.display = 'none';board3.style.display = 'none';board4.style.display = 'none';var gg = document.getElementById("gg"); //顯示游戲結束gg.style.display = 'block';}}var gameover = setInterval("step();", 8);</script></body>
</html>
復制完后按
Esc
鍵退出編輯,接著輸入冒號:wq
保存退出即可
2. 局域網測試訪問
接著瀏覽器輸入http://localhost/game.html,即可看到html頁面的小游戲站點,由于部署的是靜態(tài)站點,不需要重啟服務。
3. 內網穿透
由于這個站點目前只能在本地被訪問到,為了使所有人都可以訪問,我們需要將這個本地基礎站點發(fā)布到公網。這里我們可以通過cpolar內網穿透工具來實現(xiàn),它支持 http/https/tcp協(xié)議,無需公網IP ,也不用設置路由器,可以很容易將本地站點發(fā)布到公網供所有人訪問。
3.1 ubuntu本地安裝cpolar內網穿透
cpolar官網:https://www.cpolar.com/
- cpolar支持一鍵自動安裝腳本
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
- token認證
登錄cpolar官網后臺,點擊左側的驗證,查看自己的認證token,之后將token貼在命令行里:
cpolar authtoken xxxxxxx
- 簡單穿透測試,穿透成功有正常生成公網地址,按ctrl+c退出
cpolar http 8080
- 向系統(tǒng)添加服務,將cpolar配置為開機自啟
sudo systemctl enable cpolar
- 啟動cpolar服務
sudo systemctl start cpolar
- 查看服務狀態(tài),正常顯示為
active
表示啟動成功,為正常在線狀態(tài)
sudo systemctl status cpolar
3.2 創(chuàng)建隧道
cpolar安裝成功之后,在瀏覽器上訪問本地9200端口
,登錄cpolar web UI管理界面。
點擊左側儀表盤的隧道管理——創(chuàng)建隧道:
- 隧道名稱:可自定義,注意不要重復
- 協(xié)議:http
- 本地地址:80
- 端口類型:隨機域名
- 地區(qū):China vip
點擊創(chuàng)建
隧道創(chuàng)建成功后,點擊左側的狀態(tài)——在線隧道列表,可以看到剛剛創(chuàng)建的隧道已經有生成了相應的公網地址,將其復制下來,接下來測試訪問一下。
3.3 測試公網訪問
打開瀏覽器訪問剛剛所復制的公網地址,注意,后面要加上路徑/game.html,出現(xiàn)游戲界面即成功。
游戲控制使用:鍵盤上下左右鍵
4. 配置固定二級子域名
由于以上所創(chuàng)建的隧道選擇的是隨機域名,所生成的公網地址會在24小時內隨機變化,對于需要長期訪問的用戶來講較為不方便。不過我們可以為其配置一個固定的二級子域名來進行訪問,改地址不會隨機變化。
注意:配置固定二級子域名功能需要升級至基礎版套餐或以上才支持。
4.1 保留一個二級子域名
登錄cpolar官網后臺,點擊左側的預留,找到保留二級子域名:
- 地區(qū):選擇China VIP
- 二級域名:可自定義填寫
- 描述:即備注,可自定義填寫
點擊保留
提示子域名保留成功,復制所保留的二級子域名
4.2 配置二級子域名
訪問本地9200端口登錄cpolar web UI管理界面,點擊左側儀表盤的隧道管理——隧道列表,找到所要配置的隧道,點擊右側的編輯
修改隧道信息,將保留成功的二級子域名配置到隧道中
- 域名類型:選擇二級子域名
- Sub Domain:填寫保留成功的二級子域名,本例為test01
點擊更新
提示更新隧道成功,點擊左側儀表盤的狀態(tài)——在線隧道列表,可以看到公網地址已經更新為保留成功的二級子域名,將其復制下來。
4.3 測試訪問公網固定二級子域名
我們使用任意瀏覽器,輸入剛剛配置成功的公網固定二級子域名+/game.html即可看到我們創(chuàng)建的站點小游戲
轉載自cpolar極點云的文章:在Ubuntu搭建Web站點,并將其發(fā)布到公網訪問