[基本環境]
- Debian 12 (amd64):Host(VM)
- Python 3.11:Host(VM)
- Ubuntu 22.04(amd64):Guest(Container)
- Python 3.11:Guest(Container)
[やりたいこと]
- Fletを基礎にしたウェブアプリ開発の基盤環境を作りたい
[注意]
[Flet環境の構築手順]
- ホストOS上にDockerコンテナを展開する
※ コンテナ名をfletにしている
$ docker pull ubuntu:22.04
$ docker run -itd --privileged -p 80:80/tcp --name flet ubuntu:22.04
$ docker exec -it flet /bin/bash
- Fletプログラミング用のユーザを作成する
※ ここから先はコンテナ(flet)内での手続き
※ ユーザ名をfuserにしている
$ apt update
$ apt upgrade
$ apt install sudo
$ adduser fuser
$ usermod -G sudo fuser
$ su - fuser
- Flet環境を構築する
※ 2の続きなので、ここもコンテナ内での手続き
※ python仮想環境名をenvにしている
※ Flet環境名をflet-testにしている
$ sudo apt install nano python3.11-venv pip git
$ python3.11 -m venv env
$ source env/bin/activate
$ pip install flet
$ flet create flet-test
$ editor flet-test/src/main.py
main.pyの一番下の行にある
ft.app(main)を
ft.app(target=main,view=None,port=8000)に変更して上書き保存する
$ sudo apt install apache2 systemctl
$ sudo editor /etc/apache2/conf-available/reverse_proxy.conf
reverse_proxy.confの中に、以下の内容を書いて保存する
<IfModule mod_proxy.c>
ProxyRequests Off
<Proxy *>
Require all granted
</Proxy>
ProxyPass /ws ws://localhost:8000/ws
ProxyPassReverse /ws ws://localhost:8000/ws
ProxyPass / http://localhost:8000/
ProxyPassReverse / http://localhost:8000/
</IfModule>
$ sudo a2enconf reverse_proxy
$ sudo a2enmod proxy proxy_http
$ sudo systemctl restart apache2
- Flet環境を起動する
※ 3の続きなので、ここもコンテナ内での手続き
$ python3.11 flet-test/src/main.py &
PCのウェブブラウザを開いて、
http://127.0.0.1/ または
グローバルIPを持っているなら、127.0.0.1をグローバルIPにする
に接続すると、Fletの実行結果を確認できるはず
- Flet環境を停止する
※ 4の続きなので、ここもコンテナ内での手続き
$ ps -aux | grep python
このコマンドを実行すると
fuser <数字> ..略.. python3.11 flet-test/main.py
という行があるはず
<数字>は、その都度、確認すること!
$ kill -9 <数字>
[Fletプログラミング]
- main.pyを編集すると、実行結果が変わります
- プログラム例は、別の記事でまとめたいと思います
Read more →
[基本環境]
[やりたいこと]
- TeXソースファイルの中に全角文字があるかどうかをチェックしたい
[プログラムの使い方]
- 以下のソースコードをisHarfCheck.pyという名前で保存したと仮定する
- sample.texという名前のTeXソースファイルをチェックすると仮定する
- このとき、以下のコマンドで実行できる
$ python isHarfCheck.py sample.tex
[ソースコード]
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
|
import re,sys
def isHarf(value):
return re.match(r"^[\x20-\x7E]+$", value) is not None
def isEnter(value):
return re.match("^\n$", value) is not None
def isHarfCheck(file):
fid = open(file, "r")
list = fid.readlines()
line = 1
flag = 0
for value in list:
if isHarf(value)!=True:
if isEnter(value)!=True:
print("l."+str(line)+": "+value)
flag = 1
line = line + 1
fid.close()
return flag
args = sys.argv
flag = isHarfCheck(args[1])
print("----------")
print("msg> Checked '"+args[1]+"'.")
if flag!=0:
print("msg> Double-byte characters APPEAR in the text.")
else:
print("msg> Double-byte characters do NOT appear in the text.")
|
Read more →
[基本環境]
[注意]
- PythonでCGIは…と思う人にはお勧めしません
[nginxとfcgiwrapのインストール]
- sudo apt update
- sudo atp upgrade
- sudo apt install python3 nginx-full fcgiwrap vim
- sudo vi /etc/nginx/fcgiwrap.conf
- cd /var/www
- sudo mkdir cgi-bin
- sudo chmod 755 cgi-bin
- sudo vi /etc/nginx/sites-availabel/default
server{…}の中に、include fcgiwrap.conf; を追加する
- sudo service nginx restart
- sudo service fcgiwrap restart
- cd cgi-bin
- sudo vi test.py
- sudo chmod 755 test.py
[CGIの動作確認]
- http://IPアドレス/cgi-bin/test.py
Read more →
[基本環境]
- Python 3.7.3
- Docker 19.03.8
[注意]
- Docker SDK for Pythonを基にしたDocker制御ではない
- Subprocessを基にしたDocker制御である
- Dockerのオプションを多様したいなら、結局、Subprocessに落ち着く
[Dockerコンテナ一覧の取得]
- Dockerコマンドなら
- Pythonコードなら
- import subprocess
- comp = subprocess.run([‘docker’, ‘ps’, ‘-a’], encoding=‘utf-8’, stdout=subprocess.PIPE)
- print(comp)
[Dockerコンテナの起動]
- Dockerコマンドなら
- docker run -itd --priviledged -p 80:80/tcp --name websrv debian:stable
- Pythonコードなら
- import subprocess
- comp = subprocess.run([‘docker’, ‘run’, ‘-itd’, ‘--priviledged’, ‘-p’, ‘80:80/tcp’, ‘--name’, ‘websrv’, ‘debian:stable’], encoding=‘utf-8’, stdout=subprocess.PIPE)
- print(comp)
[まとめ]
- subprocess.runの第一引数のリストにコマンドとオプションを列挙することで、オプションが増えても気にせず実行できる
Read more →
[基本環境]
- Debian 10.3.0 (amd64)
- Docker 19.03.8
[注意]
[Dockerコンテナの展開]
- mkdir /home/ユーザ名/workspace
- ホストのディレクトリをコンテナでマウントするための準備
- ユーザ名は各々の環境に合わせて置き換える
- docker run -itd --privileged -v /home/ユーザ名/workspace:/mnt --name wordcloud debian:stable
- docker exec -it wordcloud /bin/bash
[コンテナ(wordcloud)内での手続き]
- apt update
- apt install python-pip python3-pip
- pip3 install wordcloud
- apt install vim
- cd /mnt
- vi sample.py
- python3 sample.py
Read more →