K.MIURA@OUC

The special secret of making dreams come true can be summarized in four C’s. They are Curiosity, Confidence, Courage, and Constancy. –Walt Disney

応用情報論I

[実施方法・教室]
  • 対面形式
  • 第1演習室(情報総合センター)
[時間]
  • 木曜日 3講目(12:50–14:20)
[講義内容と資料]
  • 資料の配布は終了しました。
Read more →

Docker上でRedmineを展開する

[基本環境]
  • Ubuntu 18.04
  • Docker 19.03.12
[参考サイト]
[注意]
[Dockerコンテナの展開(ホストOS上で実行)]
  1. docker pull ubuntu:18.04
  2. docker run -itd --privileged -p 80:80/tcp --name redmine ubuntu:18.04
  3. docker exec -it redmine /bin/bash
[コンテナ(redmine)内での手続き]
  1. adduser ubuntu
  2. apt-get update
  3. apt-get upgrade
  4. apt-get install sudo
  5. usermod -G sudo ubuntu
  6. su - ubuntu
  7. sudo apt-get install locales
  8. sudo locale-gen ja_JP.UTF-8
  9. locale -a
    • ja_JP.utf8の存在を確認
  10. sudo apt-get install build-essential zlib1g-dev libssl-dev libreadline-dev
  11. sudo apt-get install libyaml-dev libcurl4-openssl-dev libffi-dev
  12. sudo apt-get install postgresql libpq-dev
  13. sudo apt-get install apache2 apache2-dev
  14. sudo apt-get install imagemagick fonts-takao-pgothic
  15. sudo apt-get install subversion git vim
  16. curl -O https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.5.tar.gz
  17. tar xvf ruby-2.6.5.tar.gz
  18. cd ruby-2.6.5
  19. ./configure --disable-install-doc
  20. make
  21. sudo make install
  22. cd
  23. ruby -v
    • Rubyのバージョンを確認
  24. sudo service postgresql start
  25. sudo -u postgres createuser -P redmine
    • パスワードをredmineと仮定
  26. sudo -u postgres createdb -E UTF-8 -l ja_JP.UTF-8 -O redmine -T template0 redmine
  27. sudo mkdir /var/lib/redmine
  28. sudo chown www-data /var/lib/redmine
  29. sudo -u www-data svn co https://svn.redmine.org/redmine/branches/4.1-stable /var/lib/redmine
  30. cd
  31. vi database-yml.sh
  32. chmod 755 database-yml.sh
  33. sudo ./database-yml.sh
  34. more /var/lib/redmine/config/database.yml
    • ファイルの存在を確認
    • password:にpostgresqlのユーザredmineのパスワードを書く
  35. vi configuration-yml.sh
  36. chmod 755 configuration-yml.sh
  37. sudo ./configuration-yml.sh
  38. more /var/lib/redmine/config/configuration.yml
    • ファイルの存在を確認
  39. cd /var/lib/redmine/config/
  40. sudo chown www-data:www-data database.yml
  41. sudo chown www-data:www-data configuration.yml
  42. cd /var/lib/redmine/
  43. sudo -u www-data bundle install --without development test --path vendor/bundle
  44. sudo -u www-data bin/rake generate_secret_token
  45. sudo -u www-data RAILS_ENV=production bin/rake db:migrate
  46. sudo gem install passenger -N
  47. sudo passenger-install-apache2-module --auto --languages ruby
  48. cd
  49. vi redmine-conf.sh
  50. chmod 755 redmine-conf.sh
  51. sudo ./redmine-conf.sh
  52. more /etc/apache2/conf-available/redmine.conf
    • ファイルの存在を確認
    • 3行目(</Directory>)以降の内容がpassenger-install-apache2-module --snippetの出力結果であることを確認
  53. sudo a2enconf redmine
  54. apache2ctl configtest
  55. sudo service apache2 reload
  56. sudo vi /etc/apache2/sites-enabled/000-default.conf
    • DocumentRootの値を /var/lib/redmine/public に変更
  57. apache2ctl configtest
  58. sudo service apache2 reload
  59. sudo service apache2 start
  60. sudo vi /etc/init.d/redmine-start.sh
  61. sudo chmod 755 /etc/init.d/redmine-start.sh
  62. sudo vi /etc/init.d/redmine-stop.sh
  63. sudo chmod 755 /etc/init.d/redmine-stop.sh
  64. sudo service postgresql stop
  65. sudo service apache2 stop
  66. exit
  67. exit
