ラベル Ubuntu の投稿を表示しています。 すべての投稿を表示
ラベル Ubuntu の投稿を表示しています。 すべての投稿を表示

2016-02-25

django.db.utils.ProgrammingError: relation "auth_group" does not exist

Djangoで、manage.py test をしたら、
django.db.utils.ProgrammingError: relation "auth_group" does not exist
とかいうエラーになって困った。開発環境のmacの上では起こらないんだけど、Ubuntu Server14.04で起こる。データベースはPostgreSQL。

何だろうっていろいろ調べたけど、ここが答えをくれた。 次のように言ってる人がいた。
Did you run python manage.py makemigrations appname first, where "appname" is the name of the app containing your custom user model inheriting from AbstractUser?
AbstractUserを定義しているappnameを指定して、makemigrationsをしたら解決。モデルがちゃんとつくられていなかったみたい。そういえば、DBをflushした後、これを実行するの忘れてたかも。

migrationのテーブルに不完全なデータしかない状態で、テスト用のテーブルを作成しようとしてエラーになっていたということだろうか。

2016-02-11

Ubuntu14.04でDjangoを複数動かす

Apache2.4のVirtualHost、python3.4のvenv、mod_wsgiのdaemon mode、これらを使った。手順というよりも注意点を書き留めておく。

Ubuntu14.04では、python3のvenvが失敗するという情報があったけど、大丈夫だった。venv(もしくはpyvenv)は、「apt-get install python3.4-venv」でインストールしないといけない。
venvが失敗するというのは、ensurepipモジュールが欠けていて、pipがインストールされないとのことだった。その場合に、手動でpipをインストールすれば良いとかいう情報もあった(手動でpipをインストールした場合、apt-getからインストールしたpython3-psycopg2とかpython3-lxmlとかへのパスが通っているのかは謎)。しかし、問題なくvenvを実行できた。

仮想環境をつくるときは、pyvenvではなく、python3 -m venv を呼び出すクセをつけておいた方が良さそう。複数のバージョンのpython3が入っている場合に、どのpython3を使ってvenvを実行するのかで、仮想環境で使うpythonのバージョンを選択できるからだ。pyvenvだとこれができない。

とはいえ、mod_wsgiを動かすpythonのバージョンを細かく指定することは、たぶんできない。だから本番のサーバーではpyvenvを使おうがvenvを使おうが同じことだ。

仮想環境をつくるときは、「python3 -m venv --system-site-packages --symlinks 仮想環境ディレクトリへのパス」という具合にオプションを与えておくと、activateしたときに、mod_wsgiを動かすときに近い環境になるはず。--upgradeを付けとけば、失敗してもやり直せる。(--upgrade なしでもやり直せそう。あと、--symlinks はデフォルト値だから省略していい。)

activateするには、「source 仮想環境ディレクトリへのパス/bin/activate」。 activateした後でsudoすると、環境変数が上書きされてしまうのでやってはいけない。たとえば、activateした後で「sudo pip install django」とやると、デフォルトのpython2のsite-packagesにdjangoがインストールされてしまう。そうならないように「sudo -s」としてから、activateする。で「pip install django」とやれば、仮想環境のsite-packagesにインストールされる。



2016-02-08

Ubuntu Serverでapache2の設定変更が反映されないで困った

Ubuntu Serverでapache2の設定変更が反映されないで困っていた。
a2ensiteやらa2dissiteやらで設定するのに慣れていないため、どこかにミスがあるのだろうと長時間にわたり試行錯誤。

結局のところ、
service apache2 restart
とコマンドを打つところで、sudo を忘れていただけだった。「 * Restarting web server apache2」というメッセージが出るだけだったから、権限で失敗していることに気づかずに、履歴から同じコマンドを叩きまくっていた。

なお、「apachectl restart」なら、「Permission denied」って失敗のメッセージが出る。ただし、このコマンドだと成功したときには何もメッセージが出ないから不安になる。「echo $?」とやって、戻り値が0なら成功、それ以外なら失敗と判断することもできるが。

2016-02-07

Ubuntu Server 14.4 で sshd -t するとエラーが出るんだけどこれは何だろう?

sshd -t は、/etc/ssh/sshd_config の設定内容などをテストしてくれるコマンドだ。Ubuntu Server 14.4 で実行してみたら、こんなエラーが出るんだけど何でだろう?
# sshd -t
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/etc/ssh/ssh_host_ed25519_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /etc/ssh/ssh_host_ed25519_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
ssh_host_ed25519_keyは、秘密鍵のファイル名だけど、パーミッションを調べたら、
-rw-r--r--  1 root root
となっていて誰でも読めてしまう状態になっていた。だから、
# chmod 600 ssh_host_ed25519_key
ってやったらエラーは出なくなった。けど、なんでパーミッションがこんな状態になっていたのかよく分からない。

2016-02-06

VirtualBoxのUbuntu Serverに固定IPアドレスを設定する

