pip でインストールしたモジュールを確認するコマンド
pip freeze
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
今回は長くなったのでここまで
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
以上
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;
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
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なようだ
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 が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
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"
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 に変更 パスワードでのログイン禁止