Windows10でPython3でtrac(PostgreSQL)

python2のサポートが2020年までということを知り、Windows環境で常用しているtracをどうにかしてpython3で継続して使いたくていろいろ調べました。

id:jun66j5さんがGitHub上にpython3対応しているソースコードを見つけたので、これをベースにちょっとだけテキトーに修正して、自分が使う分には困らないレベルで動くようになりました。(id:jun66j5さんありがとうございます。)

自分へのメモとして手順を書きます。

※この記事で使用するこのソースコードhttps://github.com/m-wachi/trac.git)はTrac Projectの公式コードではありませんので注意してください。


Windws環境のtrac 1.0(DBはPostgreSQL)からPython3環境でのtrac(1.2?)へ移行する手順

前提の環境: * python2 (2.7.15) (+pip, virtualenv) * python3 (3.7.2) (+pip, venv) * PostgreSQL 11

python2と3の共存環境の構築 https://qiita.com/segur/items/23f276320216c3aa7cf7

Python2環境で、trac1.0 → trac1.2へのアップグレード

1) 任意の作業ディレクトリ(ここではc:\py_virenv)を作成します
2) コマンドプロンプトを開く
3) virtualenv環境を作成

cd \py_virenv
mkdir trac1.2env
virtualenv trac1.2env 

4) 作った環境に入る

cd trac1.2env
scripts\activate

5) pipでgenshi, trac, psycopg2をインストール

pip install genshi trac psycopg2

6) 既存のDBをバックアップして、新たにインポート

pg_dump -Fc trac > trac.dmp
createdb -O tracuser trac12
pg_restore -d trac12 trac.dmp

※tracuserはtracのDBに接続するときのユーザ

7) tracディレクトリを作成

mkdir trac

8) エクスプローラー等で古いTracのプロジェクトディレクトリをコピー(myproject)

9) conf/trac.iniを編集。[trac]のdatabaseの設定を新たにインポートしたDBに変更

database = postgres://tracuser:tracuser@localhost:5432/trac12

10) データをUpgradeする

trac-admin c:\py_virenv\trac1.2env\trac\myproject upgrade
trac-admin c:\py_virenv\trac1.2env\trac\myproject wiki upgrade

11) python2環境で、trac1.2での動作確認

tracd -p 8000 c:\py_virenv\trac1.2env\trac\myproject

アップグレードしたプロジェクトをPython3環境へ移す

12) python2環境とは別にpython3環境でコマンドプロンプトを開く
13) venv環境を作成

cd \py_virenv
mkdir trac1.2_py3env
python -m venv trac1.2_py3env

14) 作った環境に入る

cd trac1.2_py3env
scripts\activate

15) pipがpython3であることを確認

pip -V

16) genshi, psycopg2をインストール

pip install genshi psycopg2

17) tracソースコードを入れるフォルダを作成

mkdir src
cd src

18) git clone及びcheckoutでpython3対応したソースを入手

git clone https://github.com/m-wachi/trac.git
cd trac
git checkout python3+swig-py3+r1853738

19) pip install -eでtracをソースからインストール

cd ..
pip install -e trac

20) Python2環境で作ったtracのフォルダをコピー

cd ..
mkdir trac
xcopy /e ..\trac1.2env\trac trac

21) --http10オプションを付けてtracd起動

tracd -p 8000 --http10 c:\py_virenv\trac1.2_py3env\trac\myproject

GCEでVNC

GCEのDebianVNCを使おうとして相当苦戦した。
手順のメモを残しておく

  1. gceのfirewallの設定をして、5901番ポートをあけておく(参考サイト参照)
  2. sudo apt-get install gnome-core
    少ししたら出てくるキーボード選択はEnglish(US)
  3. sudo apt-get install gnome-panel
  4. sudo apt-get install vnc4server
  5. vi ~/.vnc/xstartup
    で以下のように書く
    unset SESSION_MANAGER
    metacity &
    gnome-setting-daemon &
    gnome-panel &
    gnome-terminal &
  6. vncserver :1 -geometry 1024x768 -depth 24 -localhost no
    初回はパスワードを聞かれるので適当に
  7. vnc viewerでつなぐ。
  8. 終わるときは
    vncserver -kill :1

gnome-terminalを起動できない場合、ログイン後に一度sudo su - (userj) するとエラーが出なくなる。何故かはわからない。

 

参考サイト

GCE@東京でGUI(GNOME)を動かしてみた | apps-gcp.com

Debian 9 Stretch : VNCサーバーの設定 : Server World

HDBC-odbcをwindowsで使いたい Ver2

Windows Server 64bit(GCP上のサーバ)でなんとなくうまくいった時のメモ Ver2

前提

 DBサーバ:Oracle 11g Express (GCP上のWindows Server 2016に構築)

 HDBC-odbc環境:Windows Server 2012R2

