Linux サービスは、Pagoda パネルを使用して Web サイトを構築し、イントラネットの侵入を通じてパブリック ネットワーク アクセスを実現します。

序文

シンプルで使いやすいサーバー運用・保守管理パネルとして、Linux/Windowsシステムに対応し、LAMP/LNMP環境やWebサイト、データベース、FTPなどをワンクリックで構築し、簡単に管理することができます。 Web 経由のサーバー。

次のチュートリアルでは、Pagoda パネルを使用してローカル Web サイトを迅速かつ簡単に構築し、同じ LAN 上にいないユーザーもローカル Web サイトにアクセスできるようにイントラネット侵入を実行する方法を示します。パブリックIPまたはルーターの設定。

1. 環境のインストール

Apache サーバーをインストールするには、パゴダ パネルで Web サイトをクリックすると、Apache サーバーをインストールするように求められます。

画像-20230307143843485

クイックインストールを選択してください

画像-20230307155129355

インストールが完了すると、左側にメッセージ一覧が表示されますので、インストールが完了するまで待ちます。

画像-20230307155221216

2. cpolar イントラネットペネトレーションをインストールする

https://www.cpolar.com/

  • Pagoda ターミナル コマンド ウィンドウを開き、cpolar インストール スクリプトを使用します。
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

画像-20230303183721806

  • トークン認証

cpolar 公式 Web サイトにログインし、左側をクリックして验证認証トークンを表示し、コマンド ラインにトークンを貼り付けます。

cpolar authtoken xxxxxxx

20230111103532

  • システムにサービスを追加する
sudo systemctl enable cpolar
  • cpolarサービスを開始する
sudo systemctl start cpolar
  • ポート9200を開く

Pagoda パネルでセキュリティを選択し、ポート 9200 を開きます。

画像-20230303184430176

  • cpolar Web UI管理インターフェイスにログインします。

LAN IP のポート 9200 にアクセスすると、cpolar 管理インターフェイスが表示されますので、cpolar の電子メール アカウントを入力してログインします。

画像-20230303184618711

3. イントラネットの浸透

cpolar Web UI 管理インターフェイスにログインした後、デフォルトの Apache サービスはポート 80 であるため、ポート 80 を指す http トンネルを作成します。

  • トンネル名: カスタマイズ可能、重複しないように注意してください
  • プロトコル: http
  • ローカルアドレス: 80
  • ポートタイプ: ランダムなドメイン名
  • 地域: 中国VIP

クリック创建

画像-20230307161358154

作成が成功したら、オンライン トンネル リストを開き、作成したパブリック ネットワーク アドレスをコピーします。

画像-20230307161716775

次に、Pagoda パネルを開き、Web サイトをクリックして、[サイトの追加] を選択し、コピーしたパブリック ネットワーク アドレスをドメイン名のパラメーター ボックスに貼り付け、[送信] をクリックします。

画像-20230307162110990

この時点で、サイトが正常に作成されたことがわかります。

画像-20230307162248903

次に、コピーしたパブリック ネットワーク アドレスを使用し、ブラウザを開いてアクセスすると、成功を示すようこそページが表示されます。

画像-20230307163357047

4. httpアドレスを修正

作成したばかりのトンネルはランダムな一時アドレスを使用するため、アドレスは 24 時間以内に変更されます。長期的なリモート アクセスの場合は、次にこのパブリック ネットワーク アドレスを固定として構成します。

第 2 レベルのサブドメイン名の構成をサポートするには、基本パッケージ以上にアップグレードする必要があります。

cpolar 公式 Web サイトのバックエンドにログインし、左側のダッシュボードをクリックして预留見つけ保留二级子域名、http トンネルの第 2 レベルのサブドメイン名を予約します。

  • 地域: サーバー地域を選択してください
  • 名前: 予約したい第 2 レベルのサブドメイン名を入力します (カスタマイズ可能)
  • 説明: カスタマイズ可能なメモ

画像-20230307164936590

この例では、mywebsitegameという名前の第 2 レベルのサブドメインを予約します。サブドメイン名が正常に予約されたら、サブドメイン名をコピーし、トンネル内に構成します。

画像-20230307165346945

5. 第 2 レベルのサブドメイン名を構成する

cpolar Web UI 管理インターフェイスにログインします。左側のダッシュボードで隧道管理[-]隧道列表をクリックし、第 2 レベルのサブドメイン名で構成する必要があるトンネル (この場合は、Apache Web サイトのトンネル) を見つけ、右側の をクリックします。编辑

画像-20230307165440111

トンネル情報を変更し、トンネルに第 2 レベルのサブドメイン名を設定します。

  • ドメインの種類: 代わりに選択してください二级子域名
  • サブドメイン: 予約したばかりの第 2 レベルのサブドメイン名を入力します (この例ではmywebsitegame)。

変更が完了したら、 をクリックします。更新

画像-20230307165524932

トンネルが正常に更新されたら、左側のダッシュボードで状态[-]在线隧道列表をクリックします。トンネルのパブリック ネットワーク アドレスが第 2 レベルのサブドメイン名に更新されたことがわかります。パブリック ネットワーク アドレスをコピーします。

画像-20230307165845253

次に、Pagoda パネルを開き、サイトを見つけて、[設定] をクリックします。

画像-20230307170712990

固定パブリック アドレス ドメイン名を追加する

画像-20230307170900973

次に、前に作成したランダムなアドレスを削除します

画像-20230307170948787

次に、ブラウザを開き、固定パブリック ネットワーク アドレスを使用してアクセスします。上記でサイトのリモート アクセスを設定しました。

画像-20230307172031135

6. テストページを作成する

サイトのルート ディレクトリ パスをクリックし、直接クリックします

画像-20230307172438126

game.html という名前の新しいページを作成します。

画像-20230307172627027

次に、編集するファイルをダブルクリックし、次のコードをそのファイルにコピーし (スネーク ミニ ゲーム)、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>

画像-20230307172848766
次に、ブラウザーがパブリック ネットワーク アドレスを使用してこの HTML ファイルを追加してアクセスすると、デプロイしたミニゲームが表示されます。

画像-20230307173606348

cpolar ポール クラウドの記事からの転載: [Linux サービスは、パゴダ パネルを使用して Web サイトを構築し、パブリック ネットワーク アクセスを公開します] ( Linux サービスは、パゴダ パネルを使用して Web サイトを構築し、パブリック ネットワーク アクセスを公開します - cpolar ポール クラウド)

おすすめ

転載: blog.csdn.net/qq_72916130/article/details/132280023