->
昔は設定ファイルを色々変えてた記憶があるのですが、今は設定ファイルをコピーするのがベターなんですかね?
cp /usr/share/zoneinfo/Japan /etc/localtime
シンボリックリンクを貼るだけでもいいらしいですが、まあ。
->
昔は設定ファイルを色々変えてた記憶があるのですが、今は設定ファイルをコピーするのがベターなんですかね?
cp /usr/share/zoneinfo/Japan /etc/localtime
シンボリックリンクを貼るだけでもいいらしいですが、まあ。
django2をec2のapacheで動かします。とりあえずvenvを起動。
1 2 3 4 5 6 7 8 9 10 11 |
python用、pip用にyumで色々入れます。 $ sudo yum install python3 python3-devel gcc make httpd-devel 今回mysqlも使っていたのでこれも。 $ sudo yum install mysql-devel $ pip install -r requirements.txt 使っているpkgによっては他にも色々入れなくてはいけないでしょうね。 |
djangoでapacheでlocalhostで動かしてみよ、と思っただけで、数時間経過しました笑
いやー、本当このあたりがややこしくて面倒ですね。私みたいにここでへこたれそうな人たちのためにメモを残しておきます。
とりあえず今起動まで出来た設定です。
こういうの考えるとPHPはいかに優しいかというのが身にしみますね。
・プロジェクトのために作ったディレクトリ:project
project
–project
–mysite
–blog
–static
みたいな感じですね。
・venvの環境:venv
として読み替えてください。
httpd.confに、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
LoadModule wsgi_module /usr/local/var/www/project/venv/lib/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.cpython-37m-darwin.so WSGIScriptAlias / /usr/local/var/www/project/project/wsgi.py WSGIPythonPath /usr/local/var/www/project/venv/lib/python3.7/site-packages WSGIPythonHome /usr/local/var/www/project/venv WSGIDaemonProcess localhost python-path=/usr/local/var/www/project/project WSGIProcessGroup localhost DocumentRoot "/usr/local/var/www/project/project" <Directory "/usr/local/var/www/project/project"> <Files wsgi.py> Require all granted </Files> </Directory> Alias /static /usr/local/var/www/project/static <Directory /usr/local/var/www/project/static> Require all granted </Directory> |
です。
どれが何の設定、というのはおいおい追っていきます・・
あ、後、mysqlを動かすためにpipで
PyMySQL
を入れていたのですが、apacheだと、
mysqlclient
を要求されたので、pip installしました。
久々にmacのhomebrewでapache起動したら、起動方法分かりやすくなってますね。apacheというかbrewのupdateですね。upgradeしたら、
The default ports have been set in /usr/local/etc/httpd/httpd.conf to 8080 and in
/usr/local/etc/httpd/extra/httpd-ssl.conf to 8443 so that httpd can run without sudo.To have launchd start httpd now and restart at login:
brew services start httpd
Or, if you don’t want/need a background service you can just run:
apachectl start
brew services start hoge
なんてのが出来たんですね。
$ brew services start httpd
==> Tapping homebrew/services
Cloning into ‘/usr/local/Homebrew/Library/Taps/homebrew/homebrew-services’…
remote: Enumerating objects: 14, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 14 (delta 0), reused 9 (delta 0), pack-reused 0
Unpacking objects: 100% (14/14), done.
Tapped 1 command (44 files, 58.7KB).
==> Successfully started httpd
(label: homebrew.mxcl.httpd)
はー楽。今まで設定ファイルをload、unloadしてたのは格好悪いなと思ってたんですよね笑
何か繋がりにくい、となっていたhttpsのサイトが、mac high sieraのSafariでエラー「NSPOSIXErrorDomain:100」が出てびっくり。
他のブラウザでも繋がりにくかったりした。
どうも、Apacheからのhttp2用ヘッダーが届いたりプロキシ経由で削除されたりで失敗するらしい・・
https://qiita.com/ameyamashiro/items/8d4be0f11ffe12472052
ALBでhttp/2の属性をオフにすることで対処。
まさに仰るとおりだと思ったのでメモります。
https://qiita.com/NAKKA-K/items/7627b6a22f364941b989
最近物忘れがひどく笑
まだsuperuser以外のユーザを作ったこともないですが、大事だと思った。
そして、カスタム例としては
https://qiita.com/okoppe8/items/10ae61808dc3056f9c8e
で。参考になります。
AttributeError: ‘str’ object has no attribute ‘tzinfo’
ってエラーで、
・既存のテーブルをmodel.pyで使ってるから何かおかしかった?
・TimeZoneがAsia/Tokyoだから models.pyの models.DateTimeFieldの中で特殊なことをしなくてはいけない?
など色々考えたのですが、models.DateTimeFieldとか使う場合には、
from django.utils import timezone
がいる、というだけなのですよね・・(汗
散々検索してしまった。同じような人のためにメモを残しておきます。
表題の通り、mysql 8.0 にTSVを流し込めなかったのです。
ERROR 1148 (42000): The used command is not allowed with this MySQL version
バージョンはhomebrewで入れた8.0.12
mysql> select version();
+———–+
| version() |
+———–+
| 8.0.12 |
+———–+
1 row in set (0.01 sec)
で、クライアントとサーバに local_infile=1 を設定することで出来るようになりました。
$ mysql -u root –local_infile=1
mysql> SELECT @@local_infile;
+—————-+
| @@local_infile |
+—————-+
| 0 |
+—————-+
1 row in set (0.01 sec)mysql> SET persist local_infile=1;
mysql> SELECT @@local_infile;
+—————-+
| @@local_infile |
+—————-+
| 1 |
+—————-+
1 row in set (0.00 sec)
セキュリティ的なことですかね。流し込めなくなったのは。
今後のことも踏まえると、まあ最初からutf8mb4にしておくのがよいでしょう。
ちなみにうちのとこのmysqlは5.7.20でした。
my.cnfがそもそもなかったので
~/.my.cnf
に作ります。普通に /etc/my.cnf でも /usr/local/etc/ でもいいみたいです。
で、
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
character setと。
再起動します。
$ mysql.server reload
でもutf8mb4にならない項目があるんだよなあ。
で、結果mysqlを初期化したら全てutf8mb4になりました。
mysql> show variables like “chara%”;
+————————–+——————————————————+
| Variable_name | Value |
+————————–+——————————————————+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/Cellar/mysql/8.0.12/share/mysql/charsets/ |
+————————–+——————————————————+
8 rows in set (0.02 sec)
強引ですが・・
DockerでDjango動いたら幸せになるんじゃないかという青い鳥を求めました。
とりあえず公式のQuickStartをやってみます。
https://docs.docker.com/compose/django/
なんにしろvenvで仮想環境を構築。
$ python3 -m venv dd_project
$ cd dd_prioject
$ source bin/activate
pipでdjango入れておきます。
$ pip install --upgrade pip
$ pip install "django==2.0.1"
Dockerfile作れとのこと。
$ vi Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
psycopg2がいるらしいのでpipで入れておきます。
$ pip install psycopg2
requirements.txtを使うらしいので、作っときます。pipのいいところ。
$ pip freeze > requirements.txt
compose.ymlがいるとのこと。ここらへんのdocker設定、やったことあるはずなのにきちんと理解してないんですよね。。学ばねば。
$ vi docker-compose.yml
version: '3'
services:
db:
image: postgres
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
んで、docker-compose
$ docker-compose run web django-admin.py startproject composeexample .
これがよく分からないのであとで追わねば。まあwebサーバとしてrunして、djangoの新規プロジェクトを作ってる、っていうイメージの設定を書いてるんでしょね。
でup、と。
$ docker-compose up
これだ確かにlocalhost:8000でアクセスできます。
postgresも動いているっぽいです。
これでdbをrdsで動くようにして、サーバはdockerrunじゃなくてwebでって設定できればecsにあげるだけで動く幸せシステムができるんでしょか。
最近のコメント