麦星 - arcturus technologies- 

テクノロジー関連情報と日常的な何かを発信しています

Windows Subsystem for Linux(WSL バージョン2)をインストールと設定

久々のブロ記事が今更のWSL インストールネタになってしもた…

とは言え、備忘録的な要素もあり記載させて頂きます。

  1. Windows Subsystem for Linux(WSL バージョン2)をインストール

 ・前提
 ・Windows 10 Pro

・管理者モードでPowerShellを起動し、下記のコマンドを実行してWSLを有効化。

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

・WSLのデフォルトバージョンをWSL2にする

    wsl --set-default-version 2

 ・何やら以下のエラーが…
 WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください  WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください

 ・エラー原因     2020/3/13以降、wsl2の実行には、アップデートファイルのダウンロード&インストールが必要になりました。

 ・回避
  警告文の通り、https://aka.ms/wsl2kernelにアクセスし、wsl_update_x64.msiをダウンロードします。

  Download the Linux kernel update package
Please download the latest WSL2 Linux kernel update package for x64 machines.

 ・Linuxディストリビューションのインストール   Microsoft Storeの場合は、アプリを起動して「WSL」を検索します。

 ・確認   コマンドラインで wsl -l -vを実行すると、インストール&初期化済みのLinuxディストリビューションのWSLバージョンを確認できます。

    PS> wsl -l -v
    NAME      STATE           VERSION
    * Ubuntu    Stopped         2
    Debian    Stopped         1

 ・rootユーザ スイッチするコマンドは以下

    $ sudo su -
  1. 各種パッケージインストール

  その前にアップデート

    sudo apt update

 vim

    $ sudo apt install -y vim

 curl

    $ sudo apt install -y curl

 apache

    $ sudo apt install -y apache2

 サービス起動してるか確認

    $ service apache2 status

起動してないらしいので起動する。

    $ sudo service apache2 start

php

    $ sudo add-apt-repository ppa:ondrej/php
    $ sudo apt update
    $ sudo apt install php7.2 php7.2-common php7.2-cli php7.2-fpm php7.2-mysql php7.2-dev php7.2-mbstring php7.2-zip php7.2-sqlite php7.2-curl php7.2-gd php7.2-xml
    $ php -v

ApacheのPHP7.2モジュールをインストールして、Apacheを再起動。

    $ sudo apt install libapache2-mod-php7.4
    $ sudo service apache2 restart

phpinfo設置

    $ sudo su
    $ echo '<?php echo phpinfo();' > /var/www/html/phpinfo.php
    $ exit

確認 http://localhost/phpinfo.php

  1. Composerをインストール

     - やること
         /usr/local/bin に composer という名前でインストールして、
         グローバルで composer コマンドを使えるようにする。
    
     - 公式サイト
         https://getcomposer.org/download/
    
    
     - インストール
         php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    
         php -r "if (hash_file('sha384', 'composer-setup.php') === '795f976fe0ebd8b75f26a6dd68f78fd3453ce79f32ecb33e7fd087d39bfeb978342fb73ac986cd4f54edd0dc902601dc') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    
         sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
    
         composer --version
    

4.MariaDBをインストール - インストール sudo apt install mariadb-server mysql --version

    - 起動する
        ステータス確認
            service mysql status

        サービス起動する。
            sudo service mysql start


    - 初期設定

        sudo mysql_secure_installation




        試しにrootユーザーで入ってみる。

            sudo mysql -u root -p

            入れたら
                MariaDB [(none)]>quit; 

            quit; で抜ける。




● MariaDBに開発用ユーザー作成

    - SQL実行
    CREATE USER username@localhost;
    GRANT ALL PRIVILEGES ON *.* TO username@localhost IDENTIFIED BY 'passwd' WITH GRANT OPTION;

    - 確認SQL
        SELECT user, host, password FROM mysql.user;


    - ログイン
        sudo mysql -u username-ppasswd

5.WindowsからWSLへアクセス エクスプローラから\wsl$という名前でアクセスすることができます。

Aliyun Linux でLive 配信してみる。

ども、うし@tangniuwanです。
 

昨今の新コロ事情で、需要あるのかなー?と思い、「LIVE配信サーバ」でググった所、
cloudpack.mediaさんのエンジニアブログに「簡単にできる!Live配信サーバ構築」という記事を見つけたので
Aliyun Linux でLive 配信サーバを構築してみました。

 
 

