IT教育訓練パパの研究日誌

育児や、データサイエンス系のノウハウや記事、学生へのかかわりで得たこと等、感動したことを書いていきたいです。よろしくお願いいたします。

AWSに、phpmyadminとApatchとTomcatとMySQLを導入する方法

AWS上にwebサーバを立て、アプリケーション実行が必要だったのですが
いろいろと環境構築ではまりました。
他の人がはまらないとうれしいと思い、筆をとりました。
ご参考になれば幸いです。

本記事を読んでわかること

AWSのEC2環境で、下記パッケージのインストールができるようになる

項番 ソフトウェア バージョン
1 amazon linux 5.10.130-118.517.amzn2.x86_64
2 Apache Apache/2.4.54
3 Tomcat 8.5
4 MySQL 8.0.30
5 phpMyadmin 5.2.0

はまりポイントを交えて説明します。

EC2のサーバ設定の確認

下記情報をサーバ設定画面から押さえておく。
情報の掲載場所は、図に示す通りである。

  • パブリック IPv4 DNS
  • セキュリティグループルール
    EC2サーバ設定

Apacheのインストール

yumで下記のコマンドをタイプし、インストールする。

sudo yum check-update
#Apacheをインストール
sudo yum install httpd
sudo service httpd start
# EC2が再起動した際にApacheも自動起動するように設定
sudo systemctl enable httpd
# Apacheが起動したか確認
sudo systemctl status httpd

上記コマンドを打った後、ブラウザのURLに下記を打ち込み
Apacheの確認画面が出たら成功

http://パブリックIpV4DNS

Apacheの確認画面


Tomcatのインストール

AWS独自のリポジトリからインストールする。
yumでも可能だが、versionが7と古くなるので注意

#Tomcatインストール
sudo amazon-linux-extras install tomcat8.5
#Tomcatを起動
sudo systemctl enable tomcat
sudo systemctl start  tomcat
#Tomcatのトップページを閲覧するために必要
sudo yum install tomcat-webapps admin-webapps


上記コマンドを打った後に下記をURLに打つと、tomcat確認ページが閲覧できれば成功

http://パブリックIpV4DNS:8080

tomcat確認ページ

「参考にしたページ」 ありがたかったです。
http:// https://note.com/hironobuu/n/n1cb0eef6258d


phpMyadminのインストール

1 依存関係ファイルの導入 ?AWSだと導入済み?

AWSだと事前に導入されている可能性があったが、念のため実行

sudo yum install php70-mbstring.x86_64 php70-zip.x86_64 -y
2 phpの最新バージョン(7.2)をインストール

まずパッケージを確認する。

#AWSで導入できるパッケージを確認
amazon-linux-extras
amazon-linux-extras info php7.2

パッケージ確認

パッケージをインストールする

#パッケージをインストール
sudo amazon-linux-extras install php7.2

追加のパッケージインストールが下記図のように示されたのですべてyumでインストール

追加パッケージの確認

sudo yum install php-cli
sudo yum install php-pdo
sudo yum install php-fpm
sudo yum install php-json
sudo yum install php-mysqlnd


3 phpMyAdminのファイルをダウンロードし展開
#フォルダに移動
cd /var/www/html
sudo wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
#phpMyAdminフォルダを作って展開
sudo mkdir phpMyAdmin
sudo tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1


ブラウザ上でphpMyAdminが動作しているか確認する。

http://パブリックIpV4DNS/phpMyAdmin/

phpMyAdminのログイン画面


4 phpに依存関係のあるファイルをインストールする
sudo yum install php-mbstring -y


ログインユーザは後述するMySqlで設定したユーザであるため、このまま、MySQL導入に進む。
※設定を反映する時は、Apatchを再起動すること

systemctl restart httpd


下記ページが参考となりました。ありがたいです。

【AWS】EC2でphpMyAdminを利用し、RDSへアクセス - Qiita

phpMyAdminの設定(CentOS 7) | さくらインターネットのVPS設定マニュアル


MySQLのインストール

1.下記コマンドを実行してインスタンス作成初期からインストールされている MariaDB用パッケージを削除する
sudo yum remove mariadb-*
2.mysqlのパッケージが存在するリポジトリを指定

リポジトリ指定は、下記をURLをみて、指定する MySQL :: Download MySQL Yum Repository

sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
3.mysqlパッケージのインストール
#  GPS鍵の登録 これをしないとインストール中に怒られる
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
sudo yum install --enablerepo=mysql80-community mysql-community-server
sudo yum install --enablerepo=mysql80-community mysql-community-devel


