Django のデプロイ on Ubuntu
apache2-dev のインストール
sudo apt-get install apache2-thread-dev
mod_python のインストール
Synaptic から libapache2-mod-python をインストール
apache2.conf に以下の行を追記
<Location "/mysite/"> //←環境に合わせて変更 SetHandler python-program PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE mysite.settings PythonOption django.root /mysite //←環境に合わせて変更 PythonDebug On PythonPath "['/path/to/project'] + sys.path" //←環境に合わせて変更 </Location>
ソースの配置 (to be continued ...)
データベースの親ディレクトリのアクセス権を変更
apache2 の再起動
sudo /etc/init.d/apache2 restart
ブラウザで表示確認
http://localhost/mysite/admin/
Apache2 でユーザー認証 (Digest 認証)
環境
# apache2 -v Server version: Apache/2.2.8 (Ubuntu) Server built: Mar 9 2010 20:42:14
認証エリアの作成
mkdir -p /var/www/member cp /var/www/index.html /var/www/member/
Apache の設定ファイルを編集
# vi /etc/apache2/apache2.conf(↓を追記) <Directory "/var/www/member"> AuthType Digest AuthName "Secret Zone" AuthDigestDomain /member/ AuthUserFile /etc/apache2/.htdigest Require user secret </Directory>
認証ユーザーの作成
# htdigest -c /etc/apache2/.htdigest 'Secret Zone' secret Adding password for secret in realm Secret Zone. New password: Re-type new password:
auth_digest_module のインストール
# a2enmod Which module would you like to enable? ... Module name? auth_digest Module auth_digest installed; run /etc/init.d/apache2 force-reload to enable.
Apache を再起動
/etc/init.d/apache2 restart
Web ブラウザで http://localhost/member/ にアクセスすると、
ユーザー認証用のダイアログボックスが表示される!
LFS on Ubuntu(6) 一時的環境の構築 (Expect-5.43.0 〜)
Expect の解凍
tar zxvf expect-5.43.0.tar.gz cd expect-5.43
// GCC のテストスイートの失敗を回避 patch -Np1 -i ../expect-5.43.0-spawn-1.patch // Tcl の最近の変更に対応 patch -Np1 -i ../expect-5.43.0-tcl_8.5.5_fix-1.patch
Expect の configure スクリプトが、ホストシステムの /usr/local/bin/stty ではなく、 /bin/stty を利用するように修正
cp -v configure{,.orig} sed 's:/usr/local/bin:/bin:' configure.orig > configure
Expect をコンパイルするための準備
./configure --prefix=/tools --with-tcl=/tools/lib \ --with-tclinclude=/tools/include --with-x=no
Expect のインストール
make make test make SCRIPTS="" install
DejaGNU のインストール
tar zxvf dejagnu-1.4.4.tar.gz cd dejagnu-1.4.4 ./configure --prefix=/tools make install make check
Ncurses のインストール
tar zxvf ncurses-5.7.tar.gz cd ncurses-5.7 ./configure --prefix=/tools --with-shared \ --without-debug --without-ada --enable-overwrite make make install
Bash のインストール
tar zxvf bash-4.1.tar.gz ./configure --prefix=/tools --without-bash-malloc make make tests make install ln -vs bash /tools/bin/sh
Bzip2 のインストール
tar zxvf bzip2-1.0.5.tar.gz cd bzip2-1.0.5 make PREFIX=/tools install
Coreutils のインストール
tar zxvf coreutils-8.4.tar.gz cd coreutils-8.4 ./configure --prefix=/tools --enable-install-program=hostname make make install
別名ファイルを作り出して手動で su をインストールする
cp -v src/su /tools/bin/su-tools
Diffutils のインストール
tar zxvf diffutils-2.8.1.tar.gz cd diffutils-2.8.1 ./configure --prefix=/tools make make install
LFS on Ubuntu(5) 一時的環境の構築 (GCC-4.4.3 - 2回目〜)
部分的に GCC の古い機能を復活させるパッチを適用
$ cd $LFS/sources/gcc-4.4.3 $ patch -Np1 -i ../gcc-4.4.3-startfiles_fix-1.patch
fixincludes スクリプトの実行を無効とする
$ cp -v gcc/Makefile.in{,.orig} $ sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in
コンパイラフラグ -fomit-frame-pointer を有効化
$ cp -v gcc/Makefile.in{,.tmp} $ sed 's/^T_CFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in.tmp \ > gcc/Makefile.in
すべての実行モジュール類を新しい Glibc に対してリンクする
$ cd gcc-4.4.3 for file in \ $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h) do cp -uv $file{,.orig} sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ -e 's@/usr@/tools@g' $file.orig > $file echo ' #undef STANDARD_INCLUDE_DIR #define STANDARD_INCLUDE_DIR 0 #define STANDARD_STARTFILE_PREFIX_1 "" #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file touch $file.orig done
GCC のインストール
$ rm -rf gcc-build $ tar -jxf mpfr-2.4.2.tar.bz2 $ mv -v mpfr-2.4.2 ./gcc-4.4.3/mpfr $ tar -jxf gmp-5.0.0.tar.bz2 $ mv -v gmp-5.0.0 ./gcc-4.4.3/gmp $ mkdir -v gcc-build $ cd gcc-build $ CC="$LFS_TGT-gcc -B/tools/lib/" \ AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib \ ../gcc-4.4.3/configure --prefix=/tools \ --with-local-prefix=/tools --enable-clocale=gnu \ --enable-shared --enable-threads=posix \ --enable-__cxa_atexit --enable-languages=c,c++ \ --disable-libstdcxx-pch --disable-multilib \ --disable-bootstrap $ make // 超長い(笑) $ make install
シンボリックリンクの作成
$ ln -vs gcc /tools/bin/cc
健全性検査 (sanity check)
echo 'main(){}' > dummy.c cc dummy.c readelf -l a.out | grep ': /tools'
テストファイルの削除
rm -v dummy.c a.out
Tcl のインストール
$ tar zxvf tcl8.5.8-src.tar.gz $ cd tcl8.5.8/unix $ ./configure --prefix=/tools $ make // テストスイート $ TZ=UTC make test $ make install
インストールされたライブラリを書き込み可能にし、後でデバッグシンボルを削除できるようにする
chmod -v u+w /tools/lib/libtcl8.5.so
Tcl のヘッダファイルをインストール
make install-private-headers
必要となるシンボリックリンクを生成
ln -sv tclsh8.5 /tools/bin/tclsh
LFS on Ubuntu(4) 一時的環境の構築 (ツールチェーンの調整)
ツールチェーンの調整
SPECS=`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/specs $LFS_TGT-gcc -dumpspecs | sed \ -e 's@/lib\(64\)\?/ld@/tools&@g' \ -e "/^\*cpp:$/{n;s,$, -isystem /tools/include,}" > $SPECS echo "New specs file is: $SPECS" unset SPECS
健全性検査 (sanity check)
echo 'main(){}' > dummy.c $LFS_TGT-gcc -B/tools/lib dummy.c readelf -l a.out | grep ': /tools'
テストファイルの削除
rm -v dummy.c a.out
Binutils のインストール
$ rm -rf binutils-build $ mkdir -v binutils-build $ cd binutils-build $ CC="$LFS_TGT-gcc -B/tools/lib/" \ AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib \ ../binutils-2.20/configure --prefix=/tools \ --disable-nls --with-lib-path=/tools/lib $ make $ make install
次に行う「再調整」の作業に向けてリンカ (梨花?) を準備
make -C ld clean make -C ld LIB_PATH=/usr/lib:/lib cp -v ld/ld-new /tools/bin
LFS on Ubuntu(3) 一時的環境の構築 (Glibc-2.11.1)
$ tar -jxf linux-2.6.32.8.tar.bz2 $ cd linux-2.6.30.2 $ make mrproper $ make headers_check $ make INSTALL_HDR_PATH=dest headers_install $ cp -rv dest/include/* /tools/include
Glibc のインストール
// make の際に必要 # apt-get install gawk $ mkdir -v ../glibc-build $ tar -jxf glibc-2.11.1.tar.bz2 $ cd glibc-build $ case `uname -m` in i?86) echo "CFLAGS += -march=i486 -mtune=native" > configparms ;; esac $ ../glibc-2.11.1/configure --prefix=/tools \ --host=$LFS_TGT --build=$(../glibc-2.11.1/scripts/config.guess) \ --disable-profile --enable-add-ons \ --enable-kernel=2.6.18 --with-headers=/tools/include \ libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes $ make // 長い(笑) $ make install
References
- Linux From Scratch - Version 6.5 第5章 一時的環境の構築
- LFS 5.7. Glibc-2.10.1 で glibc compile error
- Re: Problem compiling Glibc Lfs 6.5
- __sync_bool_compare_and_swap_4 とは何か?
- Re: Glibc make error
- Linux互換用クロス開発環境構築
- Error Compiling GCC: error: #error "glibc cannot be compiled without optimization"
- OpenBlockS を使おう!
LFS on Ubuntu(2) 一時的環境の構築 (GCC-4.4.1 - 1回目)
作業するプラットフォームの 「三つの組 (target triplet)」 で表される名称を確認
$ bzip2 -dc binutils-2.20.tar.bz2 | tar xvf - $ cd binutils-2.20 $ ./config.guess i686-pc-linux-gnu $ echo $LFS /mnt/lfs
ダイナミックリンカの名前を確認
$ readelf -l /bin/ls | grep interpreter [Requesting program interpreter: /lib/ld-linux.so.2]
$ su - lfs $ cd $LFS/sources $ mkdir -v binutils-build $ cd binutils-build $ ../configure \ --target=$LFS_TGT --prefix=/tools --disable-nls --disable-werror $ make $ make install
$ cd .. $ tar -jxf mpfr-2.4.2.tar.bz2 $ tar -jxf gmp-5.0.0.tar.bz2 $ tar -jxf gcc-4.4.3.tar.bz2 // gcc-4.4.3 配下に mv しないと configure エラーになる $ mv -v mpfr-2.4.2 ./gcc-4.4.3/mpfr $ mv -v gmp-5.0.0 ./gcc-4.4.3/gmp $ mkdir -v gcc-build $ cd gcc-build $ ../gcc-4.4.3/configure \ > --target=$LFS_TGT --prefix=/tools \ > --disable-nls --disable-shared --disable-multilib \ > --disable-decimal-float --disable-threads \ > --disable-libmudflap --disable-libssp \ > --disable-libgomp --enable-languages=c $ make $ make install // libgcc.a へのシンボリックリンクを生成 $ ln -vs libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name |\ > sed 's/libgcc/&_eh/'` `/mnt/lfs/tools/bin/../lib/gcc/i686-lfs-linux-gnu/4.4.1/libgcc_eh.a' -> `libgcc.a'