haruki のすべての投稿

Ubuntu 14.04 Wine Heidisqlを使う

Wineのインストール

https://symfoware.blog.fc2.com/blog-entry-1400.html
を、参考にする

sudo apt-get install wine

ttf-mscorefonts-installerの設定が表示された時には
タブキーにて「了解」を選択しエンターキーを入力。

winecfg

で、インストールされたWineのバージンを確認

Wineについてのタブを開く
1.6.2

HeidiSQL
をダウンロード
10.xx.xx
だと、起動しなかったので、

https://heidisql.jp.uptodown.com/windows/download

9.3.0.4984

https://heidisql.jp.uptodown.com/windows/download/429381

を、ダウンロード

ダウンロードしたものを、右クリックでWine Windows プログラムローダで開く

一度、インストールして、競合し、不具合になる時は
フォルダーを削除かリネーム

find ./ -name "Heidi*" 

./.wine/drive_c/users/Public/Start Menu/Programs/HeidiSQL
あたり。

Conoha GUI環境を作ってみる

Conoha GUI環境を作ってみる

環境の選択

東京
1GB
Ubuntu 16.04 (64bit)

パスワード
ネームタグ変更

rootのパスワードを設定し

オプション ssh key

起動したら、IPを調べ

ssh -i /home/xxx/key-xxx-xx-xx-xx-xx.pem root@xx.xx.xx

で、端末に入る

root
XXXXパスワードでログイン

apt-get update
apt-get upgrade
Could not get lock /var/lib/dpkg/lock-frontend

のエラーがでたら

sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock

などで回避(一度に行わず、1行づつ確認)

たまに、問い合わせがあるが(y)で、回答

ポップアップ画面で問い合わせがでるが
そのまま「TAB」でOK

apt-get upgrade
の途中で、一度画面が切れたら
再度、ログインしなおし

Ubuntu 18.04で行ったら

Use ‘sudo apt autoremove’ to remove them.
のエラーとなったので

sudo apt-get autoremove

アカウント作成

adduser xxx

Enter password
Retype password

sudoを使えるようにする

usermod -G sudo xxxxxx

ユーザに切り替える

su - xxx

sudoが使えるか調べる

sudo ls /
sudo tasksel

taskselがないときは

sudo apt install tasksel

Lubuntu Desktop
をスペースで選択しTABでOKをリターン
(Ubuntu Cloud Image (instance) に入っているチェックはそのまま)

設定がはじまる

設定が完了したら

sudo aptitude -y install language-pack-ja-base language-pack-ja ibus-mozc
sudo update-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
source /etc/default/locale
sudo: unable to resolve host 

が、表示されるようであれば
https://qiita.com/ogomr/items/89e19829eb8cc08fcebb
を参考にして

sudo sh -c 'echo 127.0.1.1 $(hostname) >> /etc/hosts'
echo $LANG

と入力し、「jpa_JP.UTF-8」を確認

sudo reboot

画面がリセットされた場合は
再度ログイン

データのやり取り
端末は

ssh -i /home/xxx/key-2015-xx-xx-xx-xx.pem root@150.xx.xx.xx
sftp -i /home/xxx/key-2015-xx-xx-xx-xx.pem root@150.xx.xx.xx
cd /home/xxx

ubuntu14 python selenium

ubuntu14 python selenium
で、仮想環境を作ってみた

Python インストール

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update

エラーがでた場合、それに従い

sudo apt-get -f install
#sudo rm /var/lib/dpkg/lock

python3.6をインストール

#sudo apt-get install python3.6
sudo apt-get install python3.6-venv
python3.6 -m venv env
source env/bin/activate

パージョンを確認

python -V

python 3.4.0
あれ、だめだ

仮想から抜ける場合は

deactivate

もう一回やってみよう

python3.6 -m venv env00

source env00/bin/activate
python -V

python 3.6.8

できちる。
不思議だ

pipを最新にしておく

pip install -U pip

Seleniumをインストール

pip install selenium

Chronumeをインストール

最新で良い場合は

sudo apt-get install chromium-browser -y

バージョン確認

chromium-browser --version

起動確認

chromium-browser

Driverは以下から

https://launchpad.net/ubuntu/trusty/amd64/chromium-chromedriver/

taisyou

