django練習:() 作成者:kiyo 記録日:2018年8月4日21:13
django練習での記録簿

pip でインストールしたモジュールを確認するコマンド

pip freeze


django練習:() 作成者:kiyo 記録日:2018年8月3日21:43
django練習での記録簿

Jetbrains IDEAを購入

7月31日~8月1日まで半額セールに一年間使用ライセンスを買いました。
decker,WSL,vagrant等対応したエディッタです、評判も良いです。
djangoならpycharmが良いのだけど、phpのLaravelやruby raise,も試したいので IDEAからプラグイン形式で使えるのでIDEAにしました。

早速 Vagrantで試したので記録簿

環境
windows10 PRO
virtualbox 5.2.12-122591 
vagrant 2.1.1
Git version 2.16.1

ここから git-bashで作業

vagrant sshで入れるように
Git bash で
ssh-keygen -t rsa
エンターキーを連打で作業ユーザのssh鍵を作る。

boxをインストール
vagrant box add bento/ubuntu-18.04

適当な作業用フォルダを作る。
cd /d/
mkdir vagrantwork
cd vagrantwork
mkdir django_ub18
cd django_ub18
共有フォルダを作る
mkdir data
vagrant init bento/ubuntu-18.04
Vagranrfile が出来ているのでこれを編集する
------------------
Vagrant.configure("2") do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.network "private_network", ip: "192.168.33.10"
  #  windows10の d:\vagrantwork\django_ub18\data が vagrantの /home/vagrant/dataで見えるように設定
  # d:¥vagrantwork '¥'ではなく' / ' で、また現状フルパスで書かないとバグルようです。
  config.vm.synced_folder "d:/vagrantwork/django_ub18/data", "/home/vagrant/data"
end
------------------

vagrant up コマンドで 仮想 ubuntu-18.04を作る。

出来上がったら 
vagrant ssh でvagrantのubuntu-18.04へ入る。
ちなみにUser:vagrant  Password: vagrant
$> sudo apt update && sudo apt upgrade -y
終わったら一度 exitコマンドで抜けて

vagrant reload で再起動し vagrant ssh で再度入る

共有フォルダでpython3の virtualenv を作成する為以下の作業
$>cd data
$>sudo apt install python3-dev python3-pip 
$>pip3 install virtualenv
$>python3 -m virtualenv env をすると エラーがでて env/binフォルダが作れないので
$>python3 -m virtualenv --always-copy envとする
$>source env/bin/activate
$(env)>pip install django
$(env)>django-admin startproject myapp

今回は長くなったのでここまで



サーバ関連:() 作成者:kiyo 記録日:2018年7月26日21:42
コマンド等、主に記録用

ubuntu18.04へpostgresqlをインストール+django設定

Dajngoにpostgresqlを適用するからパクラセテもらいました。ありがとうございます。

postgresql のインストール
sudo apt-get update
sudo apt-get install python3-pip python3-dev libpq-dev postgresql postgresql-contrib

データベースの作成
sudo -u postgres psql
postgres=# create database myapp;
CREATE DATABASE と表示されたらOK

myappというデータベースユーザをつくる。
postgres=# create user myapp with password 'myapp';
CREATE ROLE

タイムゾーン等の設定
postgres=# alter role myapp set client_encoding to 'utf8';
ALTER ROLE
postgres=# alter role myapp set  default_transaction_isolation to 'read committed';
ALTER ROLE
postgres=# alter role myapp set timezone to 'Asia/Tokyo';
ALTER ROLE

ユーザに権限を与える
postgres=# grant all privileges on database myapp to myapp;
GRANT

postgres=# \qで一度抜ける

パスワード認証方式を変更する
$ cd /etc/postgresql/10/main
$ sudo vi pg_hba.conf
local   all     all     [peer]をmd5へ変更
local   all     all     md5 となる peer認証からパスワード認証へ変更

