CentOS7.8にオラクルデータベース 19cをインストールしてみる
事前準備
Oracle本体のインストール
下記サイトよりオラクル19cのrpmをダウンロードし、インストールします。
※rpmのダウンロードにはオラクルアカウントと利用規約がありますのでご留意ください。
www.oracle.com
[root@localhost ~]# yum -y localinstall oracle-database-ee-19c-1.0-1.x86_64.rpm
Databaseの作成とconfigure実行
※メモリ1Gだとエラーで失敗する可能性あり
[root@localhost ~]# export ORACLE_BASE=/opt/oracle [root@localhost ~]# export ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1 [root@localhost ~]# export ORACLE_SID=ORCLCDB [root@localhost ~]# /etc/init.d/oracledb_ORCLCDB-19c configure
ポート開放
[root@localhost ~]# firewall-cmd --permanent --add-port=1521/tcp success [root@localhost ~]# firewall-cmd --permanent --add-port=5500/tcp success [root@localhost ~]# firewall-cmd --reload success [root@localhost ~]#
sqlplusで接続するための事前準備と接続確認
[root@localhost ~]# su - oracle 最終ログイン: 2020/12/18 (金) 10:21:17 JST日時 pts/0 [oracle@localhost ~]$ export ORACLE_SID=ORCLCDB [oracle@localhost ~]$ export ORACLE_BASE=/opt/oracle [oracle@localhost ~]$ export ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1 [oracle@localhost ~]$ export PATH=$PATH:$ORACLE_HOME/bin [oracle@localhost ~]$ source ~/.bash_profile [oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Fri Dec 18 10:40:10 2020 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 ????????? SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 ORCLPDB1 READ WRITE NO SQL>
sys, system のパスワードを設定
文字化けしてる・・・
SQL> alter user sys identified by password1; ????????????? SQL> alter user system identified by password2; ????????????? SQL>
接続先DBの変更
今はCDBに接続している
SQL> show con_name CON_NAME ------------------------------ CDB$ROOT
PDBに変更する
SQL> alter session set container = ORCLPDB1;
確認してみる
SQL> show con_name; CON_NAME ------------------------------ ORCLPDB1
OK
TableSpaceとUser作成
SQL> CREATE TABLESPACE tbs_01 DATAFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/tbs_01.dbf' SIZE 10M AUTOEXTEND ON NEXT 500K MAXSIZE 100M; SQL> CREATE TEMPORARY TABLESPACE tbs_temp_01 TEMPFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/tbs_temp_01.dbf' SIZE 5M AUTOEXTEND ON TABLESPACE GROUP tbs_grp01; SQL> CREATE USER user01 IDENTIFIED BY password3 DEFAULT TABLESPACE tbs_01; SQL> GRANT CONNECT TO user01; SQL> GRANT RESOURCE TO user01;
sqlplusでログインしてみる
[oracle@localhost ~]$ sqlplus user01/password3@//localhost/ORCLPDB1 SQL*Plus: Release 19.0.0.0.0 - Production on Fri Dec 18 10:48:26 2020 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 ????????? SQL>
Django練習
はじめに
Djangoの勉強をはじめました。最初はソースコードの写経をしていましたが原理を知らないまま写経をしても意味がないと思いとりあえず今日やった下記の操作を説明できるようになる事をまずは目標とします。
後日下記操作の意味を追記するようにしたいと思います。
プロジェクトの作成
$ django-admin startproject project2
アプリケーションの作成
$ python3.7 manage.py startup employee
Djangoの管理画面を利用する為マイグレートの実行
$ python3.7 manage.py migrate
スーパーユーザの作成
$ python3.7 manage.py createsuperuser
setting.pyの編集
project2ディレクトリ配下の「settings.py」を編集する。
編集箇所は2箇所
INSTALLED_APPS
INSTALLED_APPS = [ 'employee.apps.EmployeeConfig', #この行を追加 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
urls.pyの編集
path関数の追加
from django.urls import path
pathnの追加
urlpatterns = [ path('admin/', admin.site.urls), path('', include('employee.urls')) ]
employeeディレクトリ配下に「urls.py」を作成
from django.urls import path,include from . import views app_name = 'employee' urlpatterns = [ path('',views.IndexViews.as_view(), name='index') ]
views.pyの編集
from django.views import generic class IndexView(generic.TemplateView): template_name = 'employee/employee_list.html'
base.htmlの作成
プロジェクトディレクトリ「employee」配下に「templates」というディクトりを作成し、その配下に「employee」を作成します。
その後、下記内容で「base.html」を作成します。
<!doctype html> <html lang="ja"> <head> <title>社員管理システム</title> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous"> </head> <body> {% block content %} {% endblock %} </div> <!-- Optional JavaScript --> <!-- jQuery first, then Popper.js, then Bootstrap JS --> <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script> </body> </html>
employee_list.htmlの作成
base.htmlと同階層に「employee_list.html」を下記内容で作成します。
{% extends 'employee/base.html' %} {% block content %} トップページ {% endblock %}
Djangoの起動
$ python3.7 manage.py runserver 0.0.0.0:8000
エラーが・・
「Invalid HTTP_HOST header: '132.***.***.60:8000'. You may need to add '132.***.***.60' to ALLOWED_HOSTS.」
解決策
「settings.py」の「ALLOWED_HOSTS」に設定追加する。
ALLOWED_HOSTS = ['132.***.***.60']
問題なくアクセスできました。
[opc@django project2]$ curl http://132.145.122.60:8000/ <!doctype html> <html lang="ja"> <head> <title>社員管理システム</title> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous"> </head> <body> トップページ </div> <!-- Optional JavaScript --> <!-- jQuery first, then Popper.js, then Bootstrap JS --> <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script> </body> </html>[opc@django project2]$
drawthe.netをインストールしてみる
インフラエンジニアをやっているとネットワーク構成図の1つや2つを書くことがあると思います。
他にも社内SEをやっている方だと社内のNW構成図を作成する場面もあるでしょう。
そんな時に綺麗に作成したいとか、だれが書いても同じ構成図にしたい(枠のサイズとか文字のサイズがバラバラ)と思いますよね。
そんな悩みを解決してくれるのが「drawthe.net」の出番ということです。
前振りが長くなりましたがdrawthe.netをインストールして使ってみたいと思います。
※Dockerインストール済みで進めます。
インストール
gitクローンからビルドまでやります。
# git clone https://github.com/oresama-lab/drawthenet-personal.git # cd drawthenet-personal # git clone https://github.com/cidrblock/drawthe.net.git # docker build --no-cache -t drawthenet:debian-nginx-node6.17.1 . # docker run --rm -d -p 4000:80 drawthenet:debian-nginx-node6.17.1
ブラウザでアクセスするのでファイアウォールを開けるもしくは停止させましょう
# firewall-cmd --add-service=http --zone=public --permanent # firewall-cmd --zone=public --add-port=4000/tcp --permanent # firewall-cmd --reload
ブラウザでアクセス
http://localhost:4000/ でアクセスし下記のように表示されればOK
使い方については別記事で紹介したいと思います。
Django SQliteエラー
2020年10月4日現在DjangoをインストールするとSQlite3のアップデートが必要でエラーが出ちゃいます。
↓こんな感じ
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
バージョンを確認すると・・・・
# sqlite3 --version 3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668 #
なのでSQlite3のアップデートやってみます
今回も参考にさせて頂いた記事を紹介します。
ありがとうございます。
developers-trash.com
SQlite3のバージョン3.8.3以上のインストール
$ wget https://www.sqlite.org/2020/sqlite-autoconf-3310100.tar.gz $ tar xvfz sqlite-autoconf-3310100.tar.gz $ cd sqlite-autoconf-3310100 $ ./configure --prefix=/usr/local $ make $ sudo make install $ /usr/local/bin/sqlite3 --version 3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6 $ /usr/bin/sqlite3 --version 3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668 $ sqlite3 --version 3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6 $ sudo mv /usr/bin/sqlite3 /usr/bin/sqlite3_old $ sudo ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3 $ vi ~/.bashrc # 以下を追記する export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
アップデート後の確認
# sqlite3 --version 3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6 #
except KeyboardInterrupt, e:エラー
Djangoインストール記事を書いたインスタンスでyumコマンドが使えなくなってしまった。。。
yum updateすると下記のエラーが。。。
# yum update File "/bin/yum", line 30 except KeyboardInterrupt, e: ^ SyntaxError: invalid syntax #
原因
おそらくデフォルトのPythonを2系から3系に変更したためです。
なのでシンボリックリンクを書き直せばいいんですが、yumを修正することにします。
yumの修正
viで/bin/yumを編集します。
1行目の「#!/usr/bin/python」を「#!/usr/bin/python2」に変更します
#!/usr/bin/python2
しかし、試しにyum updateを行うと途中と下記エラーとなります。
Is this ok [y/d/N]: y Downloading packages: Delta RPMs disabled because /usr/bin/applydeltarpm not installed. File "/usr/libexec/urlgrabber-ext-down", line 28 except OSError, e: ^ SyntaxError: invalid syntax File "/usr/libexec/urlgrabber-ext-down", line 28 except OSError, e: ^ SyntaxError: invalid syntax Exiting on user cancel #
Object Storage curl実行方法
オブジェクトストレージにファイルアップロードする方法はいくつかありますが、今回はcurlコマンドで実行する方法をご紹介します。
英語の記事ですが、こちらを参考にさせて頂きました。
ありがとうございます。
blogs.perficient.com
PAR(事前承認リクエスト)の作成
適当にオブジェクトストレージを作成します。
①の事前承認リクエストをクリックし、②の事前承認リクエストの作成へ進みます。
適当に名前を決め「事前承認リクエストの作成」をクリックする。
作成するとURLが表示されますので忘れずにどこかにコピーしておきましょう。
フィンガープリントの作成
ユーザ画面の画面左下の「APIキー」から「公開キーの追加」をクリックする。
公開キーを選択し「追加」をクリックする。
フィンガープリントの欄に新たに追加される。
curlの実行
コマンド例:curl -v -X PUT -u '{user_mail_address}:{fingerprint}' --upload-file {upload file} PAR
curl -v -X PUT -u 'xxxxx@gmail.com:xx:0d:xx:b5:xx:1f:xx:60:xx:98:xx:4d:xx:8c:xx:ca' --upload-file test.txt https://objectstorage.ap-tokyo-1.oraclecloud.com/p/3ChT****************
これでcurlを使ったアップロードが行えます。
まぁ使う機会があるかと言われると微妙ですが。。。