4.mysqlに関係のあるファイルを抽出
sudo yum list installed | grep mysql

関係あるファイル一覧

5.サービス起動
#logファイルを作成
sudo touch /var/log/mysqld.log
#サービス起動
sudo systemctl start mysqld 
#サービスをサーバ起動時に実行する設定
sudo systemctl enable mysqld


6.初期ユーザとパスワードの調査

ログから初期ユーザとパスワードを確認するため、ログファイルを見る。

sudo less /var/log/mysqld.log

と打つと、下記のようなログが出てくるので、これが初期パスワード

2022-08-25T04:44:16.126478Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: w:BeRd*0pej!
#ユーザ名:root
#パスワード:w:BeRd*0pej!


念のため、サーバを停止し、再起動する。

sudo service mysqld stop
sudo service mysqld start


7.初期ユーザとパスワード、認証時の暗号方式の変更

mysqlへ接続し、下記コマンドを打つ。

mysql -u root -p
>password 先ほどログファイルに出力されていた初期パスワードを入力する。

#パスワードの変更
#AAAAAAAではだめで、大文字アルファベット、数字、記号などの組み合わせが求められるが便宜上AAAとする。
ALTER USER 'root'@'localhost' identified BY 'AAAAAAAAAAA';

#ユーザ認証方式の変更 phpMyAdminにログインできるようにするため
sudo mysql -u root -p

#認証用ユーザ管理のデータベースに移動
mysql > use mysql
mysql> select user, host, plugin from user;
mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'AAAAAAAAAAA';

下記のような結果になればよい。

SQLユーザパスワードの認証方式の変更


下記がとても参考になりました。ありがたいです。

AWS EC2 AmazonLinux2 MySQLをインストールする - Qiita

[CentOS] MySQLをアップデート時にGPG鍵エラーが出た時の対処法 – 株式会社シーポイントラボ | 浜松のシステム・RTK-GNSS開発

AWS EC2 AmazonLinux2 MySQL rootユーザの初期パスワードの確認方法 - Qiita

【MySQL】PHPで接続できないとき SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client | 困った時に思い出したい

pythonの標準入出力についてメモ

paizaで遊んでみたけど、標準入力がわからない。。。。。

基本知らなかったな、反省ということで、

pythonの標準入力についてまとめておこうと思う

この記事を読んでわかること

  • pythonの標準入力とはなにか
  • paizaなどのスキルチェック問題の標準入力を取得する方法の一例

pythonの標準入力とは

標準入力とは、ユーザがコマンドプロンプト等のターミナルに、入力したもの。 pythonは対話型言語であり、ユーザが、コマンドプロンプト等のターミナルに入力を入れることができる。

標準入力の取得方法の一例

  • 入力が一つの場合
#例)入力:10
value = int(input())
  • 入力が2つ以上で、何かの文字で区切られている場合
#例)入力:10 12
value = input().split(' ')
#value[0]は10
#value[1]は12

ただし、valueはリスト型になってしまうので気を付けること

バーコード読み込みをできるようにしてみた

この記事でわかること

  • pythonを使ったバーコード読み取りライブラリ(pyzbar)の導入方法
  • ubuntuで上記ライブラリを導入する際の注意点
  • バーコード読み取り方法とその結果  

    取り組んだ理由

  • 大量な本の管理が必要となったが、本の分類をどうしたらよいかわからない。
  • 本には、大・中・小分類が降られているらしいのでそれを流用したい。
  • バーコード読み取って、情報を取得したい  

    開発環境

  • ubuntu "16.04.6 LTS (Xenial Xerus)"  ※windows on linuxを利用
  • python 3.5.2  

    バーコード読み取りライブラリ(pyzbar)の導入

    下記手順を行う。

  • sudo pip install pyzbar

  • sudo apt install zbar-tools
  • sudo pip install Pillow  

注意点  上記の2を行わないと、pyzbarのdecodeライブラリを呼び出せないので、注意

 

バーコード画像とコード

f:id:hsato2011:20180930215430j:plain
バーコード画像

#! env python
# -*- coding: utf-8 -*-

import os
import sys
from pyzbar.pyzbar import decode
from PIL import Image

# Filename: main
__author__ = 'hsato'
__date__ = "2021/03/23"

def main():
#change directory path to working path
os.chdir(os.path.dirname(os.path.abspath(sys.argv[0])))
image = "barcode.jpg"
data = decode(Image.open(image))
print(data[0][0].decode('utf-8', 'ignore'))
return