対象のDirverのページに飛んで

https://launchpad.net/ubuntu/trusty/amd64/chromium-chromedriver/64.0.3282.119-0ubuntu0.14.04.1
wget http://security.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/chromium-chromedriver_74.0.3729.169-0ubuntu0.16.04.1_amd64.deb
sudo dpkg -i chromium-chromedriver_74.0.3729.169-0ubuntu0.16.04.1_amd64.deb

対象のXX.deb
のURLを調べ(アドレスをコピー)
wget でダウンロード
sudo dpkg -iでインストール

wget http://launchpadlibrarian.net/354863673/chromium-chromedriver_64.0.3282.119-0ubuntu0.14.04.1_amd64.deb
sudo dpkg -i chromium-chromedriver_64.0.3282.119-0ubuntu0.14.04.1_amd64.deb

インストールされた事を確認

ls /usr/lib/chromium-browser/chromedriver

サンプル

vim sample.py

vimがインストールされていない場合は
インストール

sudo apt-get install vim
vim sample.py

iで挿入−モードで
以下をコピーし
Shift+Ctr+Vで、貼り付ける

from selenium import webdriver

driver = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver")
driver.get('https://google.co.jp')

esc+:wq
で、上書き終了

実行

python sample.py

エラーになった
ModuleNotFoundError: No module named ‘requests’

pip install requests

で、解消した

pip install mysql-connector-python

指定する場合?
うまくいかない

python3.6 -3.6 -m venv env36
source env36/bin/activate

3.7なら

sudo apt-get install python3.7-venv

python3.7 -3.6 -m venv env36
source env36/bin/activate

以下を参考にして、必要なバージョンのChronumeをダウンロード

https://qiita.com/maaaaaiiiisan/items/95c796f2e3dd446521b2


wget http://launchpadlibrarian.net/336698680/chromium-chromedriver_61.0.3163.79-0ubuntu0.14.04.1196_armhf.deb
sudo dpkg -i xxxxxxxxxxxxxxxxxxxxxxxxxx.deb

https://tech-blog.s-yoshiki.com/2018/04/71/

を、参考にして作ってみる

ヴァージョンを合わせる
http://chromedriver.chromium.org/downloads

https://google-chrome.en.uptodown.com/ubuntu/versions

https://chrome.en.uptodown.com/android/versions

以下の2つを照らし合わせる
https://google-chrome.en.uptodown.com/ubuntu/versions
https://chromedriver.storage.googleapis.com/index.html

例へば
ChromeDriver v2.11 (2014-10-07)
Supports Chrome v36-40
などで、行ってみる

走っているChrmeのバージョンを調べそれにあった、Driverを
ダウンロードすればいい

Chronumeの場合

Chromeをインストール

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

sudo dpkg -i google-chrome-stable_current_amd64.deb

インストールされたかコマンドラインで確認

google-chrome-stable

インストールされていない場合は

sudo apt-get install libappindicator1
sudo apt-get install libpango1.0-0 
sudo apt-get install libpangox-1.0-0
sudo apt-get install libindicator7
 
sudo apt-get update
sudo apt-get -f install --fix-missing

などで、対応

インストールされたかコマンドラインで確認

google-chrome-stable

Chromeドライバのインストール


https://chromedriver.storage.googleapis.com/2.31/chromedriver_linux64.zip
#unzip chromedriver_linux64.zip -d ~/bin/
sudo unzip chromedriver_linux64.zip -d /usr/bin/

Django RestでJsonデータを取り込む保存後変換しよとしたらエラーに

Django RestでJsonデータを取り込む

取り込んだデータをDBに書き込み、後でJsonを読み込んで
変換しようとしたらエラーになった

取り込んだ
post(self, request, format=None)
時点でJsonObjectになっているので
request.data
だと、シングルコーテーションになってしまう
JsonのStringにするには
json.dumps(request.data))
とする必要があった

class WebhookApi(APIView):
    def post(self, request, format=None):
#        d00=Tlog(json_string=request.data)
#   ↑↑ これだとNG
        d00=Tlog(json_string=json.dumps(request.data))
    d00.save()

Django データベース操作

Djangoでのデータベースにかんするメモ

1,データを新規にレコード追加し、追加されたレコードのIDを取得する方法

