2015年1月28日水曜日

CentOS6.4にRedmineを入れてみた

Redmine構築するたびにコマンド調べるの面倒だったので手順まとめてく
今回は仮想Linux(CentOS6.4)にRedmine2.3.0stableを入れる
Redmineとは進捗管理するためのWEBアプリツール
仕組みを図で書くとこんな感じ

手順としては下から順に作ってってHTTPより上はネットワークでつながってるならどのPCでもブラウザからみれる感じ
じゃー作ってこ!

環境準備

  1. OSの用意
  2. 仮想はvagrant使ってく。じゃないとCentOS6.4はなかなか用意できないw
    手順は「Linux仮想環境構築(ssh接続)」参照
  3. アップデート
  4. インストールしたてだと不便なので、yumをアップデート
        $ sudo yum update
    
  5. セキュリティを無効に
  6. SELinuxを切ってセキュリティをガバガバにしておいた方が作りやすいので切っておく
    vagrantで作成したら最初から切れてるっぽい?下のコマンドでDisabledがかえってきたら切れてる
    $ getenforce
    Disabled
    
      もし、Disabledでなければ
      vi /etc/sysconfig/selinux 
      
      # SELINUX=enforcing  # 先頭に#付けてコメントアウトする
      SELINUX=disabled       # 追記文:SELINUXを切る
      
      できたら再起動(これCent0S6.5でやったらbootでエラー出るえげつないバグでたw回避方法は覚えてたら書く)
      $ reboot
      