はじめに

 
基本的に、記事「簡単にできる!Live配信サーバ構築」の記載の通りに進めると約15分程度で実際の配信まで完了します。本当に簡単にできます。
そして、分かりやすく記載されているので、ほとんど迷う箇所はないと思います。
通常のライブ配信サーバ構築は、上記で完結するのですが、更にスマホのカメラで撮影した絵を配信して見たかったので、試しに実装してみました。

事前準備

  1. ECSインスタンスSSHキーを準備

  2. VPCやセキュリティグループは既存の設定を使用します

 
 

環境

項目
PC OS Windows10 64bit
PC ブラウザ Google Chrome(最新版)
スマホOS Android (ver.10)
スマホブラウザ Google Chrome(最新版)

やったこと

  1. ライブ配信用「Aliyun Linux」のインスタンス準備

  2. SSHCLI操作(NginxのDL + インストール + 設定)

  3. 動画Playerの準備

  4. ライブ配信ツール「OBS」の操作 (OBSのDL + インストール + 設定)

  5. スマホへアプリ「IP Webcom」をインストール
     
     

1.ライブ配信用サーバ「Aliyun Linux」のインスタンス準備

● 以下のスペックで、ECSインスタンスを作成しました。

設定項目 設定値 備考
リージョン Japan (Tokyo)
インスタンスの仕様 ecs.t5-lc1m1.small 標準タイプ
CPU 1コア
メモリ 1GB
OS Aliyun Linux 2.1903 64-bit
I/O 最適化 True
帯域幅 5 Mbps
システムディスク Ultra クラウドディスク 20 GiB

 
 
● セキュリティグループのイントラネット入力で、以下のポートを許可しました。

設定項目 設定値
SSH 22
HTTP 80
RTMP 1935

 
 

2.SSHCLI操作(Nginxの設定)

記事「簡単にできる!Live配信サーバ構築」に記載がある通りに コマンドを進めると
簡単に構築出来ます。

※今回はHLSの配信のみ。としたかったので、本家の記事とNginxの設定などが若干異なりまる。

 
以下、転載になります。

// 関連パッケージ(Nginx+nginx-rtmp-module)のインストール  
# yum -y install git gcc pcre-devel openssl-devel
  
// 作業ディレクトリの作成
# mkdir works  
  
// [Nginxダウンロード](https://nginx.org/en/download.html) & Nginx展開  
# cd ~/works/
# wget https://nginx.org/download/nginx-1.14.0.tar.gz
# tar zxvf nginx-1.14.0.tar.gz

// nginx-rtmp-moduleのインストール  
# cd nginx-1.14.0/  
# git clone https://github.com/arut/nginx-rtmp-module.git  
# ./configure --add-module=nginx-rtmp-module/  
# make  
# make install  
  
// NginxのConfig設定
# vi /usr/local/nginx/conf/nginx.conf  

nginx.conf

worker_processes auto;
error_log  logs/error.log error;
 
events {
        worker_connections  1024;
}
 
rtmp_auto_push on;
 
rtmp {
    server {
        listen 1935;
        access_log logs/rtmp_access.log;
        chunk_size 4096;
        timeout 10s;
 
        application live {
            live on;
 
            # HLSの記述欄
            hls on;
            hls_path /var/www/html/hls;
            hls_fragment 10s;
         }
    }
}
 
http {
    server {
        listen  80;
        include mime.types;
        default_type    application/octet-stream;
        server_name localhost;
        add_header  Access-Control-Allow-Origin *;
 
        location /hls {
            types {
                 application/vnd.apple.mpegurl m3u8;
            }
            root /var/www/html/;
        }
    }
}

Configの確認

# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

サービス起動のスクリプトを作成

# vi /usr/lib/systemd/system/live_nginx.service
 
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

サービス起動 & 自動起動

// 起動
# systemctl start live_nginx.service

// 自動起動
# systemctl enable live_nginx.service
 
Created symlink from /etc/systemd/system/multi-user.target.wants/live_nginx.service to /usr/lib/systemd/system/live_nginx.service.

 

Nginxが起動しているとブラウザで、以下の様な画面が表示されます。
 

f:id:tangniu:20200326230301p:plain

3.動画Playerの準備

HLSのPlayerとなるHTML生成  

※「obs_hls.m3u8」の部分は、この後のOBSの設定にも使用します。  

// ファイル作成
# vi /usr/local/nginx/html/hls.html

// ファイル内容
<!DOCTYPE html>
<html> 
<head>
  <meta charset="utf-8">
  <title>MediaElement</title>
  <!-- MediaElement style -->
  <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/mediaelement/4.2.9/mediaelementplayer.css" />