p = Parent.objects.create(parent_name=”見出し”)
d01=Node(parent_id=p.pk,node_name=’小見出し’)
d01.save()

2,getとfilterの使い分け
絞り込んだデータが1つならget
pk指定なら確実、重複のない、フィールドに文字を指定してもいい
結果が複数あるならfilter
データがない場合もfilter

d00 = A.objects.filter(feald=’xx’)
if len(d00)==0:
データがない時の処理

3,複合しぼりこみは、カンマで区切る(and処理)
d00 = A.objects.filter(feald_a=’aaa’,feald_b=’bbb’)

AWS EC2、Amazon Linux2でDjango+Nginx+uWSGIをたち上げる

AWS EC2、Amazon Linux2でDjango+Nginx+uWSGIで

開発できるような環境を作ってみました

行う事
1,EC2インスタンス作成
2,SSH接続
3,OS最新にupdate
4,Pythonインストール
5,仮想環境(venv)インストール
6,PIPアップバージン
7,Djangoインストール
8,プロジェクト作成
9,マイグレーション
10,サーバ起動
11,外部アクセス確認
12、ポート解放
13、外部アクセス確認
14.Nginxインストール
15,Nginx外部接続確認
16,ポート解放
17,uWSGIインストール
18,終わりに

1,EC2インスタンス作成
まず、EC2のインスタンスを作成します。

https://console.aws.amazon.com/console/
「コンソールへ」からログイン
AWS のサービスのサービスのEC2を選択
インスタンスの作成
1年間無料版でまずは、ためしので、Amazon Linux2を選択します。
Amazon Linux 2 AMI (HVM), SSD Volume Type 64 ビット (x86)
を選択 タイプt2.microを選択

2,SSH接続
端末からSSH接続にて作業を行います。
キーをダウンロードして、キーファイルの設定として
属性を読み込み専用にして、
chmod 0600
SSHで接続します

ssh -i "ダウンロードキー.pem" ec2-user@(パブリックDNS名)

(パブリックDNS名)は、ec2-x-x-x-x.us-east-2.compute.amazonaws.com
のようなものです。

3,OS最新にupdate

sudo yum update

4,Pythonインストール

Gitをインストール

sudo yum install git -y

Gitでpyenv読み込み、Pathを設定する

git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

関連をインストール

sudo yum install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel -y

pythonをインストール

pyenv install 3.6.2

3分ぐらいかかる場合もあります

pyenv global 3.6.2

pyenv rehash

python -V

Python 3.6.2  ←表示

仮想環境構築と有効化

python -m venv env
source env/bin/activate

pyenvを入れてから、venvで仮想は、なにか変な感じもしますが
venvで、バージョン毎の環境が作りやすいので。。。

6,PIPアップバージン

pip install -U pip

7,Djangoインストール

pip install django==1.11.17

インストールされたか確認

python
>>> import django
>>> django.get_version()
'1.11.17'  ←表示
>>> exit()

一応djangoのバージョンは1.11.17にしました

8,プロジェクト作成

django-admin startproject proj
cd proj
ls

manage.py proj   ←表示

cd proj
vim settings.py

i 挿入モード(iを入力)

ALLOWED_HOSTS = []
  変更(25行あたり、全てOKで。。)
ALLOWED_HOSTS = ['*']
ESC
:wq (書き込み終了)
cd
cd proj

python manage.py makemigrations
python manage.py migrate
python manage.py runserver (パブリックDNS名):8000
http://(パブリックDNS名):8000

で、ブラウザでアクセスしてみる
時計が周り続けて、なにも表示されない「このサイトにアクセスできません」

ポートを開けないといけない

awsダッシュボードのセキュルティ-グループから
インバウンド編集、ルール追加、
プロトコール:TCP,ポート範囲:8000、保存

http://(パブリックDNS名):8000

で、ブラウザでアクセスしてみる

It worked!
Congratulations on your first Django-powered page.

無事、Djangoの画面が表示された

14.Nginxインストール
python manage.py runserverで、キー入力できない時は
CTR-Cで、終了

sudo yum install -y nginx
エラー
To use, run
# sudo amazon-linux-extras install nginx1.12

指示に従いこちらで

sudo amazon-linux-extras install nginx1.12

nginxを起動する

