今までWebページやWebアプリケーションを作ってきましたが、もっとレイヤの低い部分のことがしたいなと。
いわゆるネットワークプログラミングってやつです。
そもそも私がプログラミングを勉強し始めたきっかけというのが、この本を見つけたからなんですよね。
すごく興味あったので、即買って読んでみました。
が、プログラミング初心者の私には内容が難しすぎて2つ目の例くらいから理解が追いつかなくなりました(^_^;)
そのため、この本を理解するためにPythonの勉強を始めたんですよねw
そこから楽しくなっていろいろ勉強してきましたけど、原点はPythonでありネットワークプログラミングなんですよ。
最近全く触れてこずに放置してましたけど、また挑戦したいなと思いまして、改めて環境作りに取り掛かりました。
仮想環境の構築
今回はサーバのことも学びたいなと思ったので、VirtualBox上にCentOS7を入れてみました。
最小限のインストールにしたので、GUIなしのコマンドのみです。
VirtualBoxを起動して、インストールしたCentOSを起動するとコマンド画面が立ち上がるんですが、わざわざこの2手間かけてコマンド画面を立ち上げるのってとても面倒に感じて、何かしら楽できる方法がないかと調べました。
SSHを使う
CentOSについて(というかサーバについて)を調べてると、SSHで接続して操作するのが主流(?)のようだったので、SSHを使えるようにしました。
と言っても、SSH自体はCentOSに元々入ってたので、設定を少しいじるだけ。
/etc/ssh/sshd_configのPort 22と書かれた行がコメントアウトされているので、#を消して有効化、
PermitRootLoginがyesになってるのでnoにして保存するだけ。
(PermitRootLoginもコメントアウトされていたら#を消して有効化)
あとは
systemctl start sshd.service
でSSHを有効化すればOKです。
一応念の為ファイアウォールにSSHの許可も入れておきました。
firewall-cmd --permanent --add-service=ssh
と入れればいいみたいです。
そもそもファイアウォールが有効化になっているのかわかりませんでしたが、一応ね?
TeraTermを使って無事に接続できました。
でも今のままだとVirtualBoxを起動して、CentOSを起動してからTeraTermで接続ってしないといけないんですよね。
しかもそのVirtualBoxのウィンドウを消しちゃうとSSH接続も切れちゃうという不便っぷり。
しかし、それを解決できる方法があります。
VirtualBoxをバックグラウンドで動かす
VirtualBoxには、VirtualBoxを起動せずともバックグラウンドで動かすための便利なシステムが存在するんです。
VBoxManage.exeというものがVirtualBoxをインストールしたフォルダに入ってます。
これを実行することで、VirtualBoxをバックグラウンドで動作させることができます。
具体的には、コマンドプロンプトでVirtualBoxをインストールしたフォルダまで行き、
VBoxManage.exe startvm --type headless 名前
と実行します。
「名前」はVirtualBoxにインストールしたCentOSの名前です。
ちなみに、終了する場合は
VBoxManage.exe controlvm 名前 acpipowerbutton
でできます。
これでわざわざVirtualBoxを起動する手間もなく、ウィンドウを残しておく必要もないので快適です!
バッチファイルで更に快適に
コマンドプロンプトでVirtualBoxをインストールしたフォルダまで移動してこの長いコマンド実行ってのも手間ですよね。
それを解決するのがバッチファイル化です。
作り方は簡単!
cd VirtualBoxをインストールしたフォルダ
VBoxManage.exe startvm --type headless 名前
この2行をテキストファイルに書き込んで保存。
そして、その保存したテキストファイルの拡張子を「.bat」にするだけです。
これでこのbatファイルをダブルクリックするだけでVirtualBoxがバックグラウンドで動くようになります。
終了させる方も作っておいた方がいいですね。
VirtualBoxを使ってWindows上でCentOSを快適に動かす方法まとめ
これでダブルクリックするだけでVirtualBox上で動くCentOSの起動・終了ができるようになって、TeraTermでそのCentOSの操作もできるようになるので、CentOS上に開発環境作っていろいろと快適にできるようになりそうです。
まずはgccを入れてソケットプログラミングの基本的なところから勉強し直そうかなと思ってます。