記事ディレクトリ
序文
シンプルで使いやすいサーバー運用・保守管理パネルとして、Linux/Windowsシステムに対応し、LAMP/LNMP環境やWebサイト、データベース、FTPなどをワンクリックで構築し、簡単に管理することができます。 Web 経由のサーバー。
次のチュートリアルでは、Pagoda パネルを使用してローカル Web サイトを迅速かつ簡単に構築し、同じ LAN 上にいないユーザーもローカル Web サイトにアクセスできるようにイントラネット侵入を実行する方法を示します。パブリックIPまたはルーターの設定。
1. 環境のインストール
Apache サーバーをインストールするには、パゴダ パネルで Web サイトをクリックすると、Apache サーバーをインストールするように求められます。
クイックインストールを選択してください
インストールが完了すると、左側にメッセージ一覧が表示されますので、インストールが完了するまで待ちます。
2. cpolar イントラネットペネトレーションをインストールする
- Pagoda ターミナル コマンド ウィンドウを開き、cpolar インストール スクリプトを使用します。
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
- トークン認証
cpolar 公式 Web サイトにログインし、左側をクリックして验证
認証トークンを表示し、コマンド ラインにトークンを貼り付けます。
cpolar authtoken xxxxxxx
- システムにサービスを追加する
sudo systemctl enable cpolar
- cpolarサービスを開始する
sudo systemctl start cpolar
- ポート9200を開く
Pagoda パネルでセキュリティを選択し、ポート 9200 を開きます。
- cpolar Web UI管理インターフェイスにログインします。
LAN IP のポート 9200 にアクセスすると、cpolar 管理インターフェイスが表示されますので、cpolar の電子メール アカウントを入力してログインします。
3. イントラネットの浸透
cpolar Web UI 管理インターフェイスにログインした後、デフォルトの Apache サービスはポート 80 であるため、ポート 80 を指す http トンネルを作成します。
- トンネル名: カスタマイズ可能、重複しないように注意してください
- プロトコル: http
- ローカルアドレス: 80
- ポートタイプ: ランダムなドメイン名
- 地域: 中国VIP
クリック创建
作成が成功したら、オンライン トンネル リストを開き、作成したパブリック ネットワーク アドレスをコピーします。
次に、Pagoda パネルを開き、Web サイトをクリックして、[サイトの追加] を選択し、コピーしたパブリック ネットワーク アドレスをドメイン名のパラメーター ボックスに貼り付け、[送信] をクリックします。
この時点で、サイトが正常に作成されたことがわかります。
次に、コピーしたパブリック ネットワーク アドレスを使用し、ブラウザを開いてアクセスすると、成功を示すようこそページが表示されます。
4. httpアドレスを修正
作成したばかりのトンネルはランダムな一時アドレスを使用するため、アドレスは 24 時間以内に変更されます。長期的なリモート アクセスの場合は、次にこのパブリック ネットワーク アドレスを固定として構成します。
第 2 レベルのサブドメイン名の構成をサポートするには、基本パッケージ以上にアップグレードする必要があります。
cpolar 公式 Web サイトのバックエンドにログインし、左側のダッシュボードをクリックして预留
見つけ保留二级子域名
、http トンネルの第 2 レベルのサブドメイン名を予約します。
- 地域: サーバー地域を選択してください
- 名前: 予約したい第 2 レベルのサブドメイン名を入力します (カスタマイズ可能)
- 説明: カスタマイズ可能なメモ
この例では、mywebsitegame
という名前の第 2 レベルのサブドメインを予約します。サブドメイン名が正常に予約されたら、サブドメイン名をコピーし、トンネル内に構成します。
5. 第 2 レベルのサブドメイン名を構成する
cpolar Web UI 管理インターフェイスにログインします。左側のダッシュボードで隧道管理
[-]隧道列表
をクリックし、第 2 レベルのサブドメイン名で構成する必要があるトンネル (この場合は、Apache Web サイトのトンネル) を見つけ、右側の をクリックします。编辑
トンネル情報を変更し、トンネルに第 2 レベルのサブドメイン名を設定します。
- ドメインの種類: 代わりに選択してください
二级子域名
- サブドメイン: 予約したばかりの第 2 レベルのサブドメイン名を入力します (この例では
mywebsitegame
)。
変更が完了したら、 をクリックします。更新
トンネルが正常に更新されたら、左側のダッシュボードで状态
[-]在线隧道列表
をクリックします。トンネルのパブリック ネットワーク アドレスが第 2 レベルのサブドメイン名に更新されたことがわかります。パブリック ネットワーク アドレスをコピーします。
次に、Pagoda パネルを開き、サイトを見つけて、[設定] をクリックします。
固定パブリック アドレス ドメイン名を追加する
次に、前に作成したランダムなアドレスを削除します
次に、ブラウザを開き、固定パブリック ネットワーク アドレスを使用してアクセスします。上記でサイトのリモート アクセスを設定しました。
6. テストページを作成する
サイトのルート ディレクトリ パスをクリックし、直接クリックします
game.html という名前の新しいページを作成します。
次に、編集するファイルをダブルクリックし、次のコードをそのファイルにコピーし (スネーク ミニ ゲーム)、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>
次に、ブラウザーがパブリック ネットワーク アドレスを使用してこの HTML ファイルを追加してアクセスすると、デプロイしたミニゲームが表示されます。
cpolar ポール クラウドの記事からの転載: [Linux サービスは、パゴダ パネルを使用して Web サイトを構築し、パブリック ネットワーク アクセスを公開します] ( Linux サービスは、パゴダ パネルを使用して Web サイトを構築し、パブリック ネットワーク アクセスを公開します - cpolar ポール クラウド)