VirtualBoxで、IPアドレスを固定する方法。設定 > ネットワーク > アダプター2 に、ホストオンリーアダプターを割り当てることを前提にして、以下のようにやってみた。

CentOSの場合は、root 権限で、/etc/sysconfig/network-scripts/ifcfg-eth1 というファイルを作成して次のように書き込む。(なお、HWADDR= の後はMACアドレスなので、設定 > ネットワーク > アダプター2 などで割り当てられている値を確認する。)
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
HWADDR=08:00:27:FD:1A:54
IPADDR=192.168.56.9
NETMASK=255.255.255.0
NETWORK=192.168.56.1
それから、コマンドラインで
$ sudo service network restart
とする。
もっと丁寧には、ここらへんが参考になる。http://qiita.com/boscoworks/items/56d2ab2a9c5b1b100ce6


Ubuntu Serverで、これに相当することをやるとどうなるか。

まず、root権限で、/etc/network/interfaces の末尾に次のように書き込む。
auto eth1
iface eth1 inet static
address 192.168.56.10
netmask 255.255.255.0
 で、コマンドラインで、
$sudo /etc/init.d/netwok restart 
もしくは、
$ sudo /etc/init.d/networking restart
 とやる。Ubuntuはこうしないと、そもそもホストオンリーアダプターのときにホストから接続できないっぽい。
ちなみに、手元のスマホからVirtualBox上のサーバーにアクセスしたいときには、ホストオンリーアダプターでは駄目で、ブリッジアダプターを使うことになる。

2014-10-24

SSHでサーバーに接続できなくなって焦った。どうやらパーミッションがおかしくなっていたようだ。

$ cd /etc/ssh/
$ sudo chmod 600 ssh_host_dsa_key
$ sudo chmod 600 ssh_host_ecdsa_key
$ sudo chmod 600 ssh_host_rsa_key

これで治った。

2012-02-27

Ubuntuでnode.jsを試してみる、あとCloud9でも

Ubuntu 11.10にnode.jsをインストールしてみました。apt-getでいけます。パッケージマネージャのnpmもapt-getでいけます。
$ sudo apt-get install nodejs-dev
$ sudo apt-get install npm
サンプルコードとして、次のようなコードを書いて、hellonode.jsという名前で保存します。
var sys = require("sys");
var http = require("http");

var server = http.createServer(
  function(req, res)
  {
    res.writeHead(200, {"Content-Type": "text/plain"});
    res.write("Hello World!");
    res.end();
  }
);
server.listen(8080);
sys.log("Server is running at http:127.0.0.1:8080");
で、terminalで、
$ node hellonode.js
と入力したらとちゃんと動いているのをブラウザで確認できました。まあ、ちょっと遊んでみただけです。

調子に乗ってexpressもインストールしてみたけど、node.jsで遊ぶんならCloud9が手軽でいいかもしれません。ブラウザ上で動くIDEですが、意外と快適です。
ただ、正しくコマンドを打ったはずなのに原因不明のエラーになったり、あるはずのモジュールが見つからなかったりしました。しばらく待ってページを開き直して、また同じことを試してみたら上手くいきましたが。 

なお、Macでも、portを使ってnode.jsとnpmをインストールできるみたいです。

2012-02-24

Ubuntu11.10のデスクトップをUnityからLinux Mintと同じcinnamonに変更

このページを参考にcinnamonを導入した。cinnamonは、最近Ubuntuに代わって人気のあるLinux Mintのデスクトップ環境らしい。
sudo add-apt-repository ppa:merlwiz79/cinnamon-ppa
sudo apt-get update
sudo apt-get install cinnamon cinnamon-session cinnamon-settings
で終わり。いったんログアウトしてからログインしなおせば、cinnamonを選択できる。 UbuntuのUnityというのは使いにくかったが、cinnamonは違和感なく使える。

2010-11-24

appengine開発用にubutu10.4にpythonをインストールする

ubutu10.4で、google app engineの開発環境を整えようとしているが、思ったよりも厄介だ。
まず、python2.5をソースコードからビルドする必要がある。
だがこれだけでは不十分で、gzipのインポートに失敗してしまう。zlib1g-devをインストールした後でpython2.5を再インストールする。
すると今度は、sqlite2のimportでエラーになる。libsqlite2-devをインストールして、pythonを再インストール。
これでもまだダメで、AttributeError: 'module' object has no attribute 'HTTPSHandler'というエラーがでる。そこで、libssl-devをインストールして、pythonを再インストール。
とりあえずこれで動作するようになった。

Python2.5.2をソースコードをビルドしてインストールするには、次のコマンドを打ち込む。



sudo apt-get install build-essential gcc
cd Downloads
wget http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz
tar -xvzf Python-2.5.2.tgz
cd Python-2.5.2
./configure --prefix=/usr/local/python2.5
make 
make test 
sudo make install sudo 
ln -s /usr/local/python2.5/bin/python /usr/bin/python2.5

(間違ってるけど正しいの忘れた)