</head> 
<body>
  <!-- MediaElement -->
  <script src="//cdnjs.cloudflare.com/ajax/libs/mediaelement/4.2.9/mediaelement-and-player.js"></script> 
  <video id="player" width="640" height="360">
</body>
<script type="text/javascript">
      var player = new MediaElementPlayer('player', {
        success: function(mediaElement, originalNode) {
          console.log("Player initialised");
        }
      });
      player.setSrc("hls/obs_hls.m3u8");
</script>
</html>

4.ライブ配信ツール「OBS」の操作

配信は、「OBS Studio」(Open Broadcaster Software)を使うので以下からDLし、インストールします。

obsproject.com

次に、OBSの配信設定をするので、[ ファイル ]→[ 設定 ]を開き、設定画面の[ 配信 ]を選択します。

f:id:tangniu:20200326233002p:plain

表示された画面で、以下を設定します。

項目 備考
サービス カスタム
サーバ rtmp://{hostname}:{port}/live/ 構築した環境に合わせて下さい
ストリームキー obs_hls 先程の「obs_hls.m3u8」のファイル名を使用します

f:id:tangniu:20200326233028p:plain

次に、以下の様に配信するソースを選択し、「配信開始」ボタン押下により、配信します。

f:id:tangniu:20200326233829p:plain

選択項目 ざっくり出来ること
映像キャプチャデバイス PCなどのWEBカメラの映像をLIVE配信できます
メディアソース MP4ファイルなどを配信できます
ブラウザ 設定画面にURLを指定しブラウザで表示している内容を配信できます

 

5.Androidへアプリ「IP Webcom」をインストール

Google Play から「IP Webcom」をDLし、インストールします。

・次にPCへ、IP Webcomアダプターをインストールします。

※以下ページの、画面下部にある、「開発元」のウェブサイトにアクセスリンクからも
 アダプターのDLページへ遷移できます。

play.google.com

以下は、「IP Webcom」の設定画面です。
設定画面のURLは、Androidアプリで動画撮影を開始すると画面に表示されます。
f:id:tangniu:20200327002116p:plain

最後に「IP Webcom」で撮影した絵を、OBS経由で配信設定すれば完了!
 

で、実際にライブ配信してみると、30~50sのディレイがある。。(うーん。スペック上げるかな。)  

AliEaters(AlibabaCloud Developers Meetup)in 仙台#3

ども、深夜のうし@tangniuwanです。

AliEaters in 仙台#3で発表させて頂きましたので、そのレポートです。

※AliEaters = AlibabaCloud Developers Meetup
(Alibaba Cloudの魅力や活用法をみんなで共有するための勉強会コミュニティです。)

www.alieaters.com

f:id:tangniu:20191116145740j:plain

目次

登壇したイベント

alieaters-sendai.connpass.com

登壇内容

昨今の自動化2.0と言うワードから、
アリババクラウドにも構成管理ツール(IaCツール)が有るよ。という事で
初心者さん向けに、Resource Orchestration Service(ROS)について発表させて頂きました。

スライドは下記です。

www.slideshare.net

全体的にどうだった?

んー表現が難しいですが、Interactive Round Table的な感じで
その場で質問し、その場で回答。セッションとセッション合間や、
休憩時間に質疑応答。と、シンプルな座学ではなく、一部、対話形式で進行しました。

ビアバッシュ的に、皆さんアルコールが入っていた。ってのも
理由かも知れませんが、皆さん気軽に会話しながらLTしてた感じです。

個人的には、こういう、緩い感じの好きです。

刺激を受けたものは?

  • コードを見ながらの発表
    • 内容はTerraformの設定やコンテナの操作について
    • 実際のデモ
  • 物凄く新鮮だった
  • コードなので超具体的だった。
    • 一番質問が多かった
  • ブログがスライド。ってのはよく見るが、コードがスライドなのは初めてで新鮮だった

学んだことは?

会場説明の際に

  • 避難経路を説明すること
  • 写真撮影について説明をすること
  • ハッシュタグの説明をすること

懇親会は?

技術的なお話が面白かった

  • AIの分野で、気付かないうちに中国がアメリカを追い越していた
  • 日本はIT後進国とは以前から聞いていたが、突きつけられた感じだった。
  • 個人的には東北を盛り上げたい。

最後に

  • オーガナイザー会とかないかな?
  • 特に地方のオーガナイザーの方と悩みを共有したい。