はじめに
この記事は東京高専プロコンゼミ① Advent Calendar 2022の13日目の記事です.
※12/17日に書き始めましたが13日目の記事です(四日遅れ)
※記事を書きながら資料を読みながら動かしてみています。許して
それだけの話
今回たまたまさくらのvpsを使う機会ができたので、記事を書きます。
開始
https://knowledge.sakura.ad.jp/7938/
まず、公式チュートリアルを進めていきます。
公式のサーバー管理ページに入ってログインすると、大抵ブラウザからssh接続でコンソールに接続できるので、PuTTY
は使う必要はないと思います。
コンソールに接続してcent os 9
のuserに(初めて)ログインしようとしたらログインできなかったので(契約してから半月以上は経ってる)、OSを再インストールして、ログインに成功します。
試しにサーバーにアクセスさせる!
今回はscratchattach
というscratch
にpython
でアクセスするやつを使ってみます
$ sudo yum install python-pip
まずpip
が無かったのでinstallします。
python
はデフォルトであるらしいのでほっときます。
$pip install -U scratchattach
$ vi test.py
で適当にtest.pyというファイルを作り、
import scratchattach as scratch3
# session = scratch3.login("oligami", "********") # 自分のパスワード
# なぜか失敗したのでsessionIdを使います。※cookieに保存されている奴
session = scratch3.Session("********", username="oligami") # sessionIdはバカ長いです
conn = session.connect_cloud("767766792") # project_id
# https://scratch.mit.edu/projects/767766792/
variables = scratch3.get_cloud("767766792") # Returns a dict with all cloud var values
for name in variables.keys():
value = variables[name]
print("name: {}, value: {}".format(name, value))
conn.set_var(name, "-0123456789")
conn.disconnect()
pythonは普段書かなくて不安なので、colabで試した後確認すると成功していました。 ※log
次にvi
でこれを打ち込んだファイルを作ります。
[oligami@tk2-116-58904 python]$ vi scratchattach_test.py
[oligami@tk2-116-58904 python]$ python scratchattach_test.py
name: あいうえお, value: -0123456789
name: お, value: -0123456789
name: あああ, value: -0123456789
name: あああああ, value: -0123456789
name: お久しぶりです, value: -0123456789
name: いいいい, value: -0123456789
name: 上限テスト2, value: -0123456789
name: 上限テスト3, value: -0123456789
name: 上限テスト4, value: -0123456789
name: 上限テスト5, value: -0123456789
name: 上限テスト6, value: -0123456789
name: にちは, value: -0123456789
name: akura_nekoさん。やっぱり先人はいるものなんですね…, value: -0123456789
name: 上限テスト7, value: -0123456789
name: 上限テスト8, value: -0123456789
name: 上限テスト9, value: -0123456789
name: 上限テスト10, value: -0123456789
name: り内部での最初の10個しかプロジェクト内から変更できないか…, value: -0123456789
name:, value: -0123456789
成功しましたね。
logもしっかり更新されています。
ちなみにこれでscratchのクラウド変数にアクセスできるので、サーバーを一つ用いることでscratchにリアルとサーバー越しに通信させることが可能です。ソケット技術とか言うのですが、地震レーダーの作品とかあった気がします。
次に簡単なサイトを作ります。
チュートリアルに従ってApache
を入れます。
$ sudo yum install httpd
※httpdはcent osでのapacheらしい
次にhttpdを起動します
systemctl start httpd
$ sudo firewall-cmd --add-service=http --zone=public --permanent
$ sudo firewall-cmd --add-service=https --zone=public --permanent
ファイアウォールを何とかします。
$ sudo firewall-cmd --add-service=http --zone=public --permanent
ファイアウォールを再起動します。
ここで試しにサイトにアクセスするのですが、できません。困りましたね。
もしかしたらsudoではなくrootユーザーからやらなければいけなかったのかもしれません。
※rootのpassがわからず苦労しましたが(50分悪戦苦闘した)、ついにできたのでrootでやります。
結果、何も変わりませんでした。
結局、パケットフィルタの設定で「Web(80/443)」を許可したらめっちゃ一瞬で読み込まれて超絶ビビりました。
そしてそのまま進めてHello World
とだけ表示されたindex.htmlを表示させることに成功しました。
この記事を表示
このサイトをパクり、
phpの元サイトが更新されていたため適当に修正し、実際におこなってみます。
そしてよくわからない文字化けで終わりました。
markdownも認識されていなさそうだし、日本語は文字化けしています。
もう眠いのでここまで!!
続きはまたいつか!
だれかがダメなところ指摘してくれたら続きかくかも!!
最後にphpの中身
<?php
require_once 'Michelf/Markdown.inc.php';
require_once 'Michelf/MarkdownExtra.inc.php';
if ( isset($_SERVER['PATH_TRANSLATED']) ) {
$file = realpath($_SERVER['PATH_TRANSLATED']);
$ext = substr($file, strrpos($file, '.') + 1);
}
if ( $file and is_readable($file) and $ext === 'md')
$body = Markdown(file_get_contents($file));
else
$body = '<p>cannot read file</p>';
header('Content-Type: text/html;');
echo '<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Markdown Test</title>
</head>
<body>
' .
$body
. ' </body>
</html>
';
[追記] 下のリンクはapacheからnginxに変えたうえ、docker内に作り直し、ドメインを登録し、httpsにしたのでアクセスできません。
※実際のリンク