[Dockerイメージの生成(ホストOS上で実行)]
  1. docker stop redmine
  2. docker commit redmine ubuntu1804:redmine
[DockerイメージからRedmineを展開(ホストOS上で実行)]
  1. docker run -itd --privileged -p 8080:80 --name sample ubuntu1804:redmine
  2. docker exec sample /etc/init.d/redmine-start.sh
[Redmineコンテナの停止]
  1. docker exec sample /etc/init.d/redmine-stop.sh
  2. docker stop sample
[Redmineコンテナの起動]
  1. docker start sample
  2. docker exec sample /etc/init.d/redmine-start.sh
[Redmineの起動を確認]
  1. 手元PCのウェブブラウザで http://RedmineのIPアドレス:8080/ に接続する
Read more →

お知らせ

2023年11月29日(水曜日)

  1. 担当講義-ゼミナールから、Google Cloudセミナーの資料がダウンロードできます。(※ 配信は終了しました。)

2022年2月2日(水曜日)

  1. 担当講義-ゼミナールの卒論用TeXテンプレートをアップデートしました。

2022年2月1日(火曜日)

  1. 担当講義-ゼミナールに、ゼミ室装備品(実験機器)の情報を追加しました。

2020年3月29日(日曜日)

  1. 本サイトは、Googleサイトで運用していた「MIURA@OUC」を引き継いでいます。
  2. 今後は、本サイトから講義資料(主にPDF)を発信します。
  3. これに伴いGoogleサイト上の「MIURA@OUC」を閉鎖します。
Read more →

nginxと連携してPythonを動かす

[基本環境]
  • Ubuntu 18.04
  • nginx 1.14
[注意]
  • PythonでCGIは…と思う人にはお勧めしません
[nginxとfcgiwrapのインストール]
  1. sudo apt update
  2. sudo atp upgrade
  3. sudo apt install python3 nginx-full fcgiwrap vim
  4. sudo vi /etc/nginx/fcgiwrap.conf
  5. cd /var/www
  6. sudo mkdir cgi-bin
  7. sudo chmod 755 cgi-bin
  8. sudo vi /etc/nginx/sites-availabel/default
    server{…}の中に、include fcgiwrap.conf; を追加する
  9. sudo service nginx restart
  10. sudo service fcgiwrap restart
  11. cd cgi-bin
  12. sudo vi test.py
  13. sudo chmod 755 test.py
[CGIの動作確認]
  1. http://IPアドレス/cgi-bin/test.py
Read more →

PythonでDockerを制御する

[基本環境]
  • Python 3.7.3
  • Docker 19.03.8
[注意]
  • Docker SDK for Pythonを基にしたDocker制御ではない
  • Subprocessを基にしたDocker制御である
  • Dockerのオプションを多様したいなら、結局、Subprocessに落ち着く
[Dockerコンテナ一覧の取得]
  • Dockerコマンドなら
    • docker ps -a
  • Pythonコードなら
    1. import subprocess
    2. comp = subprocess.run([‘docker’, ‘ps’, ‘-a’], encoding=‘utf-8’, stdout=subprocess.PIPE)
    3. print(comp)
[Dockerコンテナの起動]
  • Dockerコマンドなら
    • docker run -itd --priviledged -p 80:80/tcp --name websrv debian:stable
  • Pythonコードなら
    1. import subprocess
    2. comp = subprocess.run([‘docker’, ‘run’, ‘-itd’, ‘--priviledged’, ‘-p’, ‘80:80/tcp’, ‘--name’, ‘websrv’, ‘debian:stable’], encoding=‘utf-8’, stdout=subprocess.PIPE)
    3. print(comp)