環境構築手順

  1. Oracle Instant Clientをインストール
  2. tnsnames.oraを設定し、SQL Plusで接続確認
  3. ODBCデータソースアドミニストレータ(64bit)を起動し、システムDSNにOracleサーバを設定。適当なODBCクライアントで接続確認
  4. Msys2 64bitをインストール
  5. haskell platformをインストール
  6. Msys2環境の.bashrcを編集し、PATHにHaskell Platformのbin, lib/bin, lib/extralibs/binを前に挿入
    例)export PATH="/c/Program Files/Haskell Platform/8.4.3/bin":"/c/Program Files/Haskell Platform/8.4.3/lib/bin":"/c/Program Files/Haskell Platform/8.4.3/lib/extralibs/bin":$PATH
  7. プロキシを通す場合、.curlrcに設定
    proxy = http://xxx.yyy.zzz.nnn:pppp
    #proxy-user ="(user name):(password)"  #多分プロキシ認証が必要な場合に設定
  8. Msys2で
    cabal update
    cabal install HDBC-odbc

これでいけたはず。

HDBC-odbcをwindowsで使いたい

Windows Server 64bit(GCP上のサーバ)でなんとなくうまくいった。うろ覚えだがメモ

前提

 DBサーバ:Oracle 11g Express (GCP上のWindows Server 2016に構築)

 HDBC-odbc環境:Windows Server 2012R2

環境構築手順

  1. Oracle Instant Clientをインストール
  2. tnsnames.oraを設定し、SQL Plusで接続確認
  3. ODBCデータソースアドミニストレータ(64bit)を起動し、システムDSNにOracleサーバを設定。適当なODBCクライアントで接続確認
  4. Msys2 64bitをインストール
  5. haskell platformをインストール
  6. Msys2環境の.bashrcを編集し、PATHにHaskell Platformのbin, lib/bin, lib/extralibs/binを前に挿入
    例)export PATH="/c/Program Files/Haskell Platform/8.4.3/bin":"/c/Program Files/Haskell Platform/8.4.3/lib/bin":"/c/Program Files/Haskell Platform/8.4.3/lib/extralibs/bin":$PATH
  7. Msys2で
    cabal install HDBC-odbc

こんな感じだったはず

HDBC-odbcをwindowsで使いたいけど

自分の環境がwin7 32bitで少し古い32bit版のHaskell platformをインストールして、cabalでどうにかしようとしたけど、どうにもならない。
old-timeなんちゃらのところでひっかかる。
これがあのcabal hell?
(ちなみにstackだとそもそもパッケージ取れない…)
は〜

Google Compute EngineでHaskell stack + spock覚書

  1. Google Compute Engineのインスタンスdebian stretchで、DISKは30GBにして作成
  2. いろいろ調べてCygwinsshインスタンスにつなげるようにする
  3. とりあえずemacshaskell-modeをsudo apt-get installでインストール
  4. https://docs.haskellstack.org/en/stable/README/

    に従って、以下でインストール
    curl -sSL https://get.haskellstack.org/ | sh
  5. さらに以下を言われたとおりにやって、動作確認
    stack new my-project
    cd my-project
    stack setup
    stack build
    stack
    exec my-project-exe
  6. 次にSpock

    https://www.spock.li/tutorials/getting-started

    を見ながらやる。まずstack new spock-test01
    cd spock-test01
  7. 次にpackage.yamlのdependenciesを以下のように修正(baseはそのままで)(これをきちんと書いてくれてないのが...)dependencies:
      - base >= 4.7 && < 5
      - Spock >=0.11
      - mtl
      - text
  8. 次。stack.yamlのresolver, extra-depsを修正
    resolver: lts-8.13
    (中略)

    extra-deps:
    - Spock-0.13.0.0
    - Spock-core-0.13.0.0
    - reroute-0.5.0.0
  9. stack build --fast --pedantic
    これが終わるまでしばらく待つ
  10. Spockのサイトに書いてあるコードをapp/Main.hsにコピペ
  11. もう一度stack build --fast --pedantic
  12. stack exec spock-test01-exe &
  13. 動作確認
    wget http://localhost:8080; cat index.html
    Hello World!が出るか確認
  14. いったんsudo shutdown -h now
  15. GCEのコンソールのVPCネットワークでport 8080の穴をあけるFWルールを作成し、すべてに適用にしておく
  16. 再度VMを起動。
  17. もう一度 stack exec spock-test01-exe
  18. ブラウザでhttp://(インスタンスのip):8080/hello/torilonで
    Hello torilon, you are visitor number 1
    が出れば成功

ふぅ~、ここまで結構大変。お疲れ様でした。

 

AWS 始めた時の覚書

Awsチュートリアルどおりにすればそこそこ上手くいくが、メモ

1 アカウントサインアップ
クレカの番号を要求されるが、諦めて入れるしかない。
2 仮想マシン
Ubuntu をつかうときは、ユーザID はubuntu
起動するとグローバルipがわりあてられるので、それでssh + 鍵ファイルでアクセスできる
3 locale、time zone は日本じゃないので自分で変える。
4 cloud-init という独自の仕組みがあり、パッケージの更新などを勝手にやるらしい
5 GUI+vnc
Ubuntu-desktop だけでなく、Xfceとかをいれないとうまくいかなかった
AWSコンソールでvncのポートを開けないといけない
6 iPad
Termius というアプリでssh 接続できた
7 MFAにはGoogle Authenticatorをつかった。
最初のサインアップのときに、Google Authenticator の表示する数字を2回入力するところが最初分からずハマった。