3
3

More than 1 year has passed since last update.

Ubuntu 22.4 Flask 環境構築 

Last updated at Posted at 2022-09-11

スクリーンショット 2022-06-16 145821.png

スクリーンショット 2022-06-16 145914.png

スクリーンショット 2022-06-16 150038.png

スクリーンショット 2022-06-16 150216.png

ubuntu-desktop-04.png

ubuntu-desktop-05.png

ubuntu-desktop-06.png

ubuntu-desktop-07.png

ubuntu-2204-110.jpg

スクリーンショット 2022-06-16 151105.png

ubuntu-2204-112.jpg

再起動中

画面に表示されているエンターをクリック

ubuntu-2204-113.jpg

再起動完了画面

ubuntu-2204-120.jpg

ログイン画面

パスワードを入力

ubuntu-2204-121.jpg

ログイン成功時HOME画面

ubuntu-2204-122.jpg

画面拡大

スクリーンショット 2022-06-16 153251.png

スクリーンショット 2022-06-16 153329.png

スクリーンショット 2022-06-16 153355.png

ショートカット変更

image.png

image.png

image.png

ホスト⇔ゲスト間でコピペができるようにする。

スクリーンショット 2022-06-16 154314.png

スクリーンショット 2022-06-16 154433.png

image.png

image.png

ll コマンドでディレクトリ内のファイルを表示する

image.png

以下のファイルを実行する

image.png

実行コマンド

./autorun.sh

image.png

パスワードが効かれるので入力

スクリーンショット 2022-06-16 161222.png

以下の画面が表示されたらエンターキーを押す

image.png

「VBox_GAs_6.1.34」のディスクマークのアイコンを右クリックしてメニューを開き「取り出す」をクリックして「Guest Additions CDイメージ」のマウントを解除

image.png

VirtualBox本体の設定

image.png

image.png

image.png

再起動

再起動しないと有効になりません。

再起動コマンド

reboot

パッケージリストを更新

sudo apt update
sudo apt full-upgrade

Python 3のバージョンを確認

python3 -V

Pythinのバージョン管理ツール【pip】をいれる。

sudo apt install -y python3-pip

NumPyをインストールする

package_nameは、Web開発用のDjangoや科学計算用のNumPyなど、
任意のPythonパッケージまたはライブラリを参照できます。

pip3 install numpy 
プログラミング環境の堅牢なセットアップを確保するために、
パッケージと開発ツールをインストールする。

sudo apt install -y build-essential libssl-dev libffi-dev python3-dev

##### ステップ2 —仮想環境のセットアップ

仮想環境を使用すると、Pythonプロジェクト用にサーバー上に隔離されたスペースが確保できます。
これにより、各プロジェクトが、他のプロジェクトを中断させない独自の依存関係を持つことができます。

プログラミング環境をセットアップすると、
Pythonプロジェクトやパッケージのさまざまなバージョンの処理方法をより詳細に制御できます。
これは、サードパーティのパッケージを使用する場合に特に重要です。

必要な数のPythonプログラミング環境がセットアップできます。各環境は基本的に、
サーバーを環境として機能させるためのいくつかのスクリプトを含むサーバー上のディレクトリまたはフォルダーです。

Pythonでプログラミング環境を構築する方法はいくつかありますが、ここでは、
標準のPython 3ライブラリの一部であるvenvモジュールを使用します。次を入力してvenvをインストールしましょう。

sudo apt install -y python3-venv

flask インストール##

Flask インストール
pip3 install flask

Apache2とApacheでPython3を使えるようにするmodのインストール

pache2のインストール
sudo apt install apache2

apache2のバージョン確認
apache2 -v

.apache2の状態確認
sudo systemctl status apache2

.apacheの稼動を確認、IPアドレスを取得
sudo apache2ctl configtest

mod_wsgiのインストール

wsgiパッケージインストール


mod_wsgi(ウィズギー)は、PythonフレームワークとApache2を連携させるためのインターフェースモジュール。
wsgi無しでは、PythonをWebサーバーと連携できないので、インストールが必要。
※一応cgiを使うという手もある

sudo apt install libapache2-mod-wsgi-py3  
sudo apt-get install python3-pip apache2 libapache2-mod-wsgi-py3

##ファイル構成

root@Ubuntu:/var/www$ tree -l 
.                               
└── flask                    
    ├── flask_script.py    
    └── flask_app.wsgi           

1 directories, 2 files

##flaskアプリケーションの作成
ファイル名
flask_script.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

.wsgiファイルの作成

flask_app.wsgi

import os,sys
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))

from flask_script import app as application

Apacheの設定

sudo vim /etc/apache2/sites-available/flask.conf

# Flaskの設定ファイルつくる

flask.conf

<VirtualHost *:80>
    ServerName localhost
    WSGIDaemonProcess flask_app user=www-data group=www-data threads=5
    WSGIScriptAlias / /var/www/flask/flask_app.wsgi
    <Directory /var/www/flask>
        WSGIProcessGroup flask_app
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

プリケーションのディレクトリ以下が、www-dataがオーナーになるように所有者を変えておく。

sudo chown -R www-data:www-data /var/www/flask/

Apacheに読み込んでもらうために、シンボリックリンクを作成する。

sudo ln -s /etc/apache2/sites-available/flask.conf /etc/apache2/sites-enabled/flask.conf  

