Blog ページ1/2

サイトをFreeBSD11+python3.6+Bottleで作り直すメモ(12)-nginxとcertbotでリバースプロキシ

今日びのWebsiteはhttpsじゃないとダメとかいわれているので、別サーバ(FreeBSD12.1のルータ)にインストールしたnginxでリバースプロキシを動かしつつ、Let's Encryptでhttps化を試みる。

(続きあり)


サイトをFreeBSD11+python3.6+Bottleで作り直すメモ(11)-nginxとuWSGIで公開してみる

FreeBSDのポリシーが変わって2018年10月いっぱいでFreeBSD 10-Releaseは終了したとのことなのでタイトル変更。

これまではBottleが内蔵していたWebサーバで動作確認を行っていたが性能がいまいちなので実運用するなら適当なWSGIサーバを使ってね、とマニュアルにも書かれているので検討してみる。基本的にはh_kabocha氏によるBottle + uWSGI+ Nginx Quick Tutorialのやり方をそのまま使わせて頂いた。ここではFreeBSD環境特有の箇所のみ記載する。

(続きあり)


サイトをFreeBSD10+python3.3+Bottleで作り直すメモ(10)-ステータスコードとリダイレクト

サイトを作っていると、

といったことをやりたい場合がある。

Bottleでは、abort(ステータスコード, テキスト)redirect(リダイレクト先のURL, ステータスコード)という関数を使うことで上記のことを実現できるようになっている。具体的にはこんな感じ。

from bottle import route, run, abort, redirect

@route('/<filepath:path>')
def abort_and_redirect(filepath):
  if filepath=='404error':
    abort(404, 'Not Found')
  elif filepath=='old/contents':
    redirect('http://somewhere/new/contents', 301)

サイトをFreeBSD10+python3.3+Bottleで作り直すメモ(9)-Cookie

クッキーの設定

クッキーの設定にはresponse.set_cookieを使う。下の例ではpostメソッドで取得したフォームデータをmydomain.comドメイン共通のクッキーとして設定する。デフォルトではクッキーはすぐ消滅するとのことなので変数max_ageを使って期限を一年に設定している。

from bottle import route, run, post, request, response

@post('/set_cookie')
def set_cookie():
  max_age = 3600 * 24 * 365
  cookie = request.forms.getunicode('cookie')
  response.set_cookie('cookie', cookie,
    max_age=max_age,
    domain='mydomain.com',
    path='/')

クッキーの取得

ブラウザから送られるクッキーの取得はrequest.get_cookieを使う。

from bottle import route, run, request

@route('/get_cookie')
def get_cookie():
  cookie = request.get_cookie('cookie', default='')

サイトをFreeBSD10+python3.3+Bottleで作り直すメモ(8)-javascriptで夏時間

ブログなんかの作成/更新日時は日本時間で管理するつもりだが、「現地時間も併記できるとカッコいいよね」と思った次第。ささやかながら英語のコンテンツもあるしね。

表示できるようにしたいのは以下の3点。

あまりクライアントサイドのプログラミングって詳しく無いけど(むろんサーバサイドもせいぜいカジュアルレベルだけどそれ未満)、javascriptにうってつけの機能があるみたい。

DateオブジェクトのgetTimezoneOffset()メソッドがそれで、Dateオブジェクトが指す日時に対する標準時への時間差を分単位で示してくれるようだ(+09:00の日本時間なら-540)。夏時間かどうかを判別するルーチンがabout.comにあったのでそれをそのままありがたく使わせてもらおう[archive]

(続きあり)


サイトをFreeBSD10+python3.3+Bottleで作り直すメモ(7)-MariaDB:FULLTEXTインデックス

たたみラボさんのところの記事を元にMariaDBにFULLTEXTインデックスを設定してみた。

(続きあり)


サイトをFreeBSD10+python3.3+Bottleで作り直すメモ(6)-py-mecab

サイトを作るに当たって「やっぱ全文検索機能は欲しいよね」ということで調べてみた。どうやらMySQLのFULLTEXTインデックスを使うといいらしい。で、日本語でFULLTEXTインデックスを機能させるには、分かち書きのデータを用意しておく必要があるとのこと。コンテンツを作成、更新する際に分かち書きのデータを作成して保存するようにすればいいのかな

(続きあり)


サイトをFreeBSD10+python3.3+Bottleで作り直すメモ(5)-フォームの扱い

GETメソッドの場合

getメソッドの場合はrequest.queryを使う。

from bottle import route, run, request

@route('/')
def root():
  id = request.query.id

(続きあり)


サイトをFreeBSD10+python3.3+Bottleで作り直すメモ(4)-pymysql

手順としてはこんな感じ

準備

con = pymysql.connect(
        host='接続先のIPアドレス',
        port=ポート番号,
        db='データベース名',
        user='ユーザ名',
        passwd='パスワード',
        charset='utf8mb4')
cur = con.cursor()

connectメソッドとcursorメソッドを順番に実行。connectメソッドのcharsetはMySQL(or MariaDB)の設定に応じて適宜変更する。

(続きあり)


サイトをFreeBSD10+python3.3+Bottleで作り直すメモ(3)-とりあえず何か書いてみる

とりあえずお約束のHello, Worldでも。

(続きあり)



Note

本サイトのハイパーリンクの一部は、オリジナルのサイトが閉鎖してしまったため"Internet archive Wayback Machine"へのリンクとなっています。そのようなリンクにはアイコン[archive]を付与しています。

本サイトはCookieを使用しています。本サイトにおけるCookieは以下の三種類のみであり、Cookieの内容に基づいてサイトの表示を変更する以外の用途には用いておりません。