[まとめ]
  • subprocess.runの第一引数のリストにコマンドとオプションを列挙することで、オプションが増えても気にせず実行できる
Read more →

Docker上でJupyterを展開する

[基本環境]
  • Debian 10.3.0 (amd64)
  • Docker 19.03.8
[参考サイト]
[注意]
  • Docker環境の構築や他のサイトを読んで、Docker環境を構築していること
  • 本記事は、Jupyter NotebookをWEBブラウザで確認するまでの手続きである
[Dockerコンテナの展開]
  1. docker pull debian:stable
  2. docker run -itd --privileged -p 8888:8888/tcp -p 8888:8888/udp --name jupyter debian:stable
  3. docker exec -it jupyter /bin/bash
[コンテナ(jupyter)内での手続き]
  1. apt update
  2. apt upgrade
  3. apt install git
  4. apt install curl
  5. apt install bzip2
  6. apt install vim
  7. git clone https://github.com/pyenv/pyenv.git ~/.pyenv
  8. echo ’export PYENV_ROOT="${HOME}/.pyenv"’ » ~/.bash_profile
  9. echo ’export PATH="${PYENV_ROOT}/bin:$PATH"’ » ~/.bash_profile
  10. echo ’export PATH="${PYENV_ROOT}/shims:$PATH"’ » ~/.bash_profile
  11. echo ’eval “$(pyenv init -)”’ » ~/.bash_profile
  12. source ~/.bash_profile
  13. pyenv install anaconda3-5.3.1
  14. echo ’export PATH="$PYENV_ROOT/versions/anaconda3-5.3.1/bin:$PATH"’ » ~/.bash_profile
  15. source ~/.bash_profile
  16. pyenv versions
    • anacondaのインストールを確認する
  17. pyenv global anaconda3-5.3.1
  18. ipython3
    • In [1]: from IPython.lib import passwd
    • In [2]: passwd()
      • Jupyter Notebookを開くときのパスワードを設定する
    • Out[2]: ‘sha1:xxxxxxxxx’ これをメモしておく
    • In[3]: quit()
  19. jupyter-notebook --generate-config
  20. vi ~/.jupyter/jupyter_notebook_config.py
    • 先頭(本当はどこでも良い)に以下の内容を追加する
      c.IPKernelApp.pylab = ‘inline’
      c.NotebookApp.ip = ‘*’
      c.NotebookApp.open_browser = False
      c.NotebookApp.port = 8888
      c.NotebookApp.password = u’sha1:xxxxxxxxx’ メモしたやつ
[Jupyter Notebookの起動]
  1. mkdir workspace ホームディレクトリで実行する
  2. cd workspace
  3. jupyter-notebook --allow-root
    • WEBブラウザで http://IPアドレス:8888/ にアクセスする
    • パスワードには上の passwd() で設定したものを記述する
    • 停止するときはControl + Zを押す
    • プロセスが生きていたらkillで強制終了する
[おまけ:コンテナ起動時にJupyter Notebookを一緒に起動する]
  • シェルスクリプトを仕込む (コンテナ内で実行する)
    1. vi /etc/rc.local
      • 以下の内容を記述する
        #!/bin/bash
        /etc/init.d/jupyter.sh
    2. chmod 755 /etc/rc.local
    3. vi /etc/init.d/jupyter.sh
      • 以下の内容を記述する
        #!/bin/bash
        . ~/.bash_profile
        cd /workspace
        sleep 3;jupyter-notebook --allow-root
    4. chmod 755 /etc/init.d/jupyter.sh
    5. exit コンテナ(jupyter)から一度出る
  • コンテナ(jupyter)を起動する
    1. docker restart jupyter
    2. docker exec jupyter /etc/rc.local
Read more →

nginxでBasic認証を有効にする

[基本環境]
  • Ubuntu 18.04
  • nginx 1.16
[apache2-utilsのインストール]
  1. sudo apt update
  2. sudo apt install apache2-utils
