2013年7月28日日曜日

MySQLを使用するDjangoプロジェクトのセットアップ

Djangoプロジェクトmysiteを作成。

$ django-admin.py startproject mysite

このプロジェクト用のデータベースmysite_dbと、
このデータベースにアクセスするユーザmysite_userを作成。
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
...
mysql> create database mysite_db;
Query OK, 1 row affected (0.00 sec)

mysql> grant CREATE,ALTER,DROP,INDEX,SELECT,UPDATE,INSERT,DELETE
    -> on mysite_db.*
    -> to mysite_user@localhost
    -> identified by 'mysite_pass';
Query OK, 0 rows affected (0.03 sec)

mysql> quit
Bye
$

プロジェクトの設定ファイルsettings.pyに作成したデータベースの情報を書き込む。
$ cd mysite/
$ vi mysite/settings.py
...
ENGINE = django.db.backends.mysql
NAME   = mysite_db
USER   = mysite_user
PASWORD= mysite_pass
...
$

syncdbコマンドでデータベースを初期化。
$ ./manage.py syncdb
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'xxx'): root
Email address: hoge@example.com
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
$

初期化されたデータベースの中身を確認。
$ mysql -u root -p
Enter password:
...

mysql> use mysite_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------------------+
| Tables_in_mysite_db        |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_content_type        |
| django_session             |
| django_site                |
+----------------------------+
9 rows in set (0.00 sec)

mysql> desc auth_user;
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | int(11)      | NO   | PRI | NULL    | auto_increment |
| password     | varchar(128) | NO   |     | NULL    |                |
| last_login   | datetime     | NO   |     | NULL    |                |
| is_superuser | tinyint(1)   | NO   |     | NULL    |                |
| username     | varchar(30)  | NO   | UNI | NULL    |                |
| first_name   | varchar(30)  | NO   |     | NULL    |                |
| last_name    | varchar(30)  | NO   |     | NULL    |                |
| email        | varchar(75)  | NO   |     | NULL    |                |
| is_staff     | tinyint(1)   | NO   |     | NULL    |                |
| is_active    | tinyint(1)   | NO   |     | NULL    |                |
| date_joined  | datetime     | NO   |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+
11 rows in set (0.00 sec)

mysql> select username,email from auth_user;
+----------+------------------+
| username | email            |
+----------+------------------+
| root     | hoge@example.com |
+----------+------------------+
1 row in set (0.00 sec)

mysql>

Ubuntu 12.04 LTSにDjango 1.5.1をインストール

How to install Django を参考にインストール

ApacheとMySQLの組み合わせで動かしたいので、下記ソフトをインストール。
  • Apache 2.4.4
  • mod_wsgi 3.4
  • MySQL 5.6.12
  • MySQL-python 1.2.3

次に、Djangoのインストールだが、すごく簡単。
Installing an official release manually の手順通り。
$ wget -O Django-1.5.1.tar.gz https://www.djangoproject.com/download/1.5.1/tarball/
$ tar xvzf Django-1.5.1.tar.gz
$ cd Django-1.5.1
$ sudo python setup.py install

正しくインストールできたかどうかは、下記のコマンドで確認。
$ python -c "import django; print(django.get_version())"
1.5.1
$

2013年7月24日水曜日

Ubuntu 12.04 LTSにMySQL for Python 1.2.3をインストール

PythonからMySQLにアクセスするためのライブラリ。

任意のフォルダにソースコードをダウンロードして展開。
$ wget http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz
$ tar xvzf MySQL-python-1.2.3.tar.gz
$ cd MySQL-python-1.2.3

ビルドする前に、READMEを参考に、
必要なライブラリのインストールと、site.cfgの編集を行う。
$ sudo apt-get install python-setuptools
$
$ # mysql_configのパスを
$ # mysql_config
$ vi site.cfg
...
# The path to mysql_config.
# Only use this if mysql_config is not on your PATH, or you have some weird
# setup that requires it.
mysql_config = /opt/mysql/server-5.6/bin/mysql_config
...
$

準備ができたらビルドしてインストール。
$ python setup.py build
$ sudo python setup.py install
...
Installed /usr/local/lib/python2.7/dist-packages/MySQL_python-1.2.3-py2.7-linux-x86_64.egg
Processing dependencies for MySQL-python==1.2.3
Finished processing dependencies for MySQL-python==1.2.3
$

最後に、ここ を参考にコードを書いて、MySQLにアクセスできることを確認。
$ mysql -u root -p
Enter password:
...
mysql> create database test_python;
Query OK, 1 row affected (0.00 sec)