postgresqlを再起動
$ sudo /etc/init.d/postgresql restart

$psql -U myapp -d myapp

ここからdjangoの接続へ必要な設定
$ pip install psycopg2

django setting.pyの内容変更

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'myapp',
        'USER': 'USERNAME',
        'PASSWORD': 'PASSWORD',
        'HOST': 'localhost',
        'PORT': '',
    }
}

あとはマイグレートする
$ python manage.py makemigrations
pip install psycopg2-binaryをインストールしろと怒られたのでそのようにインストールした。
$ python manage.py migrate

以上



サーバ関連:() 作成者:kiyo 記録日:2018年7月25日21:28
コマンド等、主に記録用

ubuntu18.04にmysqlをインストール

$ sudo apt install mysql-server
最初に以下のコマンドでroot のパスワード、VALIDATE PASSWORD pluginなど設定
$ sudo mysql_secure_installation

$mysql -uroot -p ではなく sudo mysql -uroot -p のように sudo がいるようになった。

mysql>  SHOW VARIABLES LIKE 'validate_password%';  

+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.01 sec)

validate_password_policy はパスワードの取り決めで LOW,MEDIUM,STRONGがあり
LOW 8文字以上の英数値
MEDIUM LOWに加え大文字小文字を1文字及び記号と数値を含まなければならない
変更するには sudo mysql -uroot -p
mysql> SET GLOBAL validate_password_policy=LOW; で変更できる

$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf  

[mysqld]
character-set-server = utf8

~~など書き込んでいたが、ここに何か追加すると mysql-serverが起動しなくなったので~~
↑であってました。

データベース、ユーザ作成、権限等のコマンド


データベースを作成
mysql>create database testdb;  // オプションを追加する場合「;」は無し
    // オプション
    CHARACTER SET utf8mb4
    COLLATE utf8mb4_unicode_ci;

ユーザ作成
mysql>use testdb;  //データベースtestdbへ
mysql>create user testdb@localhost identified by 'パスワード';

権限の追加
mysql>grant all privileges on testdb.* to testdb@localhost;




サーバ関連:() 作成者:kiyo 記録日:2018年5月8日21:05
コマンド等、主に記録用

xubuntu 18.04 LTS

$> node -v
V8.10.0
$>npm -v
6.0.0

$>sudo npm -g install electron でエラー

/usr/local/bin/electron -> /usr/local/lib/node_modules/electron/cli.js

> electron@2.0.0 postinstall /usr/local/lib/node_modules/electron
> node install.js

