日記帳
本ページはプロモーションが含まれています
カテゴリー
Links
blog(ブログ)マスター
アンドロイドの巣
ゼロから始めるベランダ菜園
タイトル
ラジコン
2024年5月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

Django2 CGI handler + apache2.4 : メモ

執筆:2018.06.13
編集:2018.06.13


概要
python3.6 + django 2.0.6
  1. .htaccess に cgi用のエントリを追記する
  2. start-django.cgi を設置する(名称はなんでもいい)
    wsgi_emulate.py または wsgi_over_cgi.pyをimportする
  3. wsgi_emulate.py または wsgi_over_cgi.py を settings.py と同じフォルダに設置する
以上をすませて、アクセスすると CGIモードで動作する

基本的に wsgi_over_cgi.py 内の
from wsgiref.handlers import CGIHandler
from . import wsgi
app = wsgi.get_wsgi_application()
CGIHandler().run(app)
だけで動かないといけないのですが、django内の処理が間違っているために、環境変数名の変更 及び
PATH_INFO、FORCE_SCRIPT_NAMEの変更設定がwsgi_emulate.py または wsgi_over_cgi.py および setting.py内に追加されています。


IfModuleで条件指定しているため
wsgiモジュールが有効になった場合は自動的にwsgiで動作する

必要な設定
.htaccess

# 追加分
<IfModule !mod_wsgi.c>
<FilesMatch "\.(?i:pyc?)$">
order deny,allow
deny from all
# RewriteRule "" - [L,R=404]
</FilesMatch>

# wsgi_emulate.py 内で この値をもとに正しいURLを生成できるように成形される
setenv BASE_URI    /    # / or /pathtositetop
setenv SCRIPT_URL /    # / or /pathtositetop/

RewriteRule "^$" start-django.cgi [L,T=application/x-httpd-cgi]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule "." start-django.cgi [L,T=application/x-httpd-cgi]
</IfModule>

apacheが古くて、環境変数が渡らない場合は
start-django.cgi に以下を追加する
os.environ.setdefault("BASE_URI", "/") # / or /pathtositetop
os.environ.setdefault("SCRIPT_URL", "/") # / or /pathtositetop/
こちらに書き込んでいたほうが確実だろう

表示されない場合
  • start-django.cgi ファイルの実行権限がついているか確認する
  • djangoへのパスが通っているか?
    • インストールする場合
      pip3 install Django
    • 指定フォルダから読み込む場合
      スクリプト内で
      sys.path.append("パス")
  • pytzの確認
    pip3 install pytz
  • No module named '_sqlite3'
    sudo pkg install databases/py35-sqlite3
# https://www.djangoproject.com/download/
# https://pypi.python.org/pypi/pytz#downloads
2018.06.13

python3をインストール : さくらインターネット ライトプラン

さくらインターネットの
Ruby と Python は古すぎて使い物にならない
Ruby /usr/local/bin/ruby 1.8.7
Python /usr/local/bin/python 2.7.6
2018/06

ローカルのcygwinでバージョンを見ると
ruby 2.3.6
Python2  2.7.14
Python3  3.6.4

virtualboxにいれているテスト用のfreebsd9でも Python 2.7.13 が返ってくる(pkg upgradeとうったが最新だよっていわれ、もう更新できない。)

FreeBSD9は tlsv1 なので
最新のものに更新していない古いバイナリを実行すると
'SSLError(SSLError(1, '[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:833)'),)'
などのエラーが発生する

  さくらインターネットで使われている python 2.7.6はいつごろか追うと 2014Q3 ということがわかった。 2014Q4からは、2.7.8になっているので
4年以上も放置されているということになる
ということで、pythonを使いたい人はさくらインターネットの共有サーバーはやめておいたほうがいいでしょう。
OSのアップグレード待つか、新規契約して新しいサーバーに移るしかないですね。

注意点(リスク)
せっかくインストールしてもサーバーOSがアップグレードされると
.soファイルのリンク切れで
自前Buildアプリはすべてダウンしてしまうので気を付けましょう