[.htpasswdの生成]
  1. cd /home/ユーザ名/
  2. mkdir web
    • webは任意のディレクトリ名で良い
  3. htpasswd -c /home/ユーザ名/web/.htpasswd user-id
    • user-idはBasic認証のユーザ名であり、任意のユーザ名で良い
[nginx.confの編集]
  1. cd /etc/nginx
  2. sudo vi nginx.conf
    • http{…}の中に、
      auth_basic “Your Auth Message”;
      auth_basic_user_file /home/ユーザ名/web/.htpasswd;
      を追加する
Read more →

Oracleクラウドを使う時の注意

[基本環境]
  • Oracleクラウド (VMインスタンス)
  • Ubuntu 18.04
[問題設定]
  • OSがUbuntuのVMインスタンスを使いWEBサイトを展開する
  • OSのFWで80/tcpを開放してもWEBサイトにアクセスできない
[対処方法]
  1. sudo vi /etc/iptables/rules.v4
    • -A INPUT -j ACCEPT を先頭に追加する
  2. reboot
    • 「Inputは常に受信する」になるが、OracleのSEが言うに、OCIのFW機能で防御するのが通常らしい
Read more →

nextcloudとNFSサーバを接続する

[基本環境]
  • Ubuntu 18.04
  • nextcloud 13.0.1
  • Oracleクラウド (NFSサーバ)
[参考サイト]
[NFSサーバのマウント]
  • 前提としてNFSサーバが構築されていること
    (本記事の場合はOracleクラウドのマネージドサービスで構築した)
  1. sudo mkdir -p /mnt/filesystem
    • filesystemは任意のディレクトリ名で良い
  2. sudo mount IPアドレス:/nfsdir /mnt/filesystem
    • IPアドレスはNFSサーバのアドレス
    • nfsdirはNFSサーバで公開されたディレクトリ名
[nextcloudからの接続]
  • コンソール上で実行する
    1. cd /mnt/filesystem
    2. sudo mkdir nextdir
      • nextdirは任意のディレクトリ名で良い
    3. sudo chmod -R 777 nextdir
    4. sudo chown -R user:group nextdir
      • userとgroupは利用中の環境に合わせて変更する
  • ブラウザ上で実行する
    1. 管理者でログインする
    2. 「+アプリ」->「External storage support」->「有効にする」
    3. 「設定」->「外部ストレージ」
      • フォルダ名: 任意の名前 (nextcloud上で表示される)
      • 外部ストレージ: ローカル
      • 設定: /mnt/filesystem/nextdir
Read more →

ストリーミングサーバを立てる

[基本環境]
  • Debian 10.3.0 (amd64)
[参考サイト]
[nginxとrtmpのインストール]
  1. sudo apt update
  2. sudo apt upgrade
  3. sudo add-apt-repository ppa:nginx/stable
    • レポジトリ追加の際の確認事項に対しては、[Enter]を押す
  4. sudo apt install nginx libnginx-mod-rtmp
[rtmpの有効化]
  1. cd /etc/nginx
  2. sudo vi nginx.conf
    • hogelive(5行目)を自由に変更する
  3. sudo service nginx restart
[受付用index.htmlの作成]
  1. cd /var/www/html
  2. sudo vi index.html
    • hogeliveをnginx.confと同じものにする
    • ipアドレスをストリーミングサーバのIPアドレスにする
    • hogekeyを自由に変更する
[配信システムの構築]
  • mp4動画を配信するだけなら、以下の作業は必要ない
  • /var/www/html以下にディレクトリを作成して、mp4動画を保存する
  1. sudo apt-get install ffmpeg
  2. sudo add-apt-repository ppa:obsproject/obs-studio
  3. sudo apt-get update
  4. sudo apt-get install obs-studio
  5. obs
    • 配信先: rtmp://IPアドレス:1935/hogelive
    • ストリームキー: hogekey
[視聴者の操作]
  1. WEBブラウザで http://IPアドレス/ にアクセスする
Read more →