60歳からITエンジニアを目指す無謀なブログ

60歳で定年し、職種を変更してIT技術者を目指すブログです。

ロリポップレンタルサーバでFlask, GunicornレスポンシブWebの公開方法

ロリポップレンタルサーバを使用する前提です。(マネージドクラウドではありません)

python3は既にインストールされているのでインストールはFlaskだけで良いです。

コマンド pip install flask でホームディレクトリの配下に .loacal/bin/flask

がインストールされるのでこれにPATHを通しておきます。

 

次にWebページアクセスされるDocument_Root環境下を以下のように準備します。

-rw----r--      hacca.jp-LolipopUser 207  1月 24 19:16 .bash_profile

-rw----r--      hacca.jp- LolipopUser 138  2月 13 19:22 .htaccess

-rw-------     hacca.jp-LolipopUser 263  2月 13 19:28 helloFlask.py

-rwx------     hacca.jp-LolipopUser 114  2月 13 19:24 index.cgi

drwx---r-x    hacca.jp-LolipopUser  33  2月 13 19:15 templates

        |templateディレクトリ配下に

         -rw----r--  LolipopUser 107  2月 13 19:14 render.html

                              を置く

 

.htaccess の中身ーーーーーーーーーーーーーーー

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ /ここはindex.cgiまでのPATH/index.cgi/$1 [QSA,L]

 

index.cgiの中身ーーーーーーーーーーーーーーーー

#!/usr/local/bin/python3

from wsgiref.handlers import CGIHandler

from helloFlask import app

CGIHandler().run(app)

 

helloFlask.pyの中身ーーーーーーーーーーーーーー

from flask import Flask , render_template

app = Flask(__name__)

 

@app.route('/')

def hello():

    return '<h1>Hello World</h1>'

 

@app.route('/render')

def index():

    return render_template('render.html')

 

if __name__ == '__main__':

    app.run(debug=True)

 

render.htmlの中身ーーーーーーーーーーーーーーー

<!DOCTYPE html>

<html>

    <head>

    </head>

    <body>

    <h1>render template</h1>

    </body>

</html>

 

 

gunicorn 起動コマンド

$ gunicorn -w 1 -b 0.0.0.0:8080 helloFlask:app

[2023-02-13 19:38:11 +0900] [224470] [INFO] Starting gunicorn 20.1.0

[2023-02-13 19:38:11 +0900] [224470] [INFO] Listening at: http://0.0.0.0:8080 (224470)

[2023-02-13 19:38:11 +0900] [224470] [INFO] Using worker: sync

[2023-02-13 19:38:11 +0900] [224481] [INFO] Booting worker with pid: 224481

 

pyscript でレスポンシブにwebにデータフレームを表示

pyscriptを使うと簡単にwebページでレスポンシブ対応の

表示ができるらしいの、pandasのデータフレームを表示してみました。

 

なかなか、DFを表示するだけのサンプルがなくて、エラーの連続でしたが、

色々なサイトを

見て、以下のコードで動かすことができました。

id="csv"でElement("csv")と関連付けるのが重要でした。

 

表示は結構遅いですが、ローカルサイトの中でサービス場合なら

ユーザも待ってくれそうな感じですが、

本番環境で使うにはもっと早く処理されないと、待ち時間がストレスで

使えなさそうです。

 

---------------------------sample.html -----------------------

<html>
  <head>
    <title>data frame reader</title>
    <meta charset="utf-8">      #以下2行はpyscriptを使用するためのおまじない
    <link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
    <script defer src="https://pyscript.net/latest/pyscript.js"></script>
  </head>
  <body>
    <h1> my data frame read</h1>
    <p id = "csv"></p>  
    <py-config>
      packages = ["matplotlib", "pandas"]
    </py-config>

    <py-script>
      import pandas as pd
      import matplotlib.pyplot as plt
      from pyodide.http import open_url

      url = ("https://www.somwhere my csv repository/sample.csv")  <<--ここにcsvの場所
      DF = pd.read_csv(open_url(url))
      csv = Element('csv')     <- pyscript特有のコマンド?
      csv.write(DF.head())     <-     〃
    </py-script>
  </body>
</html>

EMACS リージョン関係

  • 矩形リージョンの設定
    c-SPCで矩形リージョンの先頭を定義
  • カーソルを動かして終点までもって行く
  • c-xを押した後に、r、dを順に入力で矩形リージョンが削除される

    他のコマンド
  • C-x r t矩形の先頭に文字を挿入
  • C-x r d矩形領域を削除
  • C-x r k矩形領域を削除して、キルリングに追加
  • C-x r yキルリングの矩形領域を貼り付ける
  • C-x r rレジスタに矩形領域をコピーする
  • C-x i i RETレジスタにコピーされた矩形領域を、貼り付ける

Apache でphp-fpm実行時のパーミッションで陥った問題

Linuxサーバの立ち上げ初心者です。備忘録として書いています。

 

あるサーバで動作していたプログラムを新しく立ち上げたサーバ環境にポーティングしたところPHPプログラムが動かなくなりました。

 

・新サーバは自分でAlmalinuxを初めてインストールしたところから始めました。

 

/var/www/html にhtmlソースを置いて、動作するところまでは問題ありませんが、