if __name__ == '__main__':
main()

読み取り結果

1234ABXDGEAEDA56788  

 

次回

バーコード情報から、本の分類情報を取得する  

DeepLearningフレームワーク バージョン違いによるChainerのネットワーク定義

Chainer便利!でも、バージョン変えたら動かなくなった!!

自分がはまった点をメモします!

 

chainer v1でネットワーク定義したものを、chainer v2で動かそうとしたら

TypeError: 'tuple' object is not callable がでた。。

がでた!

 

解法は、ネットワーク定義の , を消すだけ!
まえは動いてたので、すごくはまった。

 

参考にしたページを下記に貼ります。

本当に助かりました.Qiitaとかみんな技術メモすごい。見習わないと

qiita.com

chainer バージョン v1 v2 ネットワーク定義 init

DeepLearningフレームワーク Chainerではまったこと

PFNが提供するChainerですが、バージョンの移り変わりが激しい(最新情報に追従しているのでうれしいこと)ため、仕様がかわってることがあるので、メモ代わりに残します。結構、気づかないとはまりますね。

 

dropoutなどを入れてる場合は,Evaluatorの挙動に注意

VGGベースのネットワークで下記のようなものを使う場合、Evaluatorからforwordが呼ばれるので、テスト時にdropoutが有効になってしまうので毎回結果が変わる。

テスト時にdropoutを無効にするにはchainer.configで条件分岐を記載すること。

 

<https://github.com/chainer/chainer/blob/master/examples/cifar/models/VGG.py>よりネットワーク構造部を引用

 

<https://chainerfan.jimdo.com/chainer-v3-%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A8%B3/core-functionalities/chainer%E3%81%AE%E8%A8%AD%E5%AE%9A/>

上記にchainer.configで条件分岐する例が記載されている。Example参照

 

class VGG(chainer.Chain):
   
  """A VGG-style network for very small images.
   
  This model is based on the VGG-style model from
  http://torch.ch/blog/2015/07/30/cifar.html
  which is based on the network architecture from the paper:
  https://arxiv.org/pdf/1409.1556v6.pdf
   
  This model is intended to be used with either RGB or greyscale input
  images that are of size 32x32 pixels, such as those in the CIFAR10
  and CIFAR100 datasets.
   
  On CIFAR10, it achieves approximately 89% accuracy on the test set with
  no data augmentation.
   
  On CIFAR100, it achieves approximately 63% accuracy on the test set with
  no data augmentation.
   
  Args:
  class_labels (int): The number of class labels.
   
  """
   
  def __init__(self, class_labels=10):
  super(VGG, self).__init__()
  with self.init_scope():
  self.block1_1 = Block(64, 3)
  self.block1_2 = Block(64, 3)
  self.block2_1 = Block(128, 3)
  self.block2_2 = Block(128, 3)
  self.block3_1 = Block(256, 3)
  self.block3_2 = Block(256, 3)
  self.block3_3 = Block(256, 3)
  self.block4_1 = Block(512, 3)
  self.block4_2 = Block(512, 3)
  self.block4_3 = Block(512, 3)
  self.block5_1 = Block(512, 3)
  self.block5_2 = Block(512, 3)
  self.block5_3 = Block(512, 3)
  self.fc1 = L.Linear(None, 512, nobias=True)
  self.bn_fc1 = L.BatchNormalization(512)
  self.fc2 = L.Linear(None, class_labels, nobias=True)
   
  def forward(self, x):
  # 64 channel blocks:
  h = self.block1_1(x)
  h = F.dropout(h, ratio=0.3)
  h = self.block1_2(h)
  h = F.max_pooling_2d(h, ksize=2, stride=2)
   
  # 128 channel blocks:
  h = self.block2_1(h)
  h = F.dropout(h, ratio=0.4)
  h = self.block2_2(h)
  h = F.max_pooling_2d(h, ksize=2, stride=2)
   
  # 256 channel blocks:
  h = self.block3_1(h)
  h = F.dropout(h, ratio=0.4)
  h = self.block3_2(h)
  h = F.dropout(h, ratio=0.4)
  h = self.block3_3(h)
  h = F.max_pooling_2d(h, ksize=2, stride=2)
   
  # 512 channel blocks:
  h = self.block4_1(h)
  h = F.dropout(h, ratio=0.4)
  h = self.block4_2(h)
  h = F.dropout(h, ratio=0.4)
  h = self.block4_3(h)
  h = F.max_pooling_2d(h, ksize=2, stride=2)
   
  # 512 channel blocks:
  h = self.block5_1(h)
  h = F.dropout(h, ratio=0.4)
  h = self.block5_2(h)
  h = F.dropout(h, ratio=0.4)
  h = self.block5_3(h)
  h = F.max_pooling_2d(h, ksize=2, stride=2)
   
  h = F.dropout(h, ratio=0.5)
  h = self.fc1(h)
  h = self.bn_fc1(h)
  h = F.relu(h)
  h = F.dropout(h, ratio=0.5)
  return self.fc2(h)
 