/usr/local/lib/node_modules/electron/install.js:47
  throw err
  ^

Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/electron/.electron'
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! electron@2.0.0 postinstall: `node install.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the electron@2.0.0 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:

解決策

sudo npm install -g electron --unsafe-perm=true --allow-root


サーバ関連:() 作成者:kiyo 記録日:2018年4月7日21:10
コマンド等、主に記録用

sudo npm installl n -g でエラー

本日(2018/04/07) ubuntu14.04LTSサーバー版をインストール後 sudo apt-get install npmでインストールされるバージョンが古いのかnpm updateができないようだ 「sudo npm install n -g」 もできないようだ。
そこで、nvmでアップデートする方法

git clone git://github.com/creationix/nvm.git ~/.nvm
source ~/.nvm/nvm.sh
nvm install v8.9.4
nvm use v8.9.4  

これでアップデートできる。

しかし/home/userのみの処理でrootでは使えない

sudo npm config set strict-ssl false
sudo npm config set registry="http://registry.npmjs.org/"

sudo npm cache clean -f
sudo npm install -g n

sudo n 8.9.4
node -v
v8.9.4
これでOKなようだ


Meteor:() 作成者:kiyo 記録日:2017年4月4日21:36
Meteorについてのお話しましょう

ubuntu16.10 から /etc/rc.localが消えた。

以前Upstartの記事を書いたけど上手く行かない。
/etc/sysytemd/system に *.serviceを書くと良いと記事を見つけたがどうしてもうまく行かない。
initd-foreverで /etc/init.d/kiyosite を作るとうまく行ったのでここへその記録を残す

Meteor initd-forever を使った起動スクリプト

meteor のソースがあるフォルダー /home/user/kiyosite

$ cd ~user/kiyosite        // kiyositeフォルダーへ移動
$ meteor build ../output    // ソースをbuildする
                            // ../outputにkiyosite.tgzができる。
$ cd ../output              // ../outputへ移動
$ tar zxvf  kiyosite.tgz    // 解凍するとbundleフォルダーができる
$ mv bundel ../bundle_kiyosite // bundelフォルダーを~user/bundle_kiyositeへ移動
$ cd ~user/bundle_kiyosite/programs/server 
$ meteor npm install

initd-foreverを使ってスクリプトを作る

$ sudo npm install forever  -g  
$ sudo npm install initd-forever -g  
$ cd ~user/bundle_kiyosite  
$ initd-forever -a ~user/bundle_kiyosite/main.js -n kiyosite
$ chmod +x kiyosite

できたkiyositeファイルの先頭に

export MONGO_URL='mongodb://localhost:27017/Kiyosite'
export ROOT_URL='http://localhost'
export PORT=3200

を追加して

$ sudo mv kiyosite /etc/init.d/kiyosite
$ sudo apt install sysv-rc-conf  //ubuntu16.10からパッケージが無いので 

http://qiita.com/hirohiro77/items/dbe4554144fb4e232ac3 を参考にしてインストールする。

$ cd /tmp
$ wget http://archive.ubuntu.com/ubuntu/pool/universe/s/sysv-rc-conf/sysv-rc-conf_0.99.orig.tar.gz
$ tar zxvf sysv-rc-conf_0.99.orig.tar.gz
$ cd sysv-rc-conf-0.99
$ sudo make
$ sudo make install
$ sudo apt-get install libcurses-ui-perl libterm-readkey-perl libcurses-perl 
//その後起動処理
$ sudo sysv-rc-conf --add kiyosite
$ sudo sysv-rc-conf on


Meteor:() 作成者:kiyo 記録日:2017年2月15日21:17
Meteorについてのお話しましょう

meteor が1.4.2.6になってた

しばらく放置していたら meteor が 1.4.2.6になってる。
ここで使ってるソースを ビルドしてみた。
あたり前のように起動しない (2年ほったらかしでは仕方ない)
このままでは、ソースをいじると使えなくなるので慌てて調べた

meteor 1.4 monogdb 3.2.6になったらしい
ubuntu14.04LTSでmeteor 1.4.2.6にして試す事にした
meteorは meteor update で最新版にアップデートできる
次に mongodbを3.2.6にする
mongodb 2.4.6 からアップデートする。 もちろん使用中のmongodbはバックアップする

$ mongodump --out mongodb.backup //全てのデータベースをバックアップ
//アップグレードに必要な鍵を登録する
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
//ソースリストの作成
$ sudo echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
//いつものおまじない
$ sudo apt-get update
//3.2.6を指定してアップデート 
$ sudo apt-get install -y mongodb-org=3.2.6 mongodb-org-server=3.2.6 mongodb-org-shell=3.2.6 mongodb-org-mongos=3.2.6 mongodb-org-tools=3.2.6

nodejs もアップデートするのですが、このサイトにある npmでnodejsをダウングレード で行います。 ダウングレードと書いてますがアップデートもできます。 バージョンは 4.4.7らしい

$ sudo npm cache clean -f
$ sudo npm install -g n
$ sudo n 4.4.7

ここまでできればソースのフォルダーで ubuntu14へテストデプロイのようにすればOK

$ meteor build .
///できたtarファイルを解凍して
$cd bundle/programs/server
meteor npm install


サーバ関連:() 作成者:kiyo 記録日:2017年1月25日21:06
コマンド等、主に記録用

Let's Encrypt で無料SSL 認証

https://letsencrypt.jp/ に詳しい資料がある。

無料でSSL認証がつかえる。いい時代になったもんだ!!
このサーバにも適用してみた。

//サーバ ubuntu 16.04LTS + nginx + meteor
// Let's Encryptをインストール
$ sudo apt-get update
$ sudo apt-get install letsencrypt
// nginx を stop
$ sudo  service nginx stop
// 証明書を発行してもらう -d がドメイン -m メールアドレス
$ sudo letsencrypt certonly --standalone -d www.yosiki.org -m kiyo@yosiki.org --agree-tos -n

上記のドメイン発行後 サブドメインも追加する場合

(複数可 -d xxx.aaa.com -d yyy.abc.comのように 又は -d xxx.abc.com, yyy.abc.comのようにカンマでもよい) 
$ sudo letsencrypt certonly --expand -d www.yosiki.org  -d hoge.yosiki.org -d fuga.yosiki.org

--expand で追加してくれるようだ

// nginx の設定
$ sudo vi /etc/nginx/sites-enabled/yosiki.conf

server {
      listen 80;
      server_name localhost;
      return 301 https://www.yosiki.org$request_uri;
}



server {

      listen 443;
      server_name localhost;       

      ssl_certificate /etc/letsencrypt/live/www.yosiki.org/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/www.yosiki.org/privkey.pem;

      ssl on;

      access_log /var/log/nginx/access.log;
      error_log /var/log/nginx/error.log;

      location / {
            # meteor port 8200で起動
            proxy_pass http://localhost:8200;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header X-Forwarded-For $remote_addr;
      }
}

証明書の有効期限が90日なので更新が必要
更新する場合はnginx を止めなければならないので以下ののように --pre-hook --post-hookが用意されている。
更新30日前にならないと更新されないようですが30日前になっていないと何もしないので cronなどで更新しても問題なし。

$ sudo letsencrypt renew --pre-hook "service nginx stop" --post-hook "service nginx start"


サーバ関連:() 作成者:kiyo 記録日:2016年12月26日21:19
コマンド等、主に記録用

rsync 多段コピー

自宅のサーバはvmware6.0up2でVineLinux,Ubuntu等使ってWEBサーバ、sshサーバ等起動しています。
また最近NAS( Synology DS215J)を買いました。
会社からデータを自宅へコピーしたい時がありますが、sshサーバはもちろん一台しかありません。
しかしせっかくNASがあるのでそこにコピーしたいですよね。
会社のデータ->自宅のsshサーバ ->NASにコピー
コピーを経由するPCにssh-keygenを使ってsshキーを作成します。

$ ssh-keygen -t rsa
エンターキーを2回
...
ユーザフォルダーに .ssh ができる 
$ ls  -la .ssh
   .
   ..
   id_rsa
   id_rsa.pub
会社の.ssh/id_rsa.pubを経由するPCへUSBメモリ等で持って来て各PCへコピー
各PCで以下のコマンドを実行
$ cat id_rsa.pub>>.ssh/authorized_keys
会社のデータがあるPCから
rsync -av -e 'ssh -o ProxyCommand="ssh ユーザ@sshサーバ -W %h:%p -q" '  /data(会社のデータ)  ユーザ@NASのIPアドレス:/volume1/homes/ユーザ 

実は会社にもSynology(DS215J)があってこのNASのタスクスケジューラにコマンドを書いてコピーする時間等設定したら同期できます。
Synologyは結構優れ物だと思います。


ps:
sshd_configも変更した方がよいので自宅のsshサーバに追加

$ sudo vim /etc/ssh/sshd_config





PermitRootLogiin no に変更 rootでのログイン禁止

PasswordAuthentication no に変更 パスワードでのログイン禁止