そのあと、いろいろ、directoryを作成してphpソースを置いたりするとすべてPermission denyが原因で動作できません。

 

ファイルや、directoryのパーミッションをchmod 777とかにもしても全く改善せず、

.hataccess の中で allow from all などを試しても改善せず。

途中ChatGPT君に聞いても答えは見つかりませんでした。

ふと、phpがどんなモードで動いているかについて説明しているサイトがあり、

そこで /etc/httpd/conf.d/ directory の存在を知りました。

 

そこでuserdir.conf ファイルの存在を知りChatGPT君に聞いてみました。

/etc/httpd/conf.d/userdir.conf は、Apache Web サーバーのユーザーディレクトリ設定ファイルです。この設定ファイルは、Apache によってユーザーアカウントごとに個別の Web スペースを提供するために使用されます。通常、ユーザーディレクトリは ~user/public_html のような形式で構成されており、ユーザーアカウントごとに個別の Web ページが配置されます。

この設定ファイルによって、ユーザーディレクトリの権限やアクセス制御、およびユーザーディレクトリ内の PHP スクリプトの実行方法などが制御されます。

と回答がありましたので、ドンピシャです。

 

とりあえずここまでを修正してみましたが、

まだ問題 access denyが残っています。

調査継続中です。

 

 

 

Windows11 にWSL使ってDebian Linuxをインストールして、pip3 pipenv構築まで

------------- Debian install -----------------

Windowsコマンドプロンプトにて

$>wsl --install --online [ENT]

NAME               FRIENDLY NAME
Ubuntu             Ubuntu
Debian             Debian GNU/Linux
kali-linux         Kali Linux Rolling
SLES-12            SUSE Linux Enterprise Server v12
SLES-15            SUSE Linux Enterprise Server v15
Ubuntu-18.04       Ubuntu 18.04 LTS
Ubuntu-20.04       Ubuntu 20.04 LTS
OracleLinux_8_5    Oracle Linux 8.5
OracleLinux_7_9    Oracle Linux 7.9

 

インストール可能なディストリビューションが表示される

 

$>wsl --install -D Debian   [ENT]  <<- インストール開始

インストール完了後にユーザ名、パスワードを設定する

------------------------------------------------

アイコン化される

 

アイコンを起動してDebian Linuxを起動

ーーーーーーpipenv 導入-------

Python3も入っていない場合

$>sudo apt-get update
$>sudo apt-get install python3

これでpython3が入る

 

--------------次にpipのインストール-----------------

$>sudo apt-get install python3-pip

 

次にpipenvのインストールこれは一般ユーザ権限良い

$>pip3 install pipenv

  WARNING: The script virtualenv is installed in '/home/usrname/.local/bin' which is not on PATH.

のワーニングが出るが問題ない。 .local/bin パスを追加すること

----------------------------------------------------------

 

 

 

 

 

 

 

Windows11 にWSL使ってDebian Linuxをインストールして、pip3 pipenv構築まで

------------- Debian install -----------------

Windowsコマンドプロンプトにて

$>wsl --install --online [ENT]

NAME               FRIENDLY NAME
Ubuntu             Ubuntu
Debian             Debian GNU/Linux
kali-linux         Kali Linux Rolling
SLES-12            SUSE Linux Enterprise Server v12
SLES-15            SUSE Linux Enterprise Server v15
Ubuntu-18.04       Ubuntu 18.04 LTS
Ubuntu-20.04       Ubuntu 20.04 LTS
OracleLinux_8_5    Oracle Linux 8.5
OracleLinux_7_9    Oracle Linux 7.9

 

インストール可能なディストリビューションが表示される

 

$>wsl --install -D Debian   [ENT]  <<- インストール開始

インストール完了後にユーザ名、パスワードを設定する

------------------------------------------------

アイコン化される

 

アイコンを起動してDebian Linuxを起動

ーーーーーーpipenv 導入-------

Python3も入っていない場合

$>sudo apt-get update
$>sudo apt-get install python3

これでpython3が入る

 

--------------次にpipのインストール-----------------

$>sudo apt-get install python3-pip

 

次にpipenvのインストールこれは一般ユーザ権限良い

$>pip3 install pipenv

  WARNING: The script virtualenv is installed in '/home/usrname/.local/bin' which is not on PATH.

のワーニングが出るが問題ない。 .local/bin パスを追加すること

----------------------------------------------------------

 

 

 

 

 

 

 

apache2 起動・停止

起動

sudo systemctl start httpd

 

停止

sudo systemctl stop httpd

 

自動起動(Boot時に自動でStartする)

sudo systemctl enable httpd

 

即時自動起動

sudo systemctl enable --now httpd

 

自動起動削除

sudo systemctl disable httpd

 

httpd 停止

sudo systemctl stop httpd

 

ステータス確認

systemctl status httpd

 

 

$>topコマンドで

 2194 root      20   0    6764   4692   3408 S   0.0   0.0   0:00.00 apache2
 2197 www-data  20   0 1998164  12252   2536 S   0.0   0.1   0:00.00 apache2
 2198 www-data  20   0 1998164  12252   2536 S   0.0   0.1   0:00.00 apache2

のようにプロセスが見える