はてなブログで、アフィリエイト登録まで

概要

アフィリエイト開始手順と各手順で必要な作業がわかりにくくなぁとおもったので
はてなブログアフィリエイトを始める手順と作業をまとめてみました!
ご参考になれば幸いです。

 

アフィリエイト開始までの手順

 

アフィリエイト会社の選定

クリック報酬型、インプレッション型広告型、クリック型広告型、成果報酬型がある。

ノウハウ系のブログだとクリック報酬型が必須になるはず。

クリック型広告型、成果報酬型の場合は商品・サービス紹介が必須。


1.クリック報酬型:読者が自ブログに来訪しただけ(クリック報酬型)で報酬が支払われる。

2.インプレッション型広告型:広告が表示されることで報酬が支払われる

3.クリック型広告型:広告がクリックされることで報酬が支払われる。

4.成果報酬型:読者が自ブログに掲載された広告から購入すると支払われる。

  • google Adsense(クリック報酬型)
    審査が厳しい、1クリックあたり単価が高い。20円程度とのこと
    独自ドメインでないと参加できない はてなブログを使うならpro版

  • 忍者Admax(クリック報酬型)
    審査なし、1クリックあたり単価が低い。Adsenseの半分以下とのこと

  • Fluct(クリック報酬型)
    審査あり、クリック型広告を1つにまとめて効果が高いものを最適化して配信。
    他のクリック型報酬サービスに登録する必要あり。

  • Amazonアソシエイト(成果報酬型)
    審査あり。普段買い物しているamazonアカウントがあれば大丈夫?

  • 楽天アフィリエイト(成果報酬型)
    審査なし。楽天IDが必要

クリック報酬型についての詳細は下記サイトが参考になる。

gekkan-fukugyou.jp

 

 

 

アフィリエイト会社からID取得 

amazonアフィリエイト

amazonアカウントが必要。

アカウント取得とアフィリエイト設定方法は下記の方がかなり詳しく記載してくださっています。

gyakutenn.hatenablog.com

 

楽天アフィリエイト

下記サイトの方が詳しく記載してくださっています。

注意事項は、ヘルプをクリックしないと、アフィリエイト用の登録サイトにいけなくなっていること(2019.06.20現在)

affiriate-manual.com



 

・忍者admax
忍者admaxwebサイトにアクセスし、ユーザIDを取得。
その後、忍者admaxを、上記サイトで作成した後に、はてなブログをカスタマイズする
下記サイトの方が詳しく記載してくださっています。

www.ninja.co.jp

 

A8.net 

 

その他ノウハウ

 ブログ来訪者を増やすため、ブログ村なるものに登録しておくといいらしい(調査中)

 

アフィリエイト はてなブログ 初心者

ツリー構造を出すコマンド

仕事先のサーバにファイルが適当に詰め込んであって

どこのファイルを見ればよいのか,どんなルールでディレクトリ構造になってるのか

全然理解できない.

とりあえず一発でフォルダまで飛べるようになるのと,ディレクトリ構造を可視化したい.

 

調べてみたら,フォルダ構造を画面に出力できるコマンドや,シェアウェアVectorで発見した.

お金とんのか~残念

 

自分がやりたいこととしては,以下の3つ.2まで最低限できればいいな.

 

1.フォルダの階層構造の可視化

2.可視化したところにリンクを張って,飛べるようにする

3.可視化したフォルダパスにコメントつける(ここは,お笑いネタフォルダみたいな)

 

1については,コマンドプロンプトのtreeコマンドで解決

2.については,エクセルを使いたい.

バッチファイルとVBAの組み合わせでできるんじゃないだろうか?

手順は以下の通り.

 

a.treeで取得したデータをテキストに書き出す

b.aをもとにファイルパスを作成

c.aとbをもとに,エクセル上でフォルダの木構造とハイパーリンク貼る

 

あとは,開発時間との兼ね合いかな.

3については,もし自動更新とかするんだったらコメント消えそう.

別テキストに吐き出してバージョン管理?