sudo systemctl start nginx
http://(パブリックDNS名)

で、ブラウザでアクセスしてみる
「このサイトにアクセスできません」

ポートを開けないといけない

awsダッシュボードのセキュルティ-グループから
インバウンド編集、ルール追加、80、保存

8000はそのままにしておく
(後で閉じるように)

http://(パブリックDNS名)

で、ブラウザでアクセスしてみる

Welcome to nginx on Amazon Linux!

nginxの画面
それでは、Djangoとnginxを繋げるためにuWSGIを使ってみる

17,uWSGIインストール

pip install uwsgi

https://qiita.com/xKxAxKx/items/da9dcc8caa36e1c303c7
を参考にして、
nginx.conf
を変更

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.org
バックアップしてから
編集
sudo vi /etc/nginx/nginx.conf

追加、削除を行う

http {
.
.
.
.
include /etc/nginx/conf.d/*.conf;

#以下3行追加
upstream app_server {
server 127.0.0.1:8000 fail_timeout=0;
}
server {
#以下4行はコメントアウト
#listen 80 default_server;
#listen [::]:80 default_server;
#server_name localhost;
#root /usr/share/nginx/html;
# 以下3行を追加
listen 80;
server_name (パブリックDNS名);
client_max_body_size 4G;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
# 以下4行を追加
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}

ESC+:wq
で書き込み終了

sudo nginx -t

文法チェック

sudo systemctl stop nginx
sudo systemctl start nginx

設定ファイルを修正したのでnginxを起動(一度停止してから起動)

cd
cd proj
uwsgi --http :8000 --module proj.wsgi
http://(パブリックDNS名)

で、ブラウザでアクセスしてみる

It worked!
Congratulations on your first Django-powered page.

と表示された

18,おわりに

不要なポート閉じる
awsダッシュボードのセキュルティ-グループから
インバウンド編集、8000を削除、保存

AWSのEC2でftp接続する方法

EC2でftp接続する方法

EC2でプログラムを作る時、やはり使い慣れたftpで組んでいきたい。
EC2にftpサーバを立ち上げて、クライアンと接続してみる。

1,vsftpdのインストール
sudo su
yum install vsftpd -y

2,接続IPを調べる
SSH端末に入って
curl http://169.254.169.254/latest/meta-data/public-ipv4

参考
https://qiita.com/Yuki_BB3/items/deeb84c360c6f3c37f51

3,設定ファイルの変更(/etc/vsftpd/vsftpd.conf)
一応、原本を保存
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

sudo vim /etc/vsftpd/vsftpd.conf
はじめから新規に作っていいのだが、
一度、全て消してみる
(dは行削除)

d10 ENTER
d10 ENTER
d10 ENTER

挿入モード i
以下をコピペ(端末なのでShift+Ctr+Vで貼り付ける)

(ElasticIPで登録したIPアドレス)
の部分は、3で調べたIPを設定

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=NO
xferlog_enable=YES
connect_from_port_20=NO
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO
ascii_upload_enable=YES
ascii_download_enable=YES
ls_recurse_enable=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_enable=YES
pasv_addr_resolve=YES
pasv_address=(ElasticIPで登録したIPアドレス)
pasv_min_port=60001
pasv_max_port=60010
use_localtime=YES
force_dot_files=YES
seccomp_sandbox=NO
allow_writeable_chroot=YES

貼り付けたら
ESC :wq
で、保存してvimを終了
参考

AWS + EC2 + vsftpd でハマる

4,ポートの設定
Amazonのダッシュ-ボードから、セキュリティーグループで追加
21,22,60000-6010

5,サービス起動
vsftを起動(一度止めてから起動)
sudo systemctl stop vsftpd
sudo systemctl start vsftpd

6,接続用アカウントにパスワード設定
sudo passwd ec2-user
パスワード設定

参考
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-password-login/

7,ftpクライアントからの接続
ftp (ElasticIPで登録したIPアドレス)または、DNS xxxx__us-east-2.compute.amazonaws.com
ec2-user
パスワード

8,接続完了
IPが変わったら、再度
/etc/vsftpd/vsftpd.conf
の変更と
サービス再起動が必要です。
IP固定でない場合は、インスタンスを停止、起動すると、新しいIPになります。