デフォルトの設定ファイルを読み込まれないようにする

sudo rm /etc/apache2/sites-enabled/000-default.conf  

Apacheを再起動

sudo systemctl restart apache2
sudo systemctl status apache2

もし、再起動の時に

「httpd.conf」の文法チェック方法(apachectl)
apachectl configtest

「httpd.conf」の文法チェック方法(apache2ctl)
apache2ctl configtest

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using localhost Set the 'ServerName' directive globally to suppress this message

というエラーが発生したら、以下を打ち込んで、もう一度再起動する

sudo echo ServerName $HOSTNAME > /etc/apache2/conf-available/fqdn.conf
sudo a2enconf fqdn


sudo apachectl restart
エラーが出なかったら、
http://localhost
にアクセスしてみてHello World!

と表示されれば成功

##共通テンプレートJinja2を利用する

Flaskには標準でJinja2というテンプレートエンジンが付いているので使ってみます。
templatesというフォルダを作る。そこに、htmlを置きます。

※インストールされていない場合は以下コマンド実行
sudo pip3 install Jinja2


##Jinja2の動作確認

from jinja2 import Template

template = Template('このサンプルコードは、 {{ title }}用です。')
result = template.render(title='Jinja2の動作確認')

print(result)


##MySQL8.0以降で接続できない場合は「認証プラグイン」を変更する

  1. ユーザーの認証方式の変更

ユーザーの認証方式を旧式の「mysql_native_password」に変更する。
ALTER USER 'ユーザー名'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスワード';

ALTER USER 'hiro'@'localhost' IDENTIFIED WITH mysql_native_password BY 'hirotada';

変更の確認をする。

SELECT user, host, plugin FROM mysql.user;


##データベースをSQLAlchemy

pip3 install sqlalchemy
Python用のSQLAlchemyというライブラリをインストール。


flask_bootstrapのインストール方法

pip3 install flask_bootstrap

使用方法

必要なライブラリのインポート

from flask import *

render_templateを使用するために記載

from flask import Flask, render_template #追加

#flask_bootstrapの使用 ※ 以下を追記
from flask_bootstrap import Bootstrap

アプリの設定 ・Flaskオブジェクトの生成

app = Flask(name)

#flask_bootstrapの使用 ※ 以下を追記
bootstrap = Bootstrap(app)

どのディレクトリ階層で実行する関数か設定

@app.route('/')
#関数名
def hello_world():
#実行内容 Hello, World! を出力
return "Hello, World!"

おまじない

if name == "main":
app.run(debug=True, host='0.0.0.0', port=8888, threaded=True)

※render_template
htmlファイルを動的に返す。
htmlファイルを表示しhtmlファイルに値を引数として渡す。

def main():
#name変数に【Flask】の文字列を代入
name = "Flask"

#players配列に「111」「555」「777」3種類の文字列を代入
players = ["111","555","777"]

#index.htmlファイルのname_value変数にname変数の値を代入
#index.htmlファイルのplayers変数にplayersの値を代入
return render_template("index.html",name_value = name,players = players)

CSS、JSファイルを読み込む

staticディレクトリの中に[CSS]ディレクトリと[js]ディレクトリを作成

┣ static/
┃ ┣ css/
┃ ┗ js/


##完成版フォルダー構成

├── pycache
│   └── flask_script.cpython-38.pyc
├── flask_app.wsgi
├── flask_script.py
├── static
│   ├── css
│   │   └── index.css
│   ├── images
│   │   └── index.jpeg
│   └── js
│   └── script.js
└── templates
├── index.html
├── layout.html
└── bootstrap.html


##参考サイト

UbuntuのApacheでFlaskを用いてPython3でWebアプリケーションを作る
https://blog.akashisn.info/entry/%3Fp%3D258

Python 3をインストールしUbuntu 20.04サーバーにプログラミング環境を設定する方法
https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-programming-environment-on-an-ubuntu-20-04-server-ja

Ubuntu 16.04 で Flask アプリケーションを動かすまでにやることまとめ
https://qiita.com/hoto17296/items/845850c8854dd18f6fff

Ubuntu環境でApache WSGI flaskなWebアプリケーションを構築する
https://lifeinprogram.com/2019/08/18/post-992/

Flaskの簡単な使い方
https://qiita.com/zaburo/items/5091041a5afb2a7dffc8

はじめての Flask #1 ~はじめてのウェブアプリ~
https://qiita.com/nagataaaas/items/d249c3905d41137cd510

はじめての Flask #2 ~POSTを受け取ろう~
https://qiita.com/nagataaaas/items/3116352da186df102d96

はじめての Flask #3 ~htmlをrenderしてみよう~
https://qiita.com/nagataaaas/items/4662237cfb7b92f0f839

はじめての Flask #4 ~データベースをSQLAlchemyでいじってみよう~
https://qiita.com/nagataaaas/items/5c7c9ec4813fea85c40c

はじめての Flask #5 ~JSONを返すWebAPIを書こう~
https://qiita.com/nagataaaas/items/24e68a9c736aec31948e

Invalid command WSGIDaemonProcess Deploy Django application on CentOS 6.7
https://stackoverflow.com/questions/33320889/invalid-command-wsgidaemonprocess-deploy-django-application-on-centos-6-7

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3