インストールしてく

  1. yum強化
  2. epel導入してyumをさらに強化する https://dl.fedoraproject.org/pub/epel/6/x86_64/
    上記URLから「epel-release- (略」で始まる新しそうなパッケージのリンクアドレスを取得。
    今回の場合は「epel-release-6-8.noarch.rpm」のリンクアドレス使用
    $ sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
    
  3. いろいろインストール
  4. # 開発ツール(Cコンパイラ等)のインストール
    $ sudo yum groupinstall "Development Tools"
    
    # RubyとPassengerのビルドに必要なヘッダファイルなどのインストール
    $ sudo yum -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel
    
    # MySQLとヘッダファイルのインストール
    $ sudo yum -y install mysql-server mysql-devel
    
    # Apacheとヘッダファイルのインストール
    $ sudo yum -y install httpd httpd-devel
    
    # ImageMagickとヘッダファイル・日本語フォントのインストール
    $ sudo yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts
    
  5. ルビーインストール
  6. RedmineはRubyで動いてるのでインストール
    RedmineはRuby2.1以降はだめなので、2.0.0らへんを入れる
    $ curl -O http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.tar.gz
    $ tar zxvf ruby-2.0.0-p451.tar.gz 
    $ cd ruby-2.0.0-p451
    $ ./configure --disable-install-doc
    $ make
    $ sudo make install
    
  7. Redmineが使用するGemを一括インストールするツールをインストール
  8. bundlerっていうツール。コレをインストールするにはrootユーザである必要があるので、rootユーザでコマンドを行う
    $ su -
    passwd:  # vagrantでつくるとrootユーザのパスもvagrant
    $ gem install bundler --no-rdoc --no-ri
    $ exit # rootユーザをログアウト
    

MySQLの設定

  1. 文字をutf8に設定
  2. RedmineではUTF-8でDBとやり取りするので、文字をUTF-8に設定する
    $ cat /etc/my.cnf 
    
    
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    character-set-server=utf8
    
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
    [mysql]
    default-character-set=utf8
    
    
    MySQLを起動させる
    $ sudo service mysqld start
    $ sudo chkconfig mysqld on
    
    文字がUTF-8になってるかチェック
    $ mysql -u root
    mysql> show variables like 'character_set%';  # 文字コードをみる
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | utf8                       |
    | character_set_connection | utf8                       |
    | character_set_database   | utf8                       |
    | character_set_filesystem | binary                     |
    | character_set_results    | utf8                       |
    | character_set_server     | utf8                       |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+
    8 rows in set (0.00 sec)
    # ↑こんな感じ担ってればOK
    mysql> exit  # MySQL終了
    
  3. MySQLの初期化
  4. $ mysql_secure_installation
    # あとは言われるがまま設定をしていけばOK
    
    ここで設定するパスワードは今後rootユーザでMySQLを起動する度に必要になるので忘れないように
  5. Redmineで使用するDB作成
  6. $ mysql -u root -p
    # パスワード聞かれるのでさっき設定したパスワード入力
    mysql> create database redmine_db default character set utf8;
    # redmine用のユーザ作成
    #  by ' 'のところは好きなパスワード設定。redmine側の設定するときに必要になる
    mysql> grant all on redmine_db.* to redmine_user@localhost identified by 'redmine';
    mysql> flush privileges;
    mysql> exit;
    

Redmineの設定

  1. Redmineをダウンロード
  2. 下のアドレスから欲しいRedmineバージョンを選択
    http://www.redmine.org/releases/
    .tar.gzの拡張子のリンクアドレスコピー。
    # 2.3.0を入れるので redmine-2.3.0.tar.gz のリンクアドレス
    $ curl -O http://www.redmine.org/releases/redmine-2.3.0.tar.gz
    # 解凍
    $ tar xvf redmine-2.3.0.tar.gz
    # アパッチで公開する所に解凍したファイルを移動
    $ sudo mv redmine-2.3.0 /var/lib/redmine
    
  3. RedmineのDB接続設定
  4. 接続設定はRedmineディレクトリのなかのconfigの中に「database.yml」作ってそこで設定する
    # redmineディレクトリに移動
    $ cd /var/lib/redmine
    $ cd config
    # DB接続設定のテンプレートが用意されているのでコピー
    $ cp database.yml.example database.yml
    $ vi database.yml
    
    database.ymlの編集箇所
    production:
      adapter: mysql2
      database: redmine_db
      host: localhost
      username: redmine_user
      password: "redmine"
      encoding: utf8
    
  5. Gemパッケージのインストール
  6. bundlerを使つかってRedmineで使用するGemをインストール
    ついでにRedmineの初期設定とデータベースのテーブル作成
    Redmineディレクトリで実行
    $ cd /var/lib/redmine
    $ bundle install --without development test
    $ bundle exec rake generate_secret_token
    $ RAILS_ENV=production bundle exec rake db:migrate
    

Apatcheとかwebサーバ設定

このへんからrootユーザでないとできないコマンドがあるのでユーザ切り替え
$ su - 
Password:  # vagrantで環境設定してたらパスワードは「vagrant」
$ id # 今のユーザを調べるコマンド↓この表示我出ればrootユーザ状態
uid=0(root) gid=0(root) groups=0(root) 
  1. Passengerインストール
  2. Redmineは「Ruby on Rails」というフレームワークで動いてるので、このフレームワークを動かすためのPassengerをインストール
    $ gem install passenger --no-rdoc --no-ri
    $ passenger-install-apache2-module  # apache用モジュールインストール
    
  3. Passengerの設定をApatheに追加
  4. /etc/httpd/conf.dにpassenger.confをつくる
    $ passenger-install-apache2-module --snippet  > /etc/httpd/conf.d/passenger.conf
    # ちょっと修正
    $ vi /etc/httpd/conf.d/passenger.conf 
    
    # のタグと字下げを消す。
    # その他は環境依存の設定値なのでいじらないように
    LoadModule passenger_module /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.58/buildout/apache2/mod_passenger.so
    PassengerRoot /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.58
    PassengerDefaultRuby /usr/local/bin/ruby
    
  5. Apathe再起動
  6. service httpd start
    chkconfig httpd on # Linux再起動時もApathe onにする
    
  7. WebサーバをRedmine専用機に編集
  8. Apacheを実行するユーザー・グループで読み書きできるよう、オーナー変更
    chown -R apache:apache /var/lib/redmine
    
    httpd.conf を編集
    $ vi /etc/httpd/conf/httpd.conf
    
    # DocumentRoot "/var/www/html"  # コレをコメントアウトして下の設定にする
    DocumentRoot "/var/lib/redmine/public"
    
    Apatcheの再起動
    /etc/init.d/httpd configtest
    /etc/init.d/httpd graceful
    
完成!!時間かかったーー



起動して確認してみる

ブラウザ開いて、URLにIPアドレスを入力
RedmineサーバのIPアドレスは構築環境で下のコマンドで確認できる
$ ifconfig
# この辺に書いてる「inet addr:」のところ↓
eth1      Link encap:Ethernet  HWaddr 08:00:27:39:EB:4B  
          inet addr:192.168.33.10  Bcast:192.168.33.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe39:eb4b/64 Scope:Link
でた!! Redmineの初期状態のログインIDは
IDadmin
PASSadmin

2015年1月20日火曜日

ラズパイでLEDをピカピカさせてみた

勉強会で今期はラズパイの電子工作やってこーってことになったのでガンバる!

手順


・回路図書いてみる
・電子部品のお買い物
・配線
・PythonでLEDの制御

完成図はこんな感じ→



回路図

中学、高校の理科でしかみたことないから四苦八苦(-_-|||)
ラズパイは3.3V,5.0Vの電圧を出力できる。この回路に順電圧2.0V、順電流20mAの赤色LEDを点灯させる。

この回路に20mAの電流を流したい。そのとき、備え付ける抵抗の値をいくつにすればいいのか計算する
直列回路なので、抵抗の電圧は$V=V_1+V_2$から \[ V= 3.3 - 2.0=1.3[V] \] オームの法則( $IR=E$ )から0.02Aにするための抵抗は \[ R =\frac{1.3}{0.02}=65[\Omega] \] なので、65Ω以上の抵抗があれば20mA以下の電流を作れる。今回は100Ωの抵抗を使っていく

お買い物リスト


機材個数画像
ブレッドボード
ハンダ付けとかせず、
簡単に配線ができるやつ
1個
オス-メスジャンパー線
ラズパイのGPIOと
ブレッドボードをつなぐ線
1個
オス-オスジャンパー線
ブレッドボード上で配線を
するための線
1個
LED
光るやつ
赤色
順電圧:2.0V
順電流:20mA 
1個
抵抗(100Ω)
回路に流れる電流を
制御するやつ
1個

配線



ちょっと工事中。。。

LED制御


次にコーディング
ラズビアンはPythonって言語が最初から使える
GPIO用のパッケージ?をインポートすれば簡単に実装できるっぽい
とりあえずディレクトリ作ってその中で作業
$ mkdir gpio
$ cd gpio
$ vi sample.py # pythonは拡張子py
1秒おきにLEDがピカピカするコード
#! usr/bin/env python
# coding: UTF-8

# インポート:GPIO、時間
import RPi.GPIO as GPIO
import time

# BCMタイプ:GPIOピン番号を指定する方法
GPIO.setmode(GPIO.BCM)

# 出力するポート
io_port = 4

# 4番を出力にする
GPIO.setup(io_port, GPIO.OUT)

## ループ処理:付けたり消したりする
for count in range(5):
    GPIO.output(io_port,GPIO.HIGH)
    time.sleep(1)
    GPIO.output(io_port,GPIO.LOW)
    time.sleep(1)

# IOをきれいにする
GPIO.cleanup()

これでおk
実行はルート権限がいる(コレに気づくのに時間かかった。。)
$ sudo python sample.py

ピカピカした!

まぁ最初だしこんなレベルでw

2015年1月19日月曜日

CentOSにPython導入する

CentOS6.4にプログラム言語Pythonを入れてく
実はPythonは最初から入ってるw
$ pythosn --version
Python 2.6.6

でもバージョンが新しくないので、最新バージョンを入れる方法書いてく
Pythonは2系、3系があるんだけど、両方とも同じやり方でバージョンあげれる
まずはここから欲しいバージョンを選択
https://www.python.org/ftp/python/

今回は下のバージョン入れる
2系→2.7.9
3系→3.4.2
それぞれの「tgz」拡張子のリンクアドレスをコピー
インストールする
# 3系で手順示す
$ sudo wget http://www.python.org/ftp/python/3.4.2/Python-3.4.2.tgz
$ sudo tar zxvf Python-3.4.2.tgz
$ cd Python-3.4.2
$ sudo ./configure
$ sudo make
$ sudo make install
$ export PATH=$PATH:/usr/local/bin/python3.4
バージョン確認
3系
$ python3 --version
Python 3.4.2

2系
$ python --version
Python 2.7.9

できた!

2015年1月17日土曜日

CentOSにPostgreSQL導入する

LAMPの続き
CentOS6.4にMySQLとは違う別のデータベースPostgreSQLを入れる
MySQLとPostgreSQLの違いは特にわかりません!

2015年1月12日月曜日

Raspberry Piの解像度を変更する方法

ラズパイをHDMIで画面出力したら文字小っさ!読めんw ってなったから解像度を変更する方法を探してみた

※事前にSSHとか別口からアクセスできるようにしといた方が良い。もし解像度設定間違えて文字が画面からはみ出すと、修正大変になるので。。

画面出力情報は「/boot/config.txt」
このconfigファイルを書き換える
sudo vim /boot/config.txt


hdmi_ignore_edid=0x5000080  # ← HDMIから送信されれるディスプレイ情報を無視する設定
# For more options and information see
# http://www.raspberrypi.org/documentation/configuration/config-txt.md
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=1 # ← 行頭の#を外す。CEAの場合1、DMTの場合2を設定
hdmi_mode=2  # ← 行頭の#を外す。「hdmi_modeの設定値表」参照

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800
hdmi_groupはどっちでもいけた。違いがイマイチわからんかったけど、とりあえず「1」にした。
hdmi_modeは「hdmi_modeの設定値表」参照

設定ができたら再起動させて確認!
sudo reboot

2015年1月11日日曜日

N元連立1次方程式の解法プログラム組んでみた

せっかく数式が使えるようになったしちょっと数学系書いてみる
N元連立1次方程式にはいろいろ解き方あるけど、アルゴリズムが一番楽なクラメルの公式

クラメルの公式とは

$A$を正方行列としたとき $Ax=b$で与えられる連立方程式の$i$番目の解は \[ x_i=\frac{det(A_i)}{det(A)} \]

2015年1月8日木曜日

ブログで数式を扱う方法

プログラムの技術系ブログだけど、物理シミュレーションプログラムとかもやっていくつもりなので数式を表示する方法を調べてみた。

◆MathJax

\[ \sum_{n=1}^\infty \frac{1}{n^2} = \frac{\pi^2}{6} \tag{1} \]
こんな感じに書ける

  1. プラグイン導入
  2. 
    
    
    
    これをマイブログ→レイアウト→HTMLを編集→<title>タグのうしろ位に挿入
    コレで準備OK
  3. 使い方
  4. Latex書くのと同じように書く
    プログラムで使いそうなのちょっと書く
    • ベクトル(足し算)
    • \[
        \vec{a} + \vec{a} = 2 \vec{a}
      \]
      
      \[ \vec{a} + \vec{a} = 2 \vec{a} \]
    • ベクトル(要素)
    • \[
        \vec{a} = (a_1, a_2, \cdots, a_n)
      \]
      
      \[ \vec{a} = (a_1, a_2, \cdots, a_n) \]
    • 行列1
    • \[
        A = \left(
          \begin{array}{ccc}
            a & b & c \\
            d & e & f \\
            g & h & i
          \end{array}
        \right)
      \]
      
      \[ A = \left( \begin{array}{ccc} a & b & c \\ d & e & f \\ g & h & i \end{array} \right) \]
    • 行列2
    • \[
        A = \left(
          \begin{array}{cccc}
            a_{11} & a_{12} & \ldots & a_{1n} \\
            a_{21} & a_{22} & \ldots & a_{2n} \\
            \vdots & \vdots & \ddots & \vdots \\
            a_{m1} & a_{m2} & \ldots & a_{mn}
          \end{array}
        \right)
      \]
      
      \[ A = \left( \begin{array}{cccc} a_{11} & a_{12} & \ldots & a_{1n} \\ a_{21} & a_{22} & \ldots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \ldots & a_{mn} \end{array} \right) \]
こんなかんじ!
あれ?なんかスマホだと表記が違うΣ( ̄ロ ̄lll)

2015年1月7日水曜日

ブログにソースコードを張る方法(SyntaxHighlighter)

以前gist使ったソースコードを張る方法を紹介した。
しかし実際に使用してみると、いちいち貼付け用コードを作成していくのはめんどくさくコード管理も大変だったので、直接記事にコードを書く方法を探してみた。
※この記事の方法では表示できなくなっていたので新しい記事参照

2015年1月4日日曜日

Linux仮想環境構築(LAMP)

Linux仮想環境構築(ssh接続)の続き
次にLAMPを作ってく
◆LAMPとは
LLinuxオペレーティング・システム
AApacheWebサーバ
MMySQLデータベース
PPHPプログラム言語
の意味。データベース連動型のWebアプリケーションを開発するのに人気の高いオープンソースソフト。定番ソフトの組み合わせ


◆前準備
  1. パッケージ管理を最新
  2. まず最初にパッケージ管理を最新にしておく
    $ sudo yum update
    
  3. おまじない
  4. プログラマあるある(笑)処理が早くなる。
    名前解決の問題なんだけど、今回は関係ないので説明は割愛
    $ sudo vi /etc/resolv.conf
    
    options single-request-reopen # ←コレ追加
    
    ; generated by /sbin/dhclient-script
    nameserver 10.0.2.3
    
  5. ファイヤーウォールを切る
  6. $sudo service iptables stop
    $sudo chkconfig iptables off  # 再起動しても切るようにする
    
  7. yumのカスタム
  8. CentOSはPHP、MySQLは公式では最新のバージョンを取得できない。なので別のパッケージでyumコマンドをカスタムする必要がある。→ epel、remiリポジトリを導入
    コマンド意味
    wget [リンクアドレス]リポジトリのダウンロードコマンド
    rpm -Uvh [パッケージ名]リポジトリのインストールコマンド
    wgetコマンドが使えるかチェック
    $ wget -v
    -bash: wget: command not found  # この表示がでたらwgetが使えない
    $ sudo yum install wget  # なのでwgetをインストールする
    

    • epel導入
    • https://dl.fedoraproject.org/pub/epel/6/x86_64/
      上記URLから「epel-release- (略」で始まる新しそうなパッケージのリンクアドレスを取得。今回の場合は「epel-release-6-8.noarch.rpm」のリンクアドレス
      $ wget https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
      $ sudo rpm -Uvh epel-release-6-8.noarch.rpm
      
      ほかのソフトのインストール時、いろんなパッケージと競合するとめんどいので必要な場合のみepelを有効にするように設定
      $ sudo vi /etc/yum.repos.d/epel.repo
      enabled=0 # 最初は1になってるけど、0に修正
      
    • remi導入
    • http://rpms.famillecollet.com/
      CentOS6なので、このリンクアドレス
      $wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
      $ sudo rpm -Uvh remi-release-6.rpm
      
      remiはデフォルトで「enabled=0」
      なので修正不要

◆Apacheの導入
まず、すでにインストールされているかチェック
$ yum list installed | grep httpd
何も表示されなければインストールされていない。下のコマンド実行
$ sudo yum install -y httpd
$ sudo service httpd start # 起動させる
$ sudo chkconfig httpd on # Linux起動時に自動起動するよう設定
◆PHPの導入
  1. PHP全部インストール
  2. 欲張ってこの辺全部入れる
    パッケージ意味
    phpPHPを使えるようにする
    php-develPHP 拡張を構築するのに必要なファイル
    php-mysqlMySQLを使うためのPHP 拡張ファイル
    php-mbstring多言語(日,中,韓,露,etc..)用PHP 拡張ファイル
    php-gd画像処理(JPEG,PNG,GIF)のPHP 拡張ファイル
    $ sudo yum --enablerepo=remi install -y php php-devel php-mysql php-mbstring php-gd
    
  3. 設定変更する
  4. php.iniファイルを修正
    $ sudo vi /etc/php.ini
    
    (略)
    
    # エラーログを出力するように
    ; Log errors to specified file. PHP's default behavior is to leave this value
    ; empty.
    ; http://php.net/error-log
    ; Example:
    ;error_log = php_errors.log
    ; Log errors to syslog (Event Log on Windows).
    ;error_log = syslog
    error_log = /var/log/php.log  # ←追加
    
    (略)
    
    # 文字の設定
    [mbstring]
    ; language for internal character representation.
    ; http://php.net/mbstring.language
    mbstring.language = Japanese  # ←文頭のセミコロンをとる
    
    (略)
    
    # 文字コードの設定
    ; internal/script encoding.
    ; Some encoding cannot work as internal encoding.
    ; (e.g. SJIS, BIG5, ISO-2022-*)
    ; http://php.net/mbstring.internal-encoding
    ;mbstring.internal_encoding = EUC-JP
    mbstring.internal_encoding=UTF-8 # ←追加
    
    (略)
    
    # 内部文字エンコーディング
    ; http input encoding.
    ; http://php.net/mbstring.http-input
    mbstring.http_input = auto  # ←セミコロンを外す
    
    (略)
    
    # 出力文字エンコーディング
    ; automatic encoding detection order.
    ; auto means
    ; http://php.net/mbstring.detect-order
    mbstring.detect_order = auto  # ←セミコロンを外す
    
    (略)
    
    # phpを使用していることを隠す?ちょっと謎
    expose_php = Off  # ←Offにする
    
    (略)
    
    # 時刻の地域
    [Date]
    ; Defines the default timezone used by the date functions
    ; http://php.net/date.timezone
    ;date.timezone = 
    date.timezone = Asia/Tokyo # 追加する
    
    (略)
    
    
  5. 設定を有効にする
  6. $ sudo service httpd restart
    

◆MySQLの導入
  1. インストール
  2. $ sudo yum install -y --enablerepo=remi mysql-server
    
  3. 設定を変更
  4. my.cnfファイルに設定を追記する
    色がついてる行を追加
    $ sudo vi /etc/my.cnf
    
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    
    character_set_server=utf8
    default-storage-engine=InnoDB
    innodb_file_per_table
    [mysql]
    default-character-set=utf8
    [mysqldump]
    default-character-set=utf8
    
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    略
    
    

  5. 設定を有効
  6. $ sudo service mysqld start
    # mysqlの初期設定
    $ /usr/bin/mysql_secure_installation
    Enter current password for root (enter for none):   # Enter押す
    Set root password? [Y/n] y  # y押す
    New password:  # パスワードを設定 ←!絶対忘れてはいけない!
    Re-enter new password:  # パスワードを再入力
    Remove anonymous users? [Y/n]  # y押す
    Disallow root login remotely? [Y/n] # y押す
    Remove test database and access to it? [Y/n] # y押す
    Reload privilege tables now? [Y/n] # y押す
    # 再起動時も設定を有効
    $ sudo chkconfig mysqld on
    
LAMP完成!
動作確認の方法、便利ツールとかはまた次回!

2015年1月3日土曜日

Linux仮想環境構築(ssh接続)

macに仮想のLinux環境を構築する
今回はネットワーク接続まで
のちにLAMP作りとかやってく

◆ 必要なソフトウェア
ソフト名機能
VirtualBox仮想環境を作って動かすソフトウェア
Vagrant VirtualBoxを簡単に設定できるソフトウェア


◆必要なソフトのインストール

  • VirtualBoxインストール
  • https://www.virtualbox.org/wiki/Downloads
    1. VirtualBox 4.3.20 for OS X hosts x86/amd64 ダウンロード
    2. VirtualBox.pkgをダブルクリックしてインストール
    3. Applicationsクリックしてappファイルを移動
  • Vagrantインストール
  • https://www.vagrantup.com/downloads.html
    1. MAC OS X版をダウンロード
    2. Vagrant.pkgをダブルクリックしてインストール
    3. ターミナルを開いて下記を実行。バージョンが表示されたらOK
    4. $ vagrant -v # バージョンを確認するコマンド
      Vagrant 1.7.1 # なんかバージョンがでたらOK
      


◆OSの選択
下記から構築する仮想環境のOSを選択する
www.vagrantbox.es/
今回は「CentOS6.4 x86_64」を入れるので、右の[Coppy]を押してURLをコピーする


◆環境構築
ターミナルを開き、環境設定用ディレクトリを作る。そのディレクトリ内で下記のコマンド実行。ちょっと時間かかるけど仮想環境がVirtualBoxに入る
コマンド意味
vagrant box add [タイトル] [URL]バーチャルボックスに加える
vagrant init [タイトル]仮想環境の初期設定する
    $ mkdir test
    $ cd test
    $ vagrant box add centOS64 https://github.com/2creatives/vagrant-centos/releases/download/v6.4.2/centos64-x86_64-20140116.box
    $ vagrant init centOS64
    
    ※[タイトル] → centOS64,  [URL]→OS選択のときコピーしたURLで実行してる

ディレクトリ内にVagrantfileファイルができるので、ネットワークの設定をしておく
ファイル内に下記の記述がある。その中の下記の3行目のシャープを外す
    # Create a private network, which allows host-only access to the machine
    # using a specific IP.
    config.vm.network "private_network", ip: "192.168.33.10"  # 行頭の#外す
    
    IPアドレスを設定したかったらip: を変更する

仮想環境の電源を入れる
    $ vagrant up
    

ターミナルから仮想にSSHでアクセスできるようになる
    $ vagrant ssh
    

とりあえず今いるディレクトリがどこかを確認!
    $ pwd
    /home/vagrant  # これがでたら完成
    
完成!




2015年1月2日金曜日

VBで配列の最大値を求める

Visual Basicで
配列の最大値と、その要素番号を求めるプログラムを作ってみた。
今回は二種類の方法で実装してみた。

配列の要素番号をループさせて最大値を探していく方法

注意が必要なのは配列要素の最初!
VBは要素番号は必ず0から始まるわけではない。
なので、ループの最初はLBound関数で配列要素の先頭を指してあげよう



配列をソートして最大値を求める方法

たいていのプログラム言語は、配列をソートするメソッドが存在する。
ソートすると最大値と最小値が配列の両端に移動するため、
コード上でループさせず配列の先頭or末尾を参照すれば最小値または最大値がわかる。

注意が必要のはソートすると元の配列の順番が変わってしまう点
なので、.Cloneで元配列をシャローコピーして、コピー配列にソートを掛ける必要がある。
最後にコピー元の配列から最大値の配列番号をindexOfメソッドで持ってきて完了!