mysql> use test_python;
Database changed
mysql> create table test(
    -> id int,
    -> value text,
    -> primary key(id));
Query OK, 0 rows affected (0.04 sec)

mysql> insert into test values(1, "sample text");
Query OK, 1 row affected (0.01 sec)

mysql>

>>> import MySQLdb
>>> conn = MySQLdb.connect(db="test_python", host="127.0.0.1", port=3306, user="root", passwd="xxx")
>>> cur = conn.cursor()
>>> cur.execute("insert into test values (2, 'python text')")
1L
>>> cur.execute("select * from test")
2L
>>> rows = cur.fetchall()
>>> for row in rows:
        print row


(1L, 'sample text')
(2L, 'python text')
>>> cur.close()
>>> conn.commit()
>>> conn.close()
>>>

Ubuntu 12.04 LTSにMySQL 5.6をインストール

まず始めに、/etc/mysqlフォルダの有無を確認。
Ubuntu 12.04 LTSをインストールすると、自動的にmysql-clientとmysql-commonが組み込まれるようなので、これらをuninstallするか、とりあえず、フォルダ名を変更する。このフォルダがあると、参考にしたサイトの手順どおりにインストールできない。

確認が終わったら、 ここから 任意のフォルダにDebian用バイナリー配布パッケージをダウンロード。

次に、 2.5.2. Installing MySQL on Linux Using Debian Packages を参考に、MySQLとlibaioライブラリをインストール。
$ sudo dpkg -i mysql-5.6.12-debian6.0-x86_64.deb
$ sudo apt-get install libaio1

続いて、 2.2. Installing MySQL on Unix/Linux Using Generic Binaries2.10.1. Unix Postinstallation Procedures を参考に、MySQLデータを初期化し、システムテーブルを作成。
$ sudo groupadd mysql
$ sudo useradd -r -g mysql mysql
$ cd /opt/mysql
$ sudo chown -R mysql .
$ sudo chgrp -R mysql .
$ cd server-5.6
$ sudo install -o mysql -g mysql -d /var/opt/mysql
$ sudo scripts/mysql_install_db --user=mysql --datadir=/var/opt/mysql

/opt/mysql/server-5.6に作成された設定ファイルmy.cnfを/etcに移動して、コメントになっているbasedir、datadirを書き換える。
$ sudo mv my.cnf /etc
$ sudo vi /etc/my.cnf
...
basedir = /opt/mysql/server-5.6
datadir = /var/opt/mysql
...
$

これで、起動に必要な準備は完了。
早速、起動してみる。
$ sudo bin/mysqld_safe --user=mysql &

アクセスできるか確認するためにバージョンを表示。
正しく表示されたら起動OKなので、rootのパスワードを設定。
$ bin/mysqladmin version
...
Server version  5.6.12
Protocol version 10
Connection  Localhost via UNIX socket
UNIX socket  /tmp/mysql.sock
Uptime:   1 min 55 sec
...
$ bin/mysqladmin -u root password 'xxx'  # xxxがパスワード

続いて、パスワードが正しく設定できたか確認。
$ bin/mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
...
mysql> quit
Bye

ブートの設定をするために、一旦、shutdown。
$ bin/mysqladmin -u root -p shutdown

ブート時に自動的に起動するように設定。
$ sudo cp support-files/mysql.server /etc/init.d/mysql
$ sudo update-rc.d mysql defaults
 Adding system startup for /etc/init.d/mysql ...
   /etc/rc0.d/K20mysql -> ../init.d/mysql
   /etc/rc1.d/K20mysql -> ../init.d/mysql
   /etc/rc6.d/K20mysql -> ../init.d/mysql
   /etc/rc2.d/S20mysql -> ../init.d/mysql
   /etc/rc3.d/S20mysql -> ../init.d/mysql
   /etc/rc4.d/S20mysql -> ../init.d/mysql
   /etc/rc5.d/S20mysql -> ../init.d/mysql
$

最後に、コマンドとライブラリのパスを追加して作業終了。
PATH=/opt/mysql/server-5.6/bin:${PATH}

$ sudo vi /etc/ld.so.conf.d/mysql.conf  # 新規作成
/opt/mysql/server-5.6/lib
$ sudo ldconfig

2013年7月22日月曜日

Ubuntu 12.04 LTSにmod_wsgi 3.4をインストール

Apache(/usr/local/apache2にインストール)からPythonを使えるように、 Quick Installation Guideを参考にしてインストール。