さくらインターネットは FreeBSD9(FreeBSD 9.1) で
FreeBSD9のFreeBSD公式サポートはかなり前に終了していて(9.1:2014 年 12 月 31 日, 9シリーズ:最終 2016 年 12 月 31 日)
osのライブラリも古いので 自前buildは あまりお勧めしない

現在のFreeBSDのカレントブランチは 11 で 来年には12がリリースされる

perlの切り替えができるので、pythonでも切り替えは技術的には可能なはずなので
サポートに pythonの切り替え機能の要望を出したほうが無難でしょう

» 続きを読む

2018.06.12

PHP Laravel 5.6 のインストール

(1) サーバー要件
PHP7.1の最新版以降
必要なPHP拡張
OpenSSL PHP Extension
PDO PHP Extension
Mbstring PHP Extension
Tokenizer PHP Extension
XML PHP Extension
Ctype PHP Extension
JSON PHP Extension
この内容は、公式サイトで最新版を確認しよう

(2) インストール準備
composerが必要なのでない場合は、ダウンロードする
curl -o https://getcomposer.org/composer.phar

(3) インストール

最新版
php composer.phar create-project laravel/laravel --prefer-dist インストール先

バージョンを指定する場合
php composer.phar create-project laravel/laravel --prefer-dist インストール先 5.6

(例)
php composer.phar create-project laravel/laravel --prefer-dist laravel

(4) 更新
インストール先に移動後
php composer.phar update
を実行すると最新版に更新される


アクセス
インストール先/public にアクセスるとデフォルトのサイトが表示される。

この内容は、resources/views/welcome.blade.php
が表示されている

公開先の変更
インストール先/public が公開URLとなっているので、
公開フォルダを変更するにはこの内容をコピーして、index.php内のrequireされているパスをインストール先に向くように書き換えれば好きな位置に移動できる。


ページ(URI)の追加
ページは routes/web.php で一括管理されている。

Route::get('/demo/{name?}', function ($name=null) { return 'Hello'; });

を追加すると /demoにあくせすると Hello と表示されるようになる

404エラーにする場合は、return App::abort(404); を返すといいだろう
ページ移動は、Route::redirect('/移動元', URL::to('/移動先'), 301);
を利用する

詳しい設定はデフォルトのページからいけるDoccumentを参考にしよう。

テンプレート(blade)
デバッグ時にバージョンを表示するサンプル
@if (config('app.debug'))
Laravel {{ app()->version() }}
@else
@endif


2018.06.07

perl エラー 出力を ブラウザに表示する

use CGI::Carp qw(fatalsToBrowser);

1行を追加すると
エラーがログではなく、ブラウザに出力される

On/Offの詳しい制御方法は不明。

2017.03.08

さくらのレンタルサーバ 共有サーバ 2017/02
OSバージョン FreeBSD 9.1-RELEASE-p24 amd64
パッチを当てている仕様のようだ。

FreeBSD 9はというと 12月31日をもってOSサポートを終了している。

会社としては人的リソースとコストを考えるとOSのアップデートなんかしたくないだろう。

そこで、わざわざ、10,11からパッチを作って、9に当てるような非効率なことをするだろうか?となります。
簡単な不具合ならパッチで済ますだろう。

FreeBSD 10,11が主なブランチで、10は、.3なので もうすぐ終わるのでこれにはならないでしょう。
素人的に普通に考えると候補は 11.0, 11.1 または、来年リリースされる12ということになります

ブランチ リリース 分類 リリース日 保守終了予定日
releng/9.1 9.1-RELEASE Extended 2012 年 12 月 30 日 2014 年 12 月 31 日
releng/9.3 9.3-RELEASE Extended 2014 年 7 月 16 日 2016 年 12 月 31 日
releng/10.3 10.3-RELEASE Extended 2016 年 4 月 4 日 2018 年 4 月 30 日
releng/11.0 11.0-RELEASE n/a 2016 年 10 月 10 日
       
サーバーOSアップデートが来る可能性があります。
おそくても2018年の春までには来そうな気がします。

コンテンツのダウンがないかサイトのチェックが必要になるので
個人的には、アップデートはやめてほしいですね。

2017.02.18



PR

[PR]