リトルサーバーは一番安いプランでもSSH接続させてくれるのとてもコスパがいい。
以下自分が遊んだ内容。内容がないよう。
なにはともあれSSH接続しないと始まらない。
SSH構成ファイルの設定
HostName
とUser
の部分はコントロールパネルを見ながら埋めます。
Host lsv
HostName hogehoge.lsv.jp
User fuga
IdentitiesOnly yes
IdentityFile "C:\Users\userName\.ssh\id_rsa"
PasswordAuthentication no
Port 43292
Host
自由に決めてください(例:lsv)
HostName
自分のアカウントを記入してください
User
自分のユーザーIDを入力してください
IdentitiesOnly
yes (→ 公開鍵認証だけを使用するか)
IdentityFile
"C:\Users\userName\.ssh\id_rsa" (→ 秘密鍵の場所)
PasswordAuthentication
no (→ パスワードでの接続を行うか)
Port
43292 (→ リトルサーバーにはPort 22 でアクセスできません)
ssh lsv
初回接続だと “can't be established.” と確認されるので”yes”を入力。これでcurl
コマンドもunzip
もターミナルからできるように。
❌(非推奨)Visual Studio Codeの拡張機能「Remote - SSH」で接続する
- 拡張機能「Remote - SSH」は有効化しておく
- リトルサーバーでSSH接続に必要な公開鍵と秘密鍵は既に発行している
- SSH構成ファイルを作成済み(SSH接続する前に)
拡張機能「Remote Development」を入れるとリモート開発に使うだろう拡張機能まるっとついてきます。もちろんピンポイントでインストールしてもいい。
拡張機能を有効にした後、SSH構成ファイルの場所を指定して接続します。次の記事みながら作業しました。
参考
そのままログイン成功。サーバー上で開発できるようになったぞ~!
しかしトラブル発生。
結論:リトライループにはまった
何度か接続していると、リトライループにはまって、Remote-SSH: Kill VS Code Server on Host コマンドでプロセスを殺したり、.vscode-server
を削除したり……微妙な感じもありつつとりあえず接続まではたどりついた……のはいいんだけれど。
Remote - SSH で今後続けるかは微妙なラインかもしれない。
リトライループさえなければいいんだけど回避がうまくできなかった。
なんか怒られそうな気がする。
Gitは使えるのか?
Git自体は入ってるんだけどもバージョンが古いです。
git --version
## output
git version 1.8.3.1
リトルサーバー上にgitリポジトリ作ってローカルからpushしたりpullできたらいいのになというのがやりたいことです。
上の記事のようにGitのベアリポジトリと本番のリポジトリをサーバーに作ってpullしたら更新が楽できるんじゃないかと思ったんですが。
無理だった 😇
pullのところで権限ないですって怒られる。どうして……。
サーバー上にベアリポジトリを--share
オプション無しで作成したの関係あるか…?
と思って後から共有できるようにしてみたけど、多分そうじゃない。
ちょっと自己解決は無理そうでした。ノンベアリポジトリを作ってリモートに指定して、ローカルからpushするは多分できそう(実験してない)。
(20230717追記)
サーバー上に作成したノンベアリポジトリを、初期化だけして空状態だったのが悪かったっぽいです。自分のせいか…………。
git remote -v
origin /home/XXX/git/myapp.git (fetch)
origin /home/XXX/git/myapp.git (push)
にリモートリポジトリが追加されている状態で
git fetch origin
git checkout master
git merge origin/master
で解決しました。pullは次のエラーが出てやっぱりできなかったので…。
/usr/libexec/git-core/git-pull: 行 251: /usr/bin/tr: 許可がありません
There are no candidates for merging among the refs that you just fetched.
Generally this means that you provided a wildcard refspec which had no
matches on the remote end.
ノンベアリポジトリをローカルにクローン(20230717追記)
git clone alias:/path/to/repository.git
SSH設定ファイルが既にあるので、ローカルにクローンしてくるときはalias部分をHostに書き換えてクローンできる。
プロジェクト毎のGitユーザーを登録する(20230717追記)
今回おひとり様でしかないし、ここでしか使わないのでローカルオプションをつけて作業。
ユーザー登録しないとgit commitできないので。
git config --local user.name [USERNAME]
git config --local user.email [MAILADDRESS]
// 確認
git config user.name
パーミッション一度に変更したい
一発でサクッとパーミッション変更したかったのでどうやったらいいかChatGPTに聞いて次のscriptファイルを用意するなどした。コマンドはchmod
を使用する。必要な分だけ書く。
#!/bin/bash
chmod 700 hogehoge
このscript.sh
に実行権限を与えてコマンドプロンプトで叩いた。設置終わり。
chmod +x script.sh
./script.sh
ターミナル使えるとこういうこともできる……。
phpのコマンドがないって怒られる
which php
## output
/usr/bin/which: no php in (...)
いやPHP入ってるじゃん!? ってなったんですが、PATHが通ってないらしかったので、
これもChatGPTに聞いてSSH接続した後のターミナルで
export PATH=$PATH:/usr/local/php/8.1/bin/
で一時的にパス通しました。
php -v
PHP 8.1.10 (cli) (built: Sep 11 2022 03:05:01) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.10, Copyright (c) Zend Technologies
with Zend OPcache v8.1.10, Copyright (c), by Zend Technologies
👏👏👏
リトルサーバーの各プログラムのパスはFAQに代表的なものが載っています。(以下引用)
sh | /bin/sh または /usr/bin/sh |
nkf | /usr/bin/nkf |
unzip | /usr/bin/unzip |
tar | /bin/tar |
gzip | /bin/gzip |
sendmail | /usr/sbin/sendmail |
perl | /usr/local/bin/perl または /usr/bin/perl |
PHP5.4 | /usr/local/php/5.4/bin/php または /usr/local/php/5.4/bin/php-cgi |
PHP5.6 | /usr/local/php/5.6/bin/php または /usr/local/php/5.6/bin/php-cgi |
PHP7.0 | /usr/local/php/7/bin/php または /usr/local/php/7/bin/php-cgi |
PHP7.1 | /usr/local/php/7.1/bin/php または /usr/local/php/7.1/bin/php-cgi |
PHP7.2 | /usr/local/php/7.2/bin/php または /usr/local/php/7.2/bin/php-cgi |
PHP7.3 | /usr/local/php/7.3/bin/php または /usr/local/php/7.3/bin/php-cgi |
PHP7.4 | /usr/local/php/7.4/bin/php または /usr/local/php/7.4/bin/php-cgi |
PHP8.1 | /usr/local/php/8.1/bin/php または /usr/local/php/8.1/bin/php-cgi |
(2024/04/01追記).bashrcにalias設定した。
# User specific aliases and functions
alias php81='/usr/local/php/8.1/bin/php'
反映させる。
$ source ~/.bashrc
$ php81 --version
PHP 8.1.10 (cli) (built: Sep 11 2022 03:05:01) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.10, Copyright (c) Zend Technologies
with Zend OPcache v8.1.10, Copyright (c), by Zend Technologies
php81を入力して何かできるようになった。aliasコマンドで一応確認した。
$ alias
...
alias php81='/usr/local/php/8.1/bin/php'
環境変数のパス通ってるディレクトリの確認方法
// 環境変数の確認
$ echo $PATH
余談、.bash_profileが存在したので、PATHのところに追記したあとsourceコマンド使って反映させたらOKのはず
$ cd ~
$ vi .bash_profile
(省略)
// ↓↓を編集
PATH=$PATH:$HOME/.local/bin:$HOME/bin
// 更新を反映させる
$ source ~/.bash_profile