- 投稿日:2021-01-16T23:00:16+09:00
Cloud9でWordPress環境を構築 2
WordPressの学習&AWSに触れるのを目的として
AWS Cloud9でWordPress環境を構築するまでの備忘録。ここまでやったこと
- AWSアカウント登録
- Cloud9環境立ち上げ
- MySQLインストール
この記事の目次
- MySQLセットアップ
- 初期設定
- データベース作成
- サービス起動
- 最新化
- サービス起動
- スナップショット作成
- 作成手順
- 復元手順
(スナップショットを作成するのは
この後のWordPressのセットアップが上手くいかないから……)MySQLセットアップ
初期設定
セットアップ前にログからrootのパスワードを確認する。
$ sudo cat /var/log/mysqld.log | grep "A temporary password" 2021-01-16T09:30:18.257989Z 1 [Note] A temporary password is generated for root@localhost: XXXXXXXXXログイン後、パスワードの変更が要求される。
デフォルトのパスワードポリシー:数字/大文字/小文字/特殊文字を各1つ以上使用、長さは8文字以上
https://dev.mysql.com/doc/refman/5.7/en/validate-password-options-variables.html$ mysql_secure_installation # ログで確認したパスワード Enter password for user root: The existing password for the user account root has expired. Please set a new password. # パスワードの変更を要求される New password: (新しいパスワード) # rootのパスワードを変更するか? Change the password for root ? ((Press y|Y for Yes, any other key for No) : N # 匿名ユーザを削除するか? Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y # rootでのリモートログインを禁止するか? Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y # テストデータベースを削除するか? Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y # 今すぐ権限テーブルを読み込むか? Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y All done!文字コードをUTF-8に、
パスワードの有効期限は無期限に変更しておく。2行追加。$ sudo vi /etc/my.cnf [mysqld] (省略) character-set-server = utf8 default_password_lifetime = 0 # サービス再起動しておく $ sudo service mysqld restartデータベース作成
rootでMySQLにログイン、WordPress用のデータベース&ユーザを作成する。
$ mysql -u root -p Enter password: # WordPress用のデータベース作成 mysql> CREATE DATABASE データベース名; Query OK, 1 row affected (0.01 sec) # ユーザ作成 mysql> GRANT ALL PRIVILEGES ON *.* TO 'ユーザ名'@'localhost' IDENTIFIED BY '作成ユーザのパスワード'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> exitサービス起動
最新化
MySQLよりに先に確認すべきだったかも。ただ、結果的には最新化不要。
# OS 結果:アップデート不要 $ sudo yum -y update Loaded plugins: extras_suggestions, langpacks, priorities, update-motd 261 packages excluded due to repository priority protections No packages marked for update # Apache 結果:アップデート不要 $ sudo yum install -y httpd24 Loaded plugins: extras_suggestions, langpacks, priorities, update-motd amzn2-core | 3.7 kB 00:00:00 261 packages excluded due to repository priority protections No package httpd24 available. Error: Nothing to do # PHP 結果:アップデート不要 $ sudo yum install -y php56 Loaded plugins: extras_suggestions, langpacks, priorities, update-motd 261 packages excluded due to repository priority protections No package php56 available. Error: Nothing to doサービス起動
Apache、MySQLのサービスを起動する。
# Apache起動 (起動済だったかも) $ sudo service httpd start $ sudo service httpd status ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/httpd.service.d └─php-fpm.conf Active: active (running) # MySQL起動 (起動済だったかも) $ sudo service mysqld start $ sudo service mysqld status ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running)スナップショット作成
作成手順
ここまでで一旦、EC2のスナップショットを作成しておく。
EC2 > Elastic Block Store からスナップショットを作成する。
Select resource type は Volume にする。
※ 1インスタンス、1ボリューム状態なのでどちらでも変わりなし復元手順
復元手順は次の通り。(未実施)
1. スナップショットからボリュームを作成
2. インスタンスを停止
3. インスタンスから復元したいボリュームをデタッチ
4. アタッチするインスタンスのルートデバイスを確認
5. 1で作成したボリュームをインスタンスにアタッチ
6. インスタンス起動次、WordPressインストールなど。
Cloud9でWordPress環境を構築 3前の記事へのリンク
Cloud9でWordPress環境を構築 1
- 投稿日:2021-01-16T21:17:09+09:00
[MySQL] 型を変更する方法
MySQLにログインする
以下で詳しく説明しています。
https://qiita.com/momo1010/items/d72d2d567c0768ce2d0dデータベースを選択する
USE データベース名;型を変更する
ALTER TABLE テーブル名 MODIFY カラム名 新しい型
NOT NULL
の場合は以下です。ALTER TABLE テーブル名 MODIFY カラム名 新しい型 NOT NULL;変更できたか確認する
DESCRIBE テーブル名;
- 投稿日:2021-01-16T19:02:06+09:00
Cloud9でWordPress環境を構築 1
WordPressの学習&AWSに触れるのを目的として
AWS Cloud9でWordPress環境を構築するまでの備忘録。はじめにやっておいたこと
- AWSアカウント登録
- 学習用IAMユーザー作成
- 学習用ユーザへのアタッチポリシー:とりあえず次の4つ
- AmazonEC2FullAccess
- AdministratorAccess
- IAMUserChangePassword
- AWSCloud9User
この記事の目次
- インスタンス作成
- EC2インスタンス作成
- ディスク拡張
- MySQLインストール
- MariaDBアンインストール
- MySQLインストール
インスタンス作成
- EC2インスタンス作成
- ディスク拡張
EC2インスタンス作成
Cloud9のCreate environmentからCloud9環境&EC2を作成する。
こだわりはないので、Amazon Linux2にしておく。他はデフォルト。ディスク拡張
容量に余裕がない(使用率85%)ので拡張する。30GBまでなら無料らしい。
EC2 > Elastic Block Store で 作成済のボリュームを変更する (10GB→20GB)
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html
L 例: EBS ボリュームのファイルシステムの拡張ボリュームを変更後、Cloud9のIDEのターミナルからコマンド実行。
パーティションを拡張する。$ sudo growpart /dev/xvda 1 $ sudo xfs_growfs -d /※作成したリージョンが違う、ルートアカウントで作成したなどで
立ち上げたEC2が見れずに何回か手間取った……。MySQLインストール
- MariaDBアンインストール
- MySQLインストール
MariaDBアンインストール
デフォルトでMariaDBがインストールされているが、どうにも動かない。
$ mysql --version mysql Ver 15.1 Distrib 10.2.10-MariaDB, for Linux (x86_64) using EditLine wrapper $ sudo service mysqld start Redirecting to /bin/systemctl start mysqld.service Failed to start mysqld.service: Unit not found.諦めてアンインストールしてMySQLをインストールする。
※ディスク拡張作業をしたのは主にこれのため#MariaDBがインストールされているか確認 $ sudo yum list installed | grep mariadb mariadb.x86_64 3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2 mariadb-common.x86_64 3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2 mariadb-config.x86_64 3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2 mariadb-libs.x86_64 3:10.2.10-2.amzn2.0.3 @amzn2extra-lamp-mariadb10.2-php7.2 #MariaDBのアンインストール (libsはcommonに依存で削除) $ sudo yum remove mariadb -y $ sudo yum remove mariadb-common -y $ sudo yum remove mariadb-config -yMySQL5.7 インストール
触ったことがある5.7をインストールする。
#mysql8.0のリポジトリを追加(5.7も含む) sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y #mysql8.0のリポジトリを無効化 $ sudo yum-config-manager --disable mysql80-community #mysql5.7のリポジトリを有効化 $ sudo yum-config-manager --enable mysql57-community #mysqlインストール $ sudo yum install mysql-community-server -y #mysqlバージョン確認 $ mysql --version mysql Ver 14.14 Distrib 5.7.32, for Linux (x86_64) using EditLine wrapper #mysql起動 $ sudo service mysqld start Redirecting to /bin/systemctl start mysqld.service $ sudo service mysqld status Redirecting to /bin/systemctl status mysqld.service ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2021-01-16 09:30:20 UTC; 3s ago次、MySQLのデータベース作成など。
Cloud9でWordPress環境を構築 2
- 投稿日:2021-01-16T17:23:44+09:00
MySQLでデータベースを削除する
自分の忘備録としてMySQLで使わなくなったデータベースの削除方法を残します
消去の流れ
1.MySQLにログイン
MySQLを使用するには、ターミナルからログインします。
ホームディレクトリから接続します。『-u root』はオプションで、「ユーザーは『ルート』でログインする」という意味です。
ここでいうルートとは、MySQLであらかじめ用意されているユーザーのことです。% cd # MySQLに接続 % mysql -u rootMySQLに接続すると以下のような表示になリます。
% mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 428 Server version: 5.6.47 Homebrew Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>SQLはmysql>の続きから入力して実行ができます。
2.SHOW文で消したいデータベースを確認
mysql> SHOW DATABASES ;3.DROP文でデータベースを削除
mysql> DROP DATABASE 《データベース名》;
- 投稿日:2021-01-16T17:16:21+09:00
テーブルが存在するのに、Table doesn't existと言われた話
はじめに
先日、PCの電源を閉じた後、再度dockerを起動し、
docker-compose run wen rails s
と入力すると、以下のようなエラーが出てしまいました。Mysql2::Error: Table 'share_read_development.books' doesn't exist現在でも、主原因は解明できておりません。
本記事では、僕が解決に向けて試したことを記載していきます。エラーが起きた主原因は不明でしたが、エラーの解決は済んでおり開発自体は進んでおります。
もし同じようなエラーに苦しんでいる方は、参考にしてみてください。また原因がわかる方がいらっしゃいましたら、コメントで教えていただけると幸いです。
開発環境
Ruby 2.72
Rails 6.0.2.3
MySQL 5.7
Docker/docker-compose発生したエラー
冒頭でも簡単に記載しましたが、以下のようなエラーが出ました。
booksテーブルがないと言われています。rails aborted! ActiveRecord::StatementInvalid: Mysql2::Error: Table 'share_read_development.books' doesn't exist /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `_query' /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `block in query' /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `handle_interrupt' /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `query' /usr/local/bundle/gems/activerecord-6.0.3.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:201:in `block (2 levels) in execute' /usr/local/bundle/gems/activesupport-6.0.3.4/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads' /usr/local/bundle/gems/activesupport-6.0.3.4/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares' # 中略 Caused by: Mysql2::Error: Table 'share_read_development.books' doesn't exist /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `_query' /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `block in query' /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `handle_interrupt' /usr/local/bundle/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `query' # 中略 /usr/local/bundle/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:291:in `load_dependency' /usr/local/bundle/gems/activesupport-6.0.3.4/lib/active_support/dependencies.rb:324:in `require' bin/rails:4:in `<main>' Tasks: TOP => db:schema:dump (See full trace by running task with --trace)試したこと
①マイグレーションの実行状況の確認
まず、マイグレーションの実行状況を確認しました。$ docker-compose run web rails db:migrate:status Status Migration ID Migration Name -------------------------------------------------- up 20201207135139 Create users up 20201213135207 Create reviews up 20201218052640 Create books up 20201218075413 Add bookgenreid to books up 20201220063200 Add book to reviews up 20201222080803 Create relationships up 20201222131717 Create favorites up 20201222233733 Create comments up 20201224140712 Create bookcases up 20201225105949 Create notifications up 20201226102230 Add status to review up 20201230042031 Add caption to books全てのマイグレーションファイルが実行されていることがわかりました。
②データベースの確認
次にmysqlに接続し、デーベースのテーブルを確認しました。$ docker-compose run web rails db > show tables;そうすると、以下のように表示されました。
booksテーブルは存在している?+----------------------------------+ | Tables_in_share_read_development | +----------------------------------+ | ar_internal_metadata | | bookcases | | books | | comments | | favorites | | notifications | | relationships | | reviews | | schema_migrations | | users | +----------------------------------+しかし、以下のコマンドでは、booksテーブルがないと言われてしまいます。
> select * from books;他のテーブルのデータは取得できます。
> select * from bookcases; +----+------+---------------+---------+----------------------------+----------------------------+ | id | read | book_id | user_id | created_at | updated_at | +----+------+---------------+---------+----------------------------+----------------------------+ | 1 | 0 | 9784296108008 | 1 | 2020-12-28 01:18:40.540283 | 2020-12-28 01:18:40.540283 | | 3 | 0 | 9784478820094 | 3 | 2020-12-28 12:39:00.697316 | 2020-12-28 12:39:00.697316 | | 37 | 0 | 9784478820094 | 1 | 2020-12-29 08:16:25.944979 | 2020-12-29 08:16:25.944979 | | 39 | 0 | 9784804614151 | 1 | 2020-12-29 08:26:56.615557 | 2020-12-29 08:26:56.615557 | | 41 | 0 | 9784907095536 | 1 | 2020-12-29 08:27:01.301378 | 2020-12-29 08:27:01.301378 | | 42 | 0 | 9784908925658 | 1 | 2020-12-29 08:39:11.191829 | 2020-12-29 08:39:11.191829 | | 45 | 0 | 9784284204705 | 1 | 2020-12-30 04:10:08.090943 | 2020-12-30 04:10:08.090943 | +----+------+---------------+---------+----------------------------+----------------------------+公式ドキュメントを調べても、自身で試したことしか記載していませんでした。
エラー Table 'xxx' doesn't exist または Can't find file: 'xxx' (errno: 2) が発生する場合、xxx という名前のカレントデータベースにテーブルがないことを示しています。
SHOW TABLES を使用して、カレントデータベースにあるテーブルを確認できます。【URL】
http://download.nust.na/pub6/mysql/doc/refman/4.1/ja/cannot-find-table.html③データベースの作り直し
あまり気が進みませんでしたが、データベースを作り直すことにしました。$ docker-compose run web rails db:reset $ docker-compose run web rails db:create $ docker-compose run web rails db:migrateこれでエラーが解消することができました!
個人開発なので、データベースを削除するという方法で済みましたが、実際の現場ではこの方法は推奨されないと思います。
もし、今回のエラーの原因等がわかる方がいらっしゃいましたらコメントにて教えていただけると幸いです。
- 投稿日:2021-01-16T17:01:41+09:00
SQL基礎
SQL基礎の基礎 SELECT文から
(1)SELECT文
select カラム from テーブル;大体これでOK
複数のカラムからデータを取得する場合は下のようにカンマで区切って追加する
select カラム,カラム2 from kakeibo;(2)SELECT文WHEREを使う
select * from kakeibo where categoly = '食費';データ型はクオーテーションマーク必要
カラム名categoryから食費の入ったレコードを取得する
where price = 1000;
数値の場合は、''クォーテーションマークをつけない
where purchased_at = '2010-10-09'
日付の場合もクォーテーションマークは必要(3)比較演算子
大なり小なりの後にイコール=を入れる
>= 大なりイコール
<= 小なりイコール
where price >= 1000; ` 例:1000以上 1000より大きい上記は完全一致しか拾えません
(4)LIKE演算子
あいまい検索(ワイルドカード)
含むレコードを抽出できますselect * from purchases where name like '%プリン%'; 前方一致 select * from purchases where name like 'プリン%' 後方一致 select * from purchases where name like '%プリン';(5)not使い方 条件を満たさないデータ取得
where not name >= 1000; where not name like '%プリン'; IS NULL IS not NULL(6)and演算子/or演算子
and演算子 where name = 'プリン' and price = 1000; or演算子 where name is null or price is null; where character_name = 'ねこ' or character_name = 'いぬ';(7)データの並び替え
order by カラム名 並べ方;
asc 昇順に並び替える
desc 降順に並び替える
select * from perchsed where price = 1000 order by price desc;(8)件数を限定する
何件を指定して取得する
My SQLやPostgreSQLでは使えますが、Oracleでは使えないんですねlimit データ件数; limit 5;
- 投稿日:2021-01-16T15:39:30+09:00
Raspberry Pi 3のDockerにカンバンを入れる
はじめに
本当は、業務でカンバンを使いたい。
ただ、出向している身だし、何かやろうとすること自体がNGっぽいので、いつか使う時のために自分でまず試してみようと思います。最初はwekanを利用しようと考えて試してみたのですが、Raspberry Pi 3にmongoがpullできず、代わりにbitnami/mongodbをpullしてみましたが、wekanがうまく立ち上がりませんでした。
- mongoがpullできない
$ docker pull mongo Using default tag: latest latest: Pulling from library/mongo no matching manifest for linux/arm/v7 in the manifest list entries
- STATUSがRestartのまま
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e72db467f990 mquandalle/wekan "node /build/main.js" 27 seconds ago Restarting (1) 1 second ago wekan e9671f4502be bitnami/mongodb:latest "/opt/bitnami/script…" 19 minutes ago Restarting (1) 21 seconds ago wekandb
- うまくいかなかったdocker-compose.yml
docker-compose.ymlversion: '2' services: wekan: container_name: wekan image: mquandalle/wekan restart: always ports: - 8080:8080 environment: - MONGO_URL=mongodb://wekandb/wekan - ROOT_URL=http://111.111.111.111:8080 links: - wekandb wekandb: container_name: wekandb image: bitnami/mongodb:latest volumes: - /home/johndoe/wekan/data:/data/db restart: alwaysKanboardを入れてみる
参考にした資料は以下の通りです。
公式ドキュメントもあります。作成したdocker-compose.ymlはこちら。
hypriot/rpi-mysqlを使用している経緯は、Raspberry Pi 3のDockerでRedmineを立ち上げましたを参照してください。docker-compose.ymlversion: '2' services: kanboard: container_name: kanboard image: kanboard/kanboard:latest restart: always ports: - 10080:80 - 10443:443 volumes: - kanboard_data:/var/www/app/data - kanboard_plugins:/var/www/app/plugins - kanboard_ssl:/etc/nginx/ssl environment: KANBOARD_DB_MYSQL: kanboard-db KANBOARD_DB_PASSWORD: kanboard kanboard-db: container_name: kanboard-db image: hypriot/rpi-mysql:latest restart: always environment: MYSQL_ROOT_PASSWORD: kanboard MYSQL_DATABASE: kanboard volumes: kanboard_data: driver: local kanboard_plugins: driver: local kanboard_ssl: driver: local問題なく、
docker-compose
がうまくいきました。$ docker-compose up -d Creating network "docker-kanboard_default" with the default driver Creating volume "docker-kanboard_kanboard_data" with local driver Creating volume "docker-kanboard_kanboard_plugins" with local driver Creating volume "docker-kanboard_kanboard_ssl" with local driver Creating kanboard ... done Creating kanboard-db ... donehttp://hogehoge:10080/ で開きます。(hogehogeの部分にIPアドレスか、ホスト名を入れる)
デフォルトはadmin/adminで開きます。まとめ
今回はあまり躓くこともなく、すんなりといきました。
カンバンの有効的な使い方を学びます。
- 投稿日:2021-01-16T14:32:21+09:00
【Sequel Pro】毎回出る謎のエラー〜ちょっと奥さん知ってました?⌘Wじゃなくて⌘Qの話〜
ずっと気になっていたこと
一日の作業を終えた達成感と、心地良い疲労感がじわじわと広がってくる。
PCの電源を落とそうと、ウインドウの左上の赤い❌ボタンでアプリケーションを次々と閉じていく。
Chromeを閉じ、VScodeを閉じ、ターミナルを閉じ、SepuelProを閉じ・・・
左上の?マークから終了。いつもの流れである。次の日にPCを起動し、さあ今日もやっちゃうぞ!と次々とアプリケーションを起動していく。
すると毎回こうなる。Sequel Pro recently quit unexpectedly.
インストールした時からずっとだ。
出なかったことはない。
ご苦労である。いい加減こちらも気になって調べてみたが、Mojaveのものばかりで解決方法がなかった(Catalina使用中
とある人に聞いたところ「毎回出る?終了しても?」
終了しても出るよ!
ん?終了?なんのはなし?「左上のSequelPronoメニューから終了だよ」
ほほう・・・(ぽち
どうせダメなんじゃないの〜?
毎回出るんだから終了したって変わらn
(なおった⌘Wで「閉じる」
⌘Qで「終了」
このコマンドの違いを今更ちゃんと知ったっていう話でした。
ご清聴ありがとうございました。