c-cgi-book examples
このディレクトリには、本文のコード片を実際にビルドして試すためのサンプルを置いています。
構成
examples/
Makefile
public/
login.html
sql/
schema.sql
src/
cgi.c / cgi.h
form.c / form.h
html.c / html.h
json.c / json.h
session.c / session.h
db.c / db.h
hello.c
form_echo.c
dev_login.c
diary_form.c
diary_submit.c
diary_list.c
diary_api.c
ビルド
ODBCを使わない基本サンプルだけをビルドします。
make core
ODBCを使う日記CMS/APIもビルドします。
make diary
diary ターゲットには unixodbc-dev が必要です。
sudo apt install unixodbc unixodbc-dev libmariadb-dev
配置例
sudo cp build/*.cgi /usr/lib/cgi-bin/
sudo cp public/login.html /var/www/html/login.html
セッション保存先を作成します。
sudo mkdir -p /var/lib/c-cgi-book/sessions
sudo chown www-data:www-data /var/lib/c-cgi-book/sessions
sudo chmod 700 /var/lib/c-cgi-book/sessions
データベース
sql/schema.sql をMariaDBに投入します。
mariadb -u root -p < sql/schema.sql
接続文字列は環境変数 CGI_DB_CONN で上書きできます。
export CGI_DB_CONN='DRIVER={MariaDB};SERVER=localhost;DATABASE=sample;UID=user;PWD=pass;'
Apache CGI上で環境変数を渡す方法は環境により異なります。学習用の最初の確認では、src/db.c の既定値をローカル環境に合わせて変更しても構いません。
注意
dev_login.cgi はローカル学習用の簡易ログインです。パスワード認証を実装していません。本番公開には使わず、第8章の説明に沿ってDB上のパスワードハッシュ検証へ置き換えてください。