2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AzureのVMにGolangとMySQLでバックエンドサービスを作る その1

Last updated at Posted at 2016-12-05

Microsoft AzureのVMにMySQLを入れて、GolangでWebAPIサーバを作りました。
大量リクエストは来ない、データベースの容量も確実に少ない、という要件だったので、一番小さいVMを使いました。

サーバ構成

  • ホストマシン:Microsoft Azure
  • OS:Ubuntu 16.04
  • データベース:MySQL 5.7.13
  • 開発言語:Golang 1.6.2

サーバ構築手順

Azureの画面で、Virtual Machines > 追加 > 検索ボックスに[ubuntu]と入力。
Ubuntu Server 16.04 LTS を選択。
スクリーンショット 2016-11-29 14.40.51.png

ディスクはHDDを選択、認証はパスワードにしました。
スクリーンショット 2016-11-29 14.45.42.png

マシンサイズは「すべて表示」をクリックして、一番小さな「A0 Basic」を選択。
スクリーンショット 2016-11-29 14.48.25.png

VM作った後からでも追加できますが、ネットワークセキュリティグループにFTPとHTTPを許可する設定を追加します。
この設定を行う手順がちょくちょく変わるので、古い記事を参考にしていると迷子になります。
スクリーンショット 2016-11-29 14.58.00.png

また、IPが動的の場合は、DNSラベル名を設定すると便利です。
(SSHするときは常にDNS名で接続できる。)

VMが起動したら、SSHで接続確認。

ssh -l [ユーザ名] [DNS名(例 xxxxxx.japaneast.cloudapp.azure.com)]

実行するとパスワードを求められるので、入力してEnter。

MySQLのインストール

以下のコマンドでインストール。

sudo apt-get install mysql-server

文字コードをutf-8にそろえるため、設定ファイルを編集。

sudo vi /etc/mysql/my.cnf

(実はvi使えないのでnanoでやった。)

sudo nano /etc/mysql/my.cnf

で、以下を追記する。

[mysqld]
character-set-server=utf8
skip-character-set-client-handshake
default-storage-engine=INNODB


[mysqldump]
default-character-set=utf8


[mysql]
default-character-set=utf8

再起動。

sudo /etc/init.d/mysql restart

接続して、UTF-8になっているか確認。

mysql -u root -p
status;

以降は、Sequel ProなどのツールでSSH接続して利用できます。
スクリーンショット 2016-11-29 15.24.24.png

vsftpdのインストール

FTP用のユーザを作成。

sudo adduser ftpuser

インストール。

sudo apt-get install -y vsftpd

設定ファイルを修正します。

sudo nano /etc/vsftpd.conf

以下の通りに修正。

コメント解除( 書き込み許可 )
write_enable=YES


コメント解除( アスキーモード転送許可 )
ascii_upload_enable=YES
ascii_download_enable=YES


コメント解除( chroot 有効 )
chroot_local_user=YES


コメント解除
chroot_list_enable=YES


コメント解除
chroot_list_file=/etc/vsftpd.chroot_list


コメント解除( ディレクトリごと一括での転送有効 )
ls_recurse_enable=YES

chroot_list を編集(新規作成)して ftpuser を追加する。

sudo nano /etc/vsftpd.chroot_list

以下を追加します。

ftpuser

再起動。

sudo service vsftpd restart

以降は、Cyberduckなどのツールで接続して利用できます。
※SFTPで接続します。
スクリーンショット 2016-11-30 13.18.08.png

Golangでの開発〜ビルド〜実行

開発は Visual Studio Code で行いました。
開発環境の構築方法はこちらの記事を参考にしました。

クロスコンパイルを可能にするため、以下のコマンドでインストール

brew install go --cross-compile-all

実際に書いたソースなどの説明はその2で行います。

実装が終わったらコンパイルします。
Ubuntu環境で実行するためのビルドコマンドは以下。

GOOS=linux GOARCH=amd64 go build main.go

ビルドしてできた実行ファイルをFTPでサーバにアップします。
(ここでは例として/usr/local/myproject/bin/にアップします。)

アップしたらSSHで接続して実行権限をつけます。

cd /usr/local/myproject/bin/
sudo chmod 755 main

実行。

sudo ./main &

停止。
(裏で起動しているため、プロセスをkillする。)

ps aux | grep main
sudo kill -KILL [ps番号]

サーバの再起動時に自動で実行するには、以下の手順を実施します。

rc.localファイルを編集。

sudo nano /etc/rc.local

ファイルを開いたら、exit 0 の前の行に以下を追加。

# By default ……
cd /usr/local/myproject/bin		←この行を追加
sudo ./main &					←この行を追加
exit 0

以上で、サーバの環境については終了です。
Golangのソースの説明のため、その2に続きます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?