2018年6月19日火曜日

ubuntu server 18.04 のインストール④ mysqlとphpmyadminのインストール

1
sudo apt-get install mysql-server

rootのパスワードを設定していないので 「mysql -u root」とするも「ERROR 1698 (28000): Access denied for user 'root'@'localhost'」とアクセス拒否。「sudo mysql」ならOKだったので作業を進める。

1
2
3
4
5
6
7
mysql> select host, user, plugin, authentication_string from mysql.user where user='root';
+-----------+------+-------------+-----------------------+
| host      | user | plugin      | authentication_string |
+-----------+------+-------------+-----------------------+
| localhost | root | auth_socket |                       |
+-----------+------+-------------+-----------------------+
1 row in set (0.00 sec)

インストールでrootのパスワードを空にすると、rootの認証にはauth_socket pluginを使うように設定されるらしい。

auth_socket pluginは、MySQLクライアントを実行したlinuxユーザーを、MySQLのユーザーとして認証しようとするらしい。

このままではrootでphpmyadminにログインできませんがセキュリティの事を考えるとこのままで良いかと

ユーザーを作ってそのユーザーで'apps_alpha'、'apps_beta'、'apps_gamma'というようにデーターベースを作れるようにすれば良いんじゃない

ユーザーの作成

1
2
mysql> CREATE USER wwwuser@localhost IDENTIFIED BY  'password';
Query OK, 0 rows affected (0.58 sec)

権限を付加

1
2
mysql> GRANT ALL PRIVILEGES ON `apps\_%`.* TO 'wwwuser'@'localhost';
Query OK, 0 rows affected (0.01 sec)

確認してみましょう

1
2
3
4
5
6
7
8
mysql> show grants for wwwuser@localhost;
+--------------------------------------------------------------+
| Grants for wwwuser@localhost                                 |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'wwwuser'@'localhost'                  |
| GRANT ALL PRIVILEGES ON `apps\_%`.* TO 'wwwuser'@'localhost' |
+--------------------------------------------------------------+
2 rows in set (0.00 sec)

問題無いようなので

次にphpmyadminをインストールします。

「sudo apt install」でインストールしてもいいんですが今回は手動で

オフィシャルサイトからダウンロードして解凍「/var/www/phpmyadmin」に設置します。

1
wget https://files.phpmyadmin.net/phpMyAdmin/4.8.1/phpMyAdmin-4.8.1-all-languages.zip

unzipが無かったのでインストール

1
$ sudo apt install unzip
1
$ unzip phpMyAdmin-4.8.1-all-languages.zip
1
$ sudo mv phpMyAdmin-4.8.1-all-languages /var/www/phpmyadmin
1
$ sudo vi /etc/apache2/conf-available/phpmyadmin.conf
1
2
3
4
5
<Directory /var/www/phpmuadmin>
Order allow,deny
Allow from all
</Directory>
Alias /任意のディレクトリ/phpmyadmin /var/www/phpmyadmin

任意のディレクトリに置くのはルートだとやっぱりセキュリティ的に・・・任意のディレクトリにBASIC認証でもかけておけば少しはましかな、外に置くならね

phpmyadminを有効にする

1
$ sudo a2enconf phpmyadmin

apachを再起動する

1
sudo service apache2 restart

phpMyAdminへログインした時に「phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています」とワーニングが出てしまうのでphpMyAdmin 環境保管領域を設置します

「sudo mysql」でmysqlに接続して

1
mysql> source /var/www/phpmyadmin/sql/create_tables.sql;
1
2
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON `phpmyadmin`.* TO 'wwwuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)
1
2
3
4
5
6
7
8
9
mysql> show grants for wwwuser@localhost;
+---------------------------------------------------------------------------------+
| Grants for wwwuser@localhost                                                    |
+---------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'cake'@'localhost'                                        |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `phpmyadmin`.* TO 'wwwuser'@'localhost' |
| GRANT ALL PRIVILEGES ON `apps\_%`.* TO 'wwwuser'@'localhost'                    |
+---------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

