はやしくんさん雑記

はやしくんさんです

OS XでVMにCentOSを入れてC++11の開発環境を構築してipkn/crowでWeb開発を始めた



概要

  • クソみたいな備忘録
  • C++でWeb開発したかった
  • GCCでBoostとかを使いつつC++11で開発したかったがclangとの共存等がちょっとややこしかった
  • VirtualBoxにCentOS7を入れて、バックグラウンドでOSを動かしてSSHで接続するようにした
  • CentOS上でzshvimを導入し、使いやすくした
  • 諸々のソフトウエア等をインストールした

やったこと

VM上にCentOS7をインストール

がんばった(がんばってない、素直にやった)

VMCentOSコマンドラインからWindowを立ち上げずに起動できるようにする

$ cat .zprofile 
alias centos7='VBoxManage startvm CentOS7 --type headless'

これで$ centos7って打つだけで裏でCentOSが起動する この--type headlessってのがキモ

OS XからSSHVMCentOSに接続する

これを参考にすると良いと思います www.task-notes.com

注意点 * enp0s8の設定時に/24を忘れるとダメ * 上で192.168.56.10になっているのは192.168.56.111とかにしたほうが良い

また、OS XからSSHで接続する際に、毎回このアドレスを打つのはだるいので/etc/hosts192.168.56.111 centos7を追記しました こうすれば、SSHで接続する時に楽です

$ cat /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost 

192.168.56.111 centos7

$ ssh root@centos7

zshを設定した

centos zshでググれば設定は沢山出てくるはず 僕の考えたさいつよの設定↓

github.com

vimを入れた

vim力低いのでアレ

$ yum install vim

僕の.vimrc

github.com

CMake 3.4のインストール

yumで入るCMakeはとても古いので、最新版を入れた

CMake

$ cd /usr/local/src
$ yum install wget gcc gcc-c++
$ wget https://cmake.org/files/v3.4/cmake-3.4.3.tar.gz
$ tar xvf cmake-3.4.3.tar.gz
$ cd cmake-3.4.3
$ ./bootstrap
$ make 
$ make install

crowを動かす

今回使いたかったのはこれ、ipkn/crow

github.com

まず、boostを入れる

$ yum install boost boost-devel

バージョン低いけどまぁ我慢、そのうち上げたい

プロジェクトを作っていろいろする ポート番号等は任意で

$ mkdir ~/development/hoge
$ cd ~/development/hoge
$ git init
$ git submodule add https://github.com/ipkn/crow
$ vim CMakeLists.txt
$ vim main.cpp
$ cmake .
$ make
$ .hoge
(2016-03-05 14:36:01) [INFO    ] Crow/0.1 server is running, local port 80

CMakeLists.txt

cmake_minimum_required(VERSION 3.3)
project(hoge)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

find_package(Boost COMPONENTS date_time filesystem system thread REQUIRED)
INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIR} )

include_directories("crow/include")

set(SOURCE_FILES main.cpp)
add_executable(hoge ${SOURCE_FILES})

TARGET_LINK_LIBRARIES( hoge ${Boost_LIBRARIES} )

main.cpp

#include "crow.h"

int main()
{
    crow::SimpleApp app;
    CROW_ROUTE(app, "/")([]() {
        return "Hello world";
        });
    app.port(80).multithreaded().run();
}

80番ポートを開放

iptablesじゃなくなったっぽいね

$ firewall-cmd --add-port=80/tcp --zone=public --permanent$ iptables -A INPUT -p tcp --sport 80 -j ACCEPT
$ firewall-cmd --reload

あと、VirtualBoxの設定から、ネットワーク→アダプター1→ポートフォワーディングで80番を通しておきます

これでCentOS上でサーバーを動かして、そこにOS Xからアクセスできる!!

f:id:hayashikunsan:20160305235837p:plain

最後に

Pythonで書きます