Windows Subsystem for Linux(WSL バージョン2)をインストールと設定
久々のブロ記事が今更のWSL インストールネタになってしもた…
とは言え、備忘録的な要素もあり記載させて頂きます。
・前提
・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 -
- 各種パッケージインストール
その前にアップデート
sudo apt update
$ sudo apt install -y vim
$ sudo apt install -y curl
$ sudo apt install -y apache2
サービス起動してるか確認
$ service apache2 status
起動してないらしいので起動する。
$ sudo service apache2 start
$ 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
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
Aliyun Linux でLive 配信してみる。
ども、うし@tangniuwanです。
昨今の新コロ事情で、需要あるのかなー?と思い、「LIVE配信サーバ」でググった所、
cloudpack.mediaさんのエンジニアブログに「簡単にできる!Live配信サーバ構築」という記事を見つけたので
Aliyun Linux でLive 配信サーバを構築してみました。
はじめに
基本的に、記事「簡単にできる!Live配信サーバ構築」の記載の通りに進めると約15分程度で実際の配信まで完了します。本当に簡単にできます。
そして、分かりやすく記載されているので、ほとんど迷う箇所はないと思います。
通常のライブ配信サーバ構築は、上記で完結するのですが、更にスマホのカメラで撮影した絵を配信して見たかったので、試しに実装してみました。
事前準備
環境
項目 | 値 |
---|---|
PC OS | Windows10 64bit |
PC ブラウザ | Google Chrome(最新版) |
スマホOS | Android (ver.10) |
スマホブラウザ | Google Chrome(最新版) |
やったこと
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.SSHでCLI操作(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が起動しているとブラウザで、以下の様な画面が表示されます。
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し、インストールします。
次に、OBSの配信設定をするので、[ ファイル ]→[ 設定 ]を開き、設定画面の[ 配信 ]を選択します。
表示された画面で、以下を設定します。
項目 | 値 | 備考 |
---|---|---|
サービス | カスタム | |
サーバ | rtmp://{hostname}:{port}/live/ | 構築した環境に合わせて下さい |
ストリームキー | obs_hls | 先程の「obs_hls.m3u8」のファイル名を使用します |
次に、以下の様に配信するソースを選択し、「配信開始」ボタン押下により、配信します。
選択項目 | ざっくり出来ること |
---|---|
映像キャプチャデバイス | PCなどのWEBカメラの映像をLIVE配信できます |
メディアソース | MP4ファイルなどを配信できます |
ブラウザ | 設定画面にURLを指定しブラウザで表示している内容を配信できます |
5.Androidへアプリ「IP Webcom」をインストール
・Google Play から「IP Webcom」をDLし、インストールします。
・次にPCへ、IP Webcomのアダプターをインストールします。
※以下ページの、画面下部にある、「開発元」のウェブサイトにアクセスリンクからも
アダプターのDLページへ遷移できます。
以下は、「IP Webcom」の設定画面です。
設定画面のURLは、Androidアプリで動画撮影を開始すると画面に表示されます。
最後に「IP Webcom」で撮影した絵を、OBS経由で配信設定すれば完了!
で、実際にライブ配信してみると、30~50sのディレイがある。。(うーん。スペック上げるかな。)
AliEaters(AlibabaCloud Developers Meetup)in 仙台#3
ども、深夜のうし@tangniuwanです。
AliEaters in 仙台#3で発表させて頂きましたので、そのレポートです。
※AliEaters = AlibabaCloud Developers Meetup
(Alibaba Cloudの魅力や活用法をみんなで共有するための勉強会コミュニティです。)
目次
登壇したイベント
登壇内容
昨今の自動化2.0と言うワードから、
アリババクラウドにも構成管理ツール(IaCツール)が有るよ。という事で
初心者さん向けに、Resource Orchestration Service(ROS)について発表させて頂きました。
スライドは下記です。
www.slideshare.net
全体的にどうだった?
んー表現が難しいですが、Interactive Round Table的な感じで
その場で質問し、その場で回答。セッションとセッション合間や、
休憩時間に質疑応答。と、シンプルな座学ではなく、一部、対話形式で進行しました。
ビアバッシュ的に、皆さんアルコールが入っていた。ってのも
理由かも知れませんが、皆さん気軽に会話しながらLTしてた感じです。
個人的には、こういう、緩い感じの好きです。
刺激を受けたものは?
- コードを見ながらの発表
- 内容はTerraformの設定やコンテナの操作について
- 実際のデモ
- 物凄く新鮮だった
- コードなので超具体的だった。
- 一番質問が多かった
- ブログがスライド。ってのはよく見るが、コードがスライドなのは初めてで新鮮だった
学んだことは?
会場説明の際に
- 避難経路を説明すること
- 写真撮影について説明をすること
- ハッシュタグの説明をすること
懇親会は?
技術的なお話が面白かった
最後に
- オーガナイザー会とかないかな?
- 特に地方のオーガナイザーの方と悩みを共有したい。