ubuntu server 18.04 のインストール③ phpとapacheのインストール

1
2
sudo apt-get install php
sudo apt-get install php7.2 php7.2-gd php7.2-intl php7.2-mbstring php7.2-mysql php7.2-sqlite3 php7.2-xml php7.2-zip

mod_rewriteが有効になっていないので

1
2
sudo a2enmod rewrite
sudo service apache2 restart

Apacheのインストール時にサンプルのSSL証明書が自動的に作成されるので、とりあえずこれを有効にしておく

1
2
3
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo service apache2 restart

nmapで通信ポートの確認する

1
2
3
4
5
6
7
8
9
10
11
nmap localhost
 
Starting Nmap 7.60 ( https://nmap.org ) at 2018-06-22 05:46 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Other addresses for localhost (not scanned): ::1
rDNS record for 127.0.0.1: localhost.localdomain
Not shown: 996 closed ports
PORT     STATE SERVICE
80/tcp   open  http
443/tcp  open  https

443ポートがオープンされている。サンプルのSSL証明書でのSSL通信が可能になった。

2018年6月18日月曜日

ubuntu server 18.04 のインストール② 日本語 Remixに追加されているパッケージのインストール

再起動後

インストール時に作成したアカウントでログインします。

IPアドレスが表示されているのでメモをしておく。

最新のアップデートを適用します。

1
$ sudo apt upgrade

[ENTER]を押下します

ここからの作業は日本語環境にする場合のみ適用する

Ubuntuの日本語環境のJapanese Teamによる追加パッケージの利用方法の2を適用します。

Ubuntu 18.04 LTSの場合n

1
2
3
4
wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
sudo wget https://www.ubuntulinux.jp/sources.list.d/bionic.list -O /etc/apt/sources.list.d/ubuntu-ja.list
sudo apt update

上記を1行ずつ実行します。

アップデートを実行します

1
$ sudo apt upgrade

日本語 Remixに追加されているパッケージと同じものをインストールします

1
$ sudo apt-get install ubuntu-defaults-ja

.bashrcの最後に以下のスクリプトを追加するとsshでログインした時に日本語環境なります。

1
2
3
4
case $TERM in
linux) LANG=en_US.UTF-8 ;;
*) LANG=ja_JP.UTF-8;;
esac

ubuntu server 18.04 のインストール①

仮想環境にubunto servereのLAMP環境を構築します。今回はubuntu-18.04-live-server-amd64.isoを使います

||ubuntu-18.04-server-amd64.isoも有る||

Homepage | Ubuntu Japanese Teamからubuntu-18.04-live-server-amd64.isoをダウンロードして仮想環境で立ち上げます。

自分の環境に合ったキーボードを選択します。

そのまま[ENTER]で次へ

ネットワークの設定ですが、今回はDHCPで問題無いのでそのまま次へ。固定アドレスにしたい場合は設定して下さい。

プロキシーは設定しないのでそのまま次へ

ディスクの割当ですが自動でよいのでそのまま次へ

そのまま次へ

そのまま次へ

そのまま次へ

名前を入力します。サーバー名と管理用アカウントとパスワードをしっかり入力します。

[Reboot Now]押すとシャットダウン処理を始めます

[ENTER]を押すと再起動が始まります。

ubuntuのベースのインストールは完了しました。引き続きログインして必要なモジュールをインストールします。

2018年2月16日金曜日

cakephp 2.x 日付でログローテーション

Config/bootstrap.phpの「Configures default file logging options」を以下のようにすると良い
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
App::uses('CakeLog', 'Log');
$log_path = LOGS.DS.date('Ymd').DS;
$log_date = date('Ymd');
CakeLog::config('debug', array(
 'engine' => 'File',
 'types' => array('notice', 'info', 'debug'),
 // 'file' => 'debug',
 'file' => $log_date . '_debug.log',
));
CakeLog::config('error', array(
 'engine' => 'File',
 'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
 // 'file' => 'error',
 'file' => $log_date . '_error.log',
));