まず、任意のフォルダにソースコードをダウンロードして展開。
$ wget http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz
$ tar xvzf mod_wsgi-3.4.tar.gz

続いて、configureを実行するとapxsコマンドが見つからないとエラーになる。
$ cd mod_wsgi-3.4
$ ./configure
checking for apxs2... no
checking for apxs... no
checking Apache version... ./configure: line 1704: apxs: command not found
...

apxsコマンド(Apacheのbinフォルダ)のパスを指定して、再度、configureを実行。
正常終了したら、そのままmakeを実行。すると、今度はPython.hが見つからないとエラーに。
$ ./configure --with-apxs=/usr/local/apache2/bin/apxs
$ make
...
mod_wsgi.c:142:20: fatal error: Python.h: No such file or directory
compilation terminated.
...

Python.hをインストールして、再びビルド。
成功したら、そのまま make installを実行。
$ sudo apt-get install python-dev
$ make
$ sudo make install
...
Libraries have been installed in:
   /usr/local/apache2/modules
...

最後に、Apacheのhttpd.confにwsgi_moduleを追加してインストール作業は終了。
$ sudo vi /usr/local/apache2/conf/httpd.conf
...
LoadModule wsgi_module modules/mod_wsgi.so
...

あとは、Quick Configuration Guideを参考に、簡単なWSGI Applicationを作成して動作確認。しかし、1点だけ注意が必要。このサイトのhttpd.confの例はApache 2.4未対応です。アクセスしてもForbiddenとなります。以下のように修正する必要があります。
<Directory /usr/local/www/wsgi-scripts>
Require all granted
# Order allow,deny
# Allow from all
</Directory>

2013年7月20日土曜日

Ubuntu 12.04 LTSにApache HTTP Server 2.4をソースからインストール

ApacheサイトのCompiling and Installingを参考にインストール。

まずは、任意のフォルダにソースコードをダウンロードして展開。
$ cd <anywhere>
$ wget http://archive.apache.org/dist/httpd/httpd-2.4.4.tar.gz
$ tar xvzf httpd-2.4.4.tar.gz

次に、APR(Apache Portable Runtime)とAPR-Utilのソースコードをダウンロードして、./httpd-2.4.4/srclibに展開。srclibにソースコードを置いておくと、まとめてビルドして くれる。
$ cd httpd-2.4.4/srclib
$
$ wget http://archive.apache.org/dist/apr/apr-1.4.8.tar.gz
$ tar xvzf apr-1.4.8.tar.gz
$ mv apr-1.4.8  apr    ## フォルダ名からバージョン削除する必要がある
$
$ wget http://archive.apache.org/dist/apr/apr-util-1.5.2.tar.gz
$ tar xvzf apr-util-1.5.2.tar.gz
$ mv apr-util-1.5.2 apr-util

ここで、configureを実行して必要なパッケージがインストールされているかチェック。
$ cd ..
$ ./configure

Requirementsに記載されているPerl-Compatible Regular Expressions Library(PCRE)がインスト ールされていないことが判明。PCREをインストール。
$ sudo apt-get install libpcre3 libpcre3-dev

再度、configureを実行して、問題なければビルドしてインストール。
$ make
$ sudo make install

早速、動作確認。インストール時に何も指定しなければ、/usr/local/apache2にインストールされるので、 下記のコマンドで起動。Browserで http://localhost にアクセスすると、It works!と表示される。
$ sudo /usr/local/apache2/bin/apachectl start

次に、設定を変更するためにhttpd.confの場所を調べる。
$ sudo /usr/local/apache2/bin/apachectl -V

DocumentRootなどを変更して、下記のコマンドで再起動すれば、変更した設定がすぐに反 映される。
$ sudo /usr/local/apache2/bin/apachectl restart

最後に、ブート時に自動起動させるための設定について。 このサイトによると、Upstart、SysV Script、/etc/rc.localの3つの方法があ るようですが、セキュリティーなどを考慮して、当面は必要なときに手動で起動。

2013年7月14日日曜日

Ubuntu 12.04 LTSにAndroid SDK ADT Bundleをインストール

インストールは簡単!
Get the Android SDKからADT Bundle for Linux(zipファイル)をダウンロードして、インストールしたいフォルダで解凍するだけ。
$ unzip adt-bundle-linux-x86_64-20130522.zip

下記のようにeclipseを起動すれば、すぐに使えます。
$ adt-bundle-linux-x86_64-20130522/eclipse/eclipse

しかし、このままではLauncherから起動できないので、かなり不便。
ここを参考に、手作業でショートカットを登録します。
$ cd ~/.local/share/applications/
$ vi eclipse.desktop
eclipse.desktopの内容は、
[Desktop Entry]
Type=Application
Name=Eclipse with ADT
Comment=the Eclipse IDE with built-in ADT (Android Developer Tools)
Icon=インストールしたフォルダ/adt-bundle-linux-x86_64-20130522/eclipse/eclipse/icon.xpm
Exec=インストールしたフォルダ/adt-bundle-linux-x86_64-20130522/eclipse/eclipse/eclipse
Terminal=false
Categories=Development;
StartupWMClass=Eclipse

ここでnautilusを起動すると、icon.xpmが表示されるので、 これをLauncherにドロップすれば登録終了です。
$ nautilus ~/.local/share/applications

それと、Android SDK ADT Bundleを動作させるために、以下のソフトをインストールしました。
  • JDK6
  • ia32-lib
$ sudo apt-get install ia32-libs

2013年7月13日土曜日

Ubuntu 12.04 LTSにOracle JDK6をインストール

前回インストールしたときは、Installing the JDKに記載されている以下のコマンドでインストールできたんだけど、現在は、このコマンドではインストール出来ない。
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

いろいろ調べ、このサイトに記載されている手順どおりにインストール。
まずは、OracleのサイトからJDK6のパッケージをダウンロード。 ブラウザーからダウンロードしようとするとアカウント作成が必要ですが、下記コマンドだとアカウントなしでダウンロードできます。
$ wget --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F" http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin

次に、ダウンロードしたファイルに実行権限を与えて実行すると、jdk1.6.0_45フォルダができるので、それを/optに移動する。
$ chmod u+x jdk-6u45-linux-x64.bin
$ ./jdk-6u45-linux-x64.bin
$ sudo mv jdk1.6.0_45 /opt

後は、以下のコマンをを実行するだけ。
(update-alternativesを勉強しないと、、、)
$ sudo update-alternatives --install "/usr/bin/java" "java" "/opt/jdk1.6.0_45/bin/java" 1
$ sudo update-alternatives --install "/usr/bin/javac" "javac" "/opt/jdk1.6.0_45/bin/javac" 1
$ sudo update-alternatives --install "/usr/lib/mozilla/plugins/libjavaplugin.so" "mozilla-javaplugin.so" "/opt/jdk1.6.0_45/jre/lib/amd64/libnpjp2.so" 1
$ sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/opt/jdk1.6.0_45/bin/javaws" 1
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac

いちおう動作確認
$ java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

2013年7月9日火曜日

IDLE便利

Python Tutorialの中にIDLEという言葉が数回使われていて、ついつい状態とかタスクを思い浮かべてしまいますが、Python's Integrated DeveLopment Environmentのことでした。 早速、インストールして使っていますが、ファイルにコードを書きながら、実行やデバッグができて便利です。

2013年7月5日金曜日

Python vs PHP

Python と PHP、どっちを勉強しようか悩んだけど、 いろいろヒアリングした結果、 ”WEB以外にも使えるよ”のアドバイスで Python に決めた! ちなみに下記サイトによると、PHPエンジニアのほうが多いようです。 https://www.udemy.com/blog/modern-language-wars/

2013年7月3日水曜日

ホストOSの共有フォルダが見えない

VMware Toolsをインストールしたけど見えない、、、
インストール時に何も見ないで Enterを押し続けたのが良くなかったのか?

何が原因なのかネットで調べてみると、突然見えなくなることはあるそうで、
その場合は再インストールすると回復するとのこと。

早速、再インストール、
今回は丁寧に内容を確認しながら Enterキーを押す。
すると、最後に、こんなメッセージが
To enable advanced X features (e.g., guest resolution fit, drag and drop, and file and text copy/paste), you will need to do one (or more) of the following:
1. Manually start /usr/bin/vmware-user
2. Log out and log back into your desktop session; and,
3. Restart your X session.
これが関係するかどうかは判らないが、とりあえずやってみたところ、 こんどは共有フォルダが見えるようになった!

VMware Player を使ってみる

Windows 8上に、ゲストOSとしてUbuntu 12.04をインストール。
と言っても、下記サイトの手順に従っただけなので、超簡単。
あとは、会社で使っているUbuntuと同じ環境を構築するのみ。


2013年7月2日火曜日

組み込みソフト開発から離れて、はや3年

Android や iOSアプリの外注管理業務も3月で終わり、
4月からの2カ月間はボーっとして過ごしてしまった。
そろそろ、何かしないとヤバイ!