Fortran 入門した
仕事ではCentOSを使うことが多いけど、学習環境はDebian8で用意した。 処理系はGNU Fortran。
# apt-get install -y gfortran
Vimの設定
% mkdir -p ~/.vim/ftplugin % cat ~/.vim/ftplugin/f90.vim "タブを半角スペースに置き換える setl expandtab "タブのインデント幅を4にする setl tabstop=4 "自動インデントのインデント幅を4にする setl shiftwidth=4 "キーボードのタブを押したときのスペースの数 "0に設定するとtabstopで設定した値と揃える setl softtabstop=0 "保存時に行末のスペースを除去 autocmd BufWritePre * :%s/\s\+$//ge % cat ~/.vimrc syntax on filetype plugin indent on
% cat <<EOF > hello.f90 > program hello > print *, "Hello, world." > end program hello > EOF % gfortran hello.f90 % ./a.out Hello, world.
気の向く限りしばらく勉強してみます。
Raspberry Pi2にGo1.6をインストール
Raspberry Pi2にGo1.6を入れようと思ったところ、ARM向けバイナリがgolang.orgでは提供されていなかったのでビルド手順をメモ。
まずは普通にソースをビルドしようとする。
$ wget https://storage.googleapis.com/golang/go1.6.src.tar.gz $ tar zxvf go1.6.src.tar.gz $ cd go/src $ ./all.bash ##### Building Go bootstrap tool. cmd/dist ERROR: Cannot find /home/pi/go1.4/bin/go. Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.
Go1.5からはセルフホスティングされているので、Go1.6のビルドにGo1.4以上が必要。しかしaptにはGo1.3.3しか入ってない。
$ sudo apt-cache show golang Package: golang Version: 2:1.3.3-1 (以下略) ...
なので、一度Go1.4をビルドしてインストールし、更にそれを使ってGo1.6をインストールすることになる(二度手間...)。
ここではGo1.4系列の最新版である1.4.3を使う。
$ sudo apt-get install -y golang $ wget https://storage.googleapis.com/golang/go1.4.3.src.tar.gz $ mkdir ~/go1.4 $ tar -C ~/go1.4 -zxvf go1.4.3.src.tar.gz $ mv ~/go1.4/go/* ~/go1.4/ $ rmdir ~/go1.4/go/ $ cd ~/go1.4/src $ ./all.bash
混乱を避けるためaptでインストールしたGo1.3を除去する。
$ sudo apt-get purge golang $ sudo apt-get autoremove
念のためバージョンを確認する。
$ echo 'export PATH="$PATH:$HOME/go1.4"' >> ~/.bashrc $ go version
Go1.6のインストール
$ ~/go/src # go1.6 $ echo 'export GOROOT_BOOTSTRAP="$HOME/go1.4"' >> ~/.bashrc $ echo 'export PATH="$PATH:$GOROOT_BOOTSTRAP"' >> ~/.bashrc
all.bashを覗くと"all.bash must be run from $GOROOT/src"と書いてあるので、それに従う。
$ echo 'export GOROOT="$HOME/go"' >> ~/.bashrc $ echo 'export PATH="$PATH:$GOROOT"' >> ~/.bashrc $ cd $GOROOT/src $ ./all.bash
以上で出来たはず。 (夜遅くまでかかってしまったので誤植等があれば後で直す)
ubuntu15.10にnginx + Perl環境を構築(plenv+cpanm+carton)
目的
環境
- VirtualBox 5.0.8 r103449
- ホストOS:Windows 7 Professional(64bit)
- ゲストOS:ubuntu 15.10 server(amd64)
前準備
VirtualBoxへのインストール前に、[設定]→[ネットワーク]の項目で
- アダプタ1:NAT
- アダプタ2:ホストオンリーアダプター
に設定しています。
インストール時、OpenSSHだけインストールにチェックを入れています。
インストール後、systemd-networkdで
- アダプタ1(enp0s3)
- アダプタ2(enp0s8)
にDHCPでアドレスを割り当てます。
$ sudo systemctl enable systemd-resolved.service $ sudo mv /etc/resolv.conf{,.orig} $ sudo mkdir /run/systemd/resolve $ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf $ sudo touch /etc/systemd/network/dhcp.network
$ sudo vi /etc/systemd/network/dhcp.network [Match] Name=enp* [Network] DHCP=yes
(再起動したらsudo systemctl restart systemd-networkdをしないといけない、要調査)
/* 追記
再起動後にもenp0s8にDHCPでIPを割り当てるためには、
dhclientを止めて、systemd-resolvedとsystemd-networkdを有効にします。
$ sudo systemctl status | grep -2 dhc
ifup@enp0s3.serviceというサービスが見つかるので無効にします。
$ sudo systemctl disable ifup@enp0s3.service $ sudo systemctl enable systemd-resolved.service $ sudo systemctl enable systemd-networkd.service $ sudo reboot
以上で再起動後、2つのネットワークアダプタにIPが割り振られます。
追記ここまで*/
Windowsからsshクライアントを使ってログイン(Cygwin)
(enp0s8に192.168.56.101が割り当てられているものとします)
$ ssh username@192.168.56.101
- gitのセットアップ
ubuntu 15.10 serverではgitが最初から入っていたので、
git configでユーザー名などを登録します。
(もし無ければapt-get install gitをしてください)
$ git config --global user.name "YOURNAME" $ git config --global user.email youraddress@example.com //以下必要に応じて $ git config --global url."https://".insteadOf "git://" $ git config --global http.proxy "http://proxy.example.com:8080/" $ git config --global https.proxy "http://proxy.example.com:8080/"
- plenvのインストール
https://github.com/tokuhirom/plenv#installation
plenvのGithubページに書いてあるインストール方法に従います。
plenv installするときに、makeやらgccやらが必要になるので、build-essentialで一気に入れてしまいます。
$ sudo apt-get install -y build-essential
注意書きにもありますが、ubuntuは~/.profileに記述するという点に注意しましょう。
$ git clone git://github.com/tokuhirom/plenv.git ~/.plenv $ echo 'export PATH="$HOME/.plenv/bin:$PATH"' >> ~/.profile $ echo 'eval "$(plenv init -)"' >> ~/.profile $ exec $SHELL -l $ git clone git://github.com/tokuhirom/Perl-Build.git ~/.plenv/plugins/perl-build/
ここでは5.20.2をインストールします。
$ plenv install 5.20.2 $ plenv global 5.20.2 $ plenv versions $ plenv rehash
- cpanmをインストール
$ curl -L https://cpanmin.us | perl - App::cpanminus $ plenv rehash
- cartonをインストールします。
CartonはRubyでいうBundlerに相当します。
$ cpanm --local-lib=~/perl5 local::lib $ cpanm Carton $ plenv rehash $ mkdir psgi && cd psgi $ echo "requires 'Task::Plack';" >> cpanfile $ carton install
ここで試しにhello.psgiを作成します。
$ vi hello.psgi #!/usr/bin/env perl use strict; use warnings; my $app = sub { my $env = shift; # アプリケーションの処理 return [200, ['Content-Type'=>'text/plain'], ["Hello World\n"] ]; };
$ carton exec plackup hello.psgi
ホスト側(Windows)のブラウザでhttp://192.168.56.101:5000にアクセスして、Hello worldが返ってくることを確認します。Ctrl-Cで終了します。
- nginxをリバースプロキシにする
普通にaptで入れます
$ sudo apt-get install -y nginx-full $ sudo cp -p /etc/nginx/nginx.conf{,.orig} $ sudo pkill nginx
nginx.confは
http://mojolicio.us/perldoc/Mojolicious/Guides/Cookbook#Nginx
などを参考に記述します。
$ sudo vi /etc/nginx/nginx.conf http { ... upstream myapp { server 127.0.0.1:5000; } server { listen 8080; server_name localhost; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ... }
nginxを再度起動し、PSGIサーバ(ここではPlack)を起動します
$ sudo nginx $ carton exec plackup hello.psgi
再びホスト側ブラウザから、http://192.168.56.101:8080/ にアクセスし、Hello worldが表示されたら完了です。
- 補足
一通りの流れを忘れないうちに書きましたが、記事を書きながら動作確認を行っていたので、不正確な点があるかもしれません。
(というか全体的に理解が足りてないので不正確な点が多々ある気がします...)
- 参考
ゆきろぐ: systemd-networkdでのネットワーク設定
PSGI/Plack - Perl Superglue for Web Frameworks and Web Servers
Arch Linuxのインストール
作業したことが溜まってきたのでメモ。
1)インストールメディアの準備 ・ISOイメージのダウンロード
Arch Linuxのダウンロードページから適当に。
https://www.archlinux.org/download/
・USBメモリに焼く
WindowsならWin32DiskImagerとかUSBWriterとかを使う。 拡張子をisoからimgに変更しておく。
dd if=/home/user/archlinux-2015.07.01-dual.iso of=/dev/sdb bs=512k
とか。/dev/sdbはUSBメモリを認識してる箇所
参考
・インストール
細かい箇所が変わってるかもしれないので上記Wikiを見て確認する。
・ディスクフォーマット
partedコマンドを使う。
gptでフォーマットする。
パーティションは/とswapのみ。
set 1 boot onなどとすると、/をブートパーティションに指定できる
# parted /dev/sda mklabel gpt p mkpart (/とswap用領域を作る) set 1 boot on (/パーティションの方) exit # mkfs.ext4 /dev/sda1 # mkswap /dev/sda2 # mount /dev/sda1 /mnt
・ネットワークへ接続する。
無線環境しかなかった。
# wifi-menu (SSIDを確認して選択し、パスワードを入力) # ip addr
・pacmanの設定
/etc/pacman.d/mirrorlistを編集する。
jpミラーがtsukubaしかない(?)ようなので、コピーしてミラーURLの一番上に持ってくる。優先順位も2.2を0.2に書き換える。
/etc/pacman.confを編集する。
# cat /etc/pacman.d/mirrorlist | grep tsukuba >> /etc/pacman.conf # vi /etc/pacman.conf (追記したミラーURLをcoreとextraの項目に追加する)
・インストール
Arch Wikiのコマンドに従う。
chrootしたあとにpacmanでdialog(wifi-menuに必要)とgrubをインストールする
# pacman -S dialog grub
・ブートローダー
boot loaderは以下のようにインストールする
# grub-install --target=i386-pc --recheck --force --debug /dev/sda # grub-mkconfig -o /boot/grub/grub.cfg
--forceは要らないはずなのだけど、付けないと失敗した
exitでchrootを抜けたあと、umount /mntしてreboot (poweroffにしてUSBメモリを抜く)
リブートしてログインしたら、wifi-menuでネットワークへ接続する
以上
Debian7にDjango1.8をインストール
Debian8が今週末に出ますが、Debian7でDjangoインストールする手順をまとめました。
メモなので分からないところはググってください。
環境
# cat /etc/debian_version 7.8
Python3インストール
# apt-get install -y python3 # python3 -V Python 3.2.3
pipインストール
# wget https://bootstrap.pypa.io/get-pip.py # python3 get-pip.py
virtualenvインストール
# pip install virtualenv
一般ユーザへ切り替え
# su - user $
Django作業用ディレクトリの作成
$ mkdir django_app $ cd django_app
virtualenv 仮想環境のアクティベート
(こうすることで、Python等のライブラリの混在を防げます)
$ virtualenv env1 $ cd env1 $ source bin/activate (env1)$
Django1.8のインストール ($ pip search django もしくはPyPIでバージョンを確認)
(env1)$ pip install django==1.8
virtualenv 仮想環境を抜ける場合は
(env1)$ deactivate $
参考:
VirtualBoxにCentOS6をインストール
Windows上のVirtualBoxにCentOSをインストールします。
https://www.virtualbox.org/からVirtualBoxをインストールしたら、[新規]ボタンを押して仮想マシンの作成をします。 名前などは適当でよいですが、CentOS6の場合はメモリを512MB以上割り当てないとインストールが出来なかったと思います。(仮想ディスクは最低でも2GBぐらい必要だったかも。私は16GB割り当てました)
仮想マシンにOSをインストールする前に、[設定]ボタンを押します。 [システム]からフロッピーの優先順位を3番目に下げ、チェックを外します。 (CD/DVD,HDD,フロッピーの順になる)
[ネットワーク]を選び、[アダプタ2]のタブで、[ネットワークアダプターを有効化]にチェックを入れます。そして、[割り当て]をホストオンリーアダプターにします。
(NATだけですと、ホストOS(Windows)とネットワークアダプターを共用するので、VirtualBox内にサーバーを建ててもホストOSから見ることが出来ません。(ポートフォワーディングをすれば見れるかも?[未検証]))
OKを押して設定を保存。ゲストOS(CentOS)をインストール。
インストールが終わったら、ゲストOSのネットワークを有効にします。 ONBOOTをnoからyesにする。 eth0とeth1両方で行いましょう。
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=YES
保存したらifconfigでIPアドレスを確かめましょう。 また、openssh-serverがインストールされているか念のため調べましょう。
# ps aux | grep sshd
なければ
# yum update -y && yum install openssh-server -y
次に、SSHクライアント(PuTTY)を使って、eth1からログインします。
またzipファイルを使いました。
PuTTYからログイン出来たらひとまず完了です。 あとはssh-keygenコマンドで公開鍵ペアをつくり、/etc/ssh/sshd_configからrootパスワード認証を無効にしましょう。
WinSCPでISOイメージをダウンロードする
Windows上の仮想環境(VirtualBox)にLinux環境を整える前準備として、LinuxのISOイメージをダウンロードします。
最近のブラウザは優秀なので、普通にブラウザを使ってISOイメージをダウンロードしてもよいのですが、Linuxへファイルをアップロードするときにも使えるのでFTPクライアント(WinSCP)を使います。 (少しぐらいなら通信が途切れても途中からダウンロードを再開してくれるから、というのも理由です)
インストーラーでも良いのですが、私はzipファイル版(Portable executables)を選びました。 zipファイルを展開したらWinSCP.exeを起動します。
こんな感じで接続先サーバーの設定をします。(プロキシ環境下の場合は[Advanced]から設定をしてください)
設定を保存したらLoginボタンで接続をします。
欲しいISOイメージと、対応するチェックサムのファイルを入手します。
ISOイメージをダウンロードしたら、ハッシュ値計算ソフトでISOファイルが壊れていないか確認します。
「Calculate File Hash」ファイルのハッシュ値を計算するソフト
壊れていないことを確認出来たら完了です。