Windowsしか知らないマンが触る、Ubuntuサーバー構築（基本操作）まとめ

まあ全くの初見マンではないんだが、WindowsばっかりマンがUbuntuを触ったときに　はまったところを　ここに　書きまとめていく。やってることは将棋対局サーバーの構築。

環境

- さくらVPS
- Ubuntu 16.04
- PuTTY
- FileZilla

# NuGet
Ubuntuと関係無いが、
Windows / Visual Studio 2015 には初めから入っている、ライブラリを１発インストールするもの。

メインメニューから [Tools] - [NuGet Package Manager] - [Package Manager Console] と進める。
普段、エラーとか検索画面が出ている小窓に

```
PM>
```

と書かれているので、ここに文字列を入れて [Enter] キーを押すとよい。

# Ubuntu
## バージョン

```
cat /etc/lsb-release
```

## 最初はルートユーザー（スーパーユーザー）では入れない

一般ユーザーで接続すること。そのあと

```
sudo su -
```

を打鍵することで（今のユーザーを覚えておきながら）スーパーユーザーに１個進む（切替）。

## 一般ユーザーに切替

```
su taro1234
```

taro1234 にはユーザー名が入る。（今のユーザーを覚えておきながら）一般ユーザー１個進む（切替））。

## ログアウト、エグジット

```
logout
```

セッションから抜ける。サーバーに接続しているターミナルを切るときはこれ。

```
exit
```

シェル・スクリプトから抜ける。切り替えたユーザーから、切り替えるユーザーに１個戻るときはこれ。

とりあえず exit を連打すれば　全て抜けれる。

# FileZilla
## ファイル転送ができないと思ったら

フォルダーのパーミッションに書き込み許可を付けること。
スーパーユーザーになってから　例えば

```
chmod 755 shogi
```

ここで shogi はディレクトリ（フォルダ）名。
といったように打鍵してさらに

```
ls -l
```

と打鍵

```
～略～
drwxr-xrwx 7 root root 4096 Mar  8 01:34 shogi
  ~     ~
  ※wが付いていることを確認する
```

# 動いているプロセスの確認
プロセスは、スタートさせたプログラムぐらいの意味のもの

```
ps
```

自分が動かしたプロセスの一覧。
右から２列目ぐらいに 4桁～5桁の数字があれば その数字は プロセスID かも。

```
ps aux
```

もっといっぱい動かしているプロセスの一覧。aux はオプション

```
ps aux | grep php
```

検索結果のうち、phpを含む行だけ抽出

# nano
ニュース等を読むためのテキスト・リーダー。編集もちょっと可能。

## 開始

```
nano ★ファイル名
```

## ファイルの保存
[Ctrl]+O (Ubuntuでは Ctrl を ^ で表し、 ^O と表記)

## 終了
[Ctrl]+X (Ubuntuでは Ctrl を ^ で表し、 ^X と表記)

## コピー
(PuTTYの機能) マウスで文字上をドラッグするだけ。ボタンを押す等のアクションは不要。

## 貼り付け
(PuTTYの機能) マウスを右クリック

# mono / mcs
mcs は mono の C# のコンパイラー。 mono というのは C# をオープンソースにしようというプロジェクト。

## コンパイル

```
mcs MsgQueue.cs
```

Linux なのに MsgQueue.exe といったように 拡張子 .exe を付けてくれる。

## リファレンス参照を追加してコンパイル

```
mcs /reference:Rabbit.Client.dll MsgQueue.cs
```

ここで Rabbit.Client.dll の所には dll の名前が入る。

## プリプロセッサ定義を追加してコンパイル

```
mcs -define:UBUNTU MsgQueue.cs
```

 #define UBUNTU と書いたのと同等。複数ある場合はセミコロンで区切るらしい。

# RabbitQM
## 先にインストールしておく必要があるもの

- ERLANG

## インストール
### Visual Studio 2015 にインストールするには

NuGet を使う。

```
PM> Install-Package RabbitMQ.Client -Version 4.1.1
```

### Ubuntu にインストールするには

「Installing on Debian / Ubuntu」（RabbitMQ）
http://www.rabbitmq.com/install-debian.html

## 停止

```
rabbitmqctl stop
```

## 起動

(1)

```
rabbitmq-server
```

-(2) [Ctrl]+[Z]
-(3) bg ★ジョブ番号

## メッセージ・キューの中身確認

```
rabbitmqctl list_queues
```

## コンシューマー（メッセージを取り出す人）一覧

```
rabbitmqctl list_consumers
```

## ログ・フォルダー

```
cd /var/log/rabbitmq
```

## データ・フォルダー

```
cd /var/lib/rabbitmq/mnesia
```

## 設定ファイルを入れるフォルダー

```
cd /etc/rabbitmq
```

空っぽ。

# Cron
## 稼働状況

```
/etc/init.d/cron status
```

※出てこないようなら、起動してない

## 起動

```
/etc/init.d/cron start
```

## 再起動

```
/etc/init.d/cron restart
```

## ログ

```
less /var/log/syslog | grep CRON
```

## スケジュール設定

ルートとして実行したい場合

```
sudo crontab -e
```

一般ユーザーとして実行したい場合

```
crontab -e
```

## トラブルシューティング

### Cron は実行しているのに .sh ファイルが思った通りに動いていないと思ったら

```
#!/bin/bash
cd /fuga/hoge
```

想定しているディレクトリへ移動しておくこと。

# PHP / composer
## パッケージのインストール

- (1)composer.json ファイルは自分で作成する。このテキストファイルには、そのフォルダー（.phpファイルを置くことになる場所）に構成して欲しいパッケージを並べる。

(2)

```
composer install
```

これでデプロイメントされる。vendor フォルダーを作ってそこにいろいろ入れてくれる。

## パッケージの更新

```
composer update
```

# 改行コード

Windows から Ubuntu に C++ のファイルを持っていったら改行コードが違うので Makefile が動かないそんなときに。

## nkfをインストール

```
# make profgen_sse
```

## 改行変換

Makefile、.hpp、.cpp、.sfen、.txt をLFに置換

```
find . \( -name \Makefile -o -name \*.hpp -o -name \*.cpp -o -name \*.sfen -o -name \*.txt \) -type f | xargs -n 10 nkf -Lu --overwrite
```

参照 : 複数ファイルの改行コードを一括置換しちゃう (Qiita) http://qiita.com/kouchi67/items/958e74ef792eed0c157d