- 投稿日:2020-02-26T23:05:58+09:00
インフラ知識低のレイヤから勉強(01)
初めまして、潔(日本語の名)と申します。インフラ部は知識がありますが、バラバラです。具体的から勉強したことがありません。仕事の職場では大変ことがあります。考えているのはITエンジニアなら、インフラのことが知った方はいいともいますので、インフラの知識を調べて、メモを記入します。大先輩のオススメは低のレイヤの勉強から始まることです。下記の順番に記入する予定です。
一段階
1. Apacheをソースコードからコンパイルおよびインストール
2. PHPをSource Codeからコンパイルおよびインストール
3. PHPのMySQL Extenstionをソースコードからコンパイルおよびインストール
4. MySQLをソースコードからコンパイルおよびインストール
5. PHP FrameworkをInstall
二段階
1. Apache、MySQL、PHPのインストール
2. PHP FrameworkをInstall
三段階
1. Dockerのインストール
2. Apache + PHP Containerの構築
3. MySQL Containerの構築
4. PHP FrameworkをInstall
四段階
1. KubernetesでPHP/MySQL Webをデプロイしてみます
じゃあ、上から最後まで進めていきましょう。
最初は環境を準備しなければならない。Vagrantをきめます。
■ Vagrant環境を準備
vagrant up vagrant sshさて、Vagrant環境で操作していきます
■ Apache HTTP Server 2.4.34のソース展開
方法#1:サイトからプルしていきます
cd /usr/local/src sudo wget http://www-us.apache.org/dist/httpd/httpd-2.4.34.tar.gz sudo gzip -d httpd-2.4.34.tar.gz sudo tar xvf httpd-2.4.34.tar方法#2:Apacheのダウンロードのページにアクセスして、リンクをクリックします
リンク:https://httpd.apache.org/download.cgi
vagrant ssh cd /var/www/devOps sudo cp httpd-2.4.34.tar.gz /usr/local/src cd /usr/local/src tar zxvf httpd-2.4.34.tar.gz■ APR と APR-Utilの準備
Apache Portable Runtimeのページにアクセスして、
・apr-1.5.2.tar.gz
・apr-util-1.5.4.tar.gz
をダウンロードしますcd /usr/local/src sudo wget https://archive.apache.org/dist/apr/apr-1.5.2.tar.gz sudo gzip -d apr-1.5.2.tar.gz sudo tar xvf apr-1.5.2.tar # 展開したディレクトリをApacheのsrclibディレクトリにコピー。 sudo cp -Rp apr-1.5.2 httpd-2.4.34/srclib/apr sudo wget https://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz sudo gzip -d apr-util-1.5.4.tar.gz sudo tar xvf apr-util-1.5.4.tar # 展開したディレクトリをApacheのsrclibディレクトリにコピー。 sudo cp -Rp apr-util-1.5.4 httpd-2.4.34/srclib/apr-util■ configure実行
cd httpd-2.4.34 sudo ./configure■ make・make installを実行します
sudo make sudo make install注意:インストールするときエラー
1。APRのインストールしていない
checking for APR... no configure: error: APR not found. Please read the documentation.解決方法
APRのインストールしていきます cd /usr/local/src sudo wget https://archive.apache.org/dist/apr/apr-1.5.2.tar.gz sudo gzip -d apr-1.5.2.tar.gz sudo tar xvf apr-1.5.2.tar # 展開したディレクトリをApacheのsrclibディレクトリにコピー。 sudo cp -Rp apr-1.5.2 httpd-2.4.34/srclib/apr2。Perl-Compatible Regular Expressions Library(PCRE)をインストールしていない
checking for pcre-config... false configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/解決方法#1
・pcre.orgサイトからpcreをダウンロードします
・プレフィックスをつけてコンパイルして、インストルしますvagrant ssh cd /usr/local/src/ cd pcre.8.39 sudo ./configure --prefix=/usr/local/pcre sudo make sudo make install・Apacheがインストールされているところで、pcreをつ使用してApacheをコンパイルします
cd http httpd-2.4.34 sudo ./configure --with-pcre=/usr/local/pcre sudo make make install解決方法#2
pcre-develをインストルするだけでした# Fedora Linux yum install -y pcre-devel解決方法#3
RHEL3では、pcre-configを指します。./configure --prefix=/usr/local/apache2 --with-pcre=/usr/local/pcreこれでApacheのインストールが完了しました。
次にいきましょう!
- 投稿日:2020-02-26T23:05:58+09:00
「インフラ知識」低のレイヤの勉強(01)
初めまして、潔(日本語の名)と申します。インフラ部は知識がありますが、バラバラです。具体的から勉強したことがありません。仕事の職場では大変ことがあります。考えているのはITエンジニアなら、インフラのことが知った方はいいともいますので、インフラの知識を調べて、メモを記入します。大先輩のオススメは低のレイヤの勉強から始まることです。下記の順番に記入する予定です。
一段階
1. Apacheをソースコードからコンパイルおよびインストール
2. PHPをSource Codeからコンパイルおよびインストール
3. PHPのMySQL Extenstionをソースコードからコンパイルおよびインストール
4. MySQLをソースコードからコンパイルおよびインストール
5. PHP FrameworkをInstall
二段階
1. Apache、MySQL、PHPのインストール
2. PHP FrameworkをInstall
三段階
1. Dockerのインストール
2. Apache + PHP Containerの構築
3. MySQL Containerの構築
4. PHP FrameworkをInstall
四段階
1. KubernetesでPHP/MySQL Webをデプロイしてみます
じゃあ、上から最後まで進めていきましょう。
最初は環境を準備しなければならない。Vagrantをきめます。
■ Vagrant環境を準備
vagrant up vagrant sshさて、Vagrant環境で操作していきます
■ Apache HTTP Server 2.4.34のソース展開
方法#1:サイトからプルしていきます
cd /usr/local/src sudo wget http://www-us.apache.org/dist/httpd/httpd-2.4.34.tar.gz sudo gzip -d httpd-2.4.34.tar.gz sudo tar xvf httpd-2.4.34.tar方法#2:Apacheのダウンロードのページにアクセスして、リンクをクリックします
リンク:https://httpd.apache.org/download.cgi
vagrant ssh cd /var/www/devOps sudo cp httpd-2.4.34.tar.gz /usr/local/src cd /usr/local/src tar zxvf httpd-2.4.34.tar.gz■ APR と APR-Utilの準備
Apache Portable Runtimeのページにアクセスして、
・apr-1.5.2.tar.gz
・apr-util-1.5.4.tar.gz
をダウンロードしますcd /usr/local/src sudo wget https://archive.apache.org/dist/apr/apr-1.5.2.tar.gz sudo gzip -d apr-1.5.2.tar.gz sudo tar xvf apr-1.5.2.tar # 展開したディレクトリをApacheのsrclibディレクトリにコピー。 sudo cp -Rp apr-1.5.2 httpd-2.4.34/srclib/apr sudo wget https://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz sudo gzip -d apr-util-1.5.4.tar.gz sudo tar xvf apr-util-1.5.4.tar # 展開したディレクトリをApacheのsrclibディレクトリにコピー。 sudo cp -Rp apr-util-1.5.4 httpd-2.4.34/srclib/apr-util■ configure実行
cd httpd-2.4.34 sudo ./configure■ make・make installを実行します
sudo make sudo make install注意:インストールするときエラー
1。APRのインストールしていない
checking for APR... no configure: error: APR not found. Please read the documentation.解決方法
APRのインストールしていきます cd /usr/local/src sudo wget https://archive.apache.org/dist/apr/apr-1.5.2.tar.gz sudo gzip -d apr-1.5.2.tar.gz sudo tar xvf apr-1.5.2.tar # 展開したディレクトリをApacheのsrclibディレクトリにコピー。 sudo cp -Rp apr-1.5.2 httpd-2.4.34/srclib/apr2。Perl-Compatible Regular Expressions Library(PCRE)をインストールしていない
checking for pcre-config... false configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/解決方法#1
・pcre.orgサイトからpcreをダウンロードします
・プレフィックスをつけてコンパイルして、インストルしますvagrant ssh cd /usr/local/src/ cd pcre.8.39 sudo ./configure --prefix=/usr/local/pcre sudo make sudo make install・Apacheがインストールされているところで、pcreをつ使用してApacheをコンパイルします
cd http httpd-2.4.34 sudo ./configure --with-pcre=/usr/local/pcre sudo make make install解決方法#2
pcre-develをインストルするだけでした# Fedora Linux yum install -y pcre-devel解決方法#3
RHEL3では、pcre-configを指します。./configure --prefix=/usr/local/apache2 --with-pcre=/usr/local/pcreこれでApacheのインストールが完了しました。
次にいきましょう!
- 投稿日:2020-02-26T21:07:26+09:00
bundle install時にMySQLのエラーが発生
bundle install時にMySQLのエラーが発生
RUNTEQのRuby on Railsの技術試験を受験し、環境構築をしていた際に以下のエラーが発生しました。
入力したコマンド
ターミナルbundle install --path=vendor/bundle発生したエラー
ターミナルGem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/atsukikomuro/projects/133_atsuki1224_runteq_selection_rails_basic/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/ext/mysql2 /Users/atsukikomuro/.rbenv/versions/2.6.4/bin/ruby -I /Users/atsukikomuro/.rbenv/versions/2.6.4/lib/ruby/2.6.0 -r ./siteconf20200226-71382-91nqge.rb extconf.rb checking for rb_absint_size()... yes checking for rb_absint_singlebit_p()... yes checking for rb_wait_for_single_fd()... yes ----- Using mysql_config at /usr/local/opt/mysql@5.6/bin/mysql_config ----- checking for mysql.h... yes checking for errmsg.h... yes checking for SSL_MODE_DISABLED in mysql.h... no checking for MYSQL_OPT_SSL_ENFORCE in mysql.h... no checking for MYSQL.net.vio in mysql.h... yes checking for MYSQL.net.pvio in mysql.h... no checking for MYSQL_ENABLE_CLEARTEXT_PLUGIN in mysql.h... yes checking for SERVER_QUERY_NO_GOOD_INDEX_USED in mysql.h... yes checking for SERVER_QUERY_NO_INDEX_USED in mysql.h... yes checking for SERVER_QUERY_WAS_SLOW in mysql.h... yes checking for MYSQL_OPTION_MULTI_STATEMENTS_ON in mysql.h... yes checking for MYSQL_OPTION_MULTI_STATEMENTS_OFF in mysql.h... yes checking for my_bool in mysql.h... yes ----- Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load ----- ----- Setting libpath to /usr/local/opt/mysql@5.6/lib ----- creating Makefile current directory: /Users/atsukikomuro/projects/133_atsuki1224_runteq_selection_rails_basic/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/ext/mysql2 make "DESTDIR=" clean current directory: /Users/atsukikomuro/projects/133_atsuki1224_runteq_selection_rails_basic/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/ext/mysql2 make "DESTDIR=" compiling client.c compiling infile.c compiling mysql2_ext.c compiling result.c compiling statement.c linking shared-object mysql2/mysql2.bundle ld: library not found for -lssl clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [mysql2.bundle] Error 1 make failed, exit code 2 Gem files will remain installed in /Users/atsukikomuro/projects/133_atsuki1224_runteq_selection_rails_basic/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2 for inspection. Results logged to /Users/atsukikomuro/projects/133_atsuki1224_runteq_selection_rails_basic/vendor/bundle/ruby/2.6.0/extensions/x86_64-darwin-18/2.6.0/mysql2-0.5.2/gem_make.out An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue. Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling. In Gemfile: mysql2解決策
以下のコマンドを入力後にbundle installを行うことで正常に終了しました。
ターミナルbundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"原因
後日記入します。
参考文献
RailsプロジェクトでMySQLがbundle installできなかった
bundle installでmysql2がエラーになる件
- 投稿日:2020-02-26T20:22:56+09:00
Apache環境でのMysql周りのあれこれ(備忘録)
- 投稿日:2020-02-26T15:40:27+09:00
PHPでMySQLからデータを取得したときにinteger型が文字列になる問題
問題の始まり
とあるSPAな案件をやっていて、慣れているPHPでAPIサーバ作ってやろう!
と初めてのAPIを構築していたところ、データベースからのレスポンスが全部文字列で帰ってくる。調べてみると、PDOでの解決方法はあれどmysqliはなかなか見つからずどうしたらいいんだ・・・
となったので備忘録がてらメモしておきます。PDOの場合
PDO::ATTR_EMULATE_PREPARES
をFALSE
にしましょう。
これはプリペアドステートメントをエミュレートモードで使用するというオプションで、デフォルトではTRUE
になっています。この場合、MySQLではなくドライバ側でエスケープ処理などが行われるのですが、
副作用でレスポンスがすべてStringで戻ってくるようになります。(型情報が失われる)ただし、エミュレーションのほうが早い1ので、オフにする場合は計画的に。
mysqliの場合
MYSQLI_OPT_INT_AND_FLOAT_NATIVE
をTRUE
にしましょう。というよりマニュアルにめっちゃ書いてあります。
コードを書くときはちゃんと公式マニュアルを読むようにしましょう・・・(します)注意点
こちらもPDOもそうですが、サーバ側がmysqlndに対応していないといけません。
おそらくその辺りの兼ね合いでデフォルトでは無効になっているんでしょうね。
- 投稿日:2020-02-26T11:25:06+09:00
AWS RDS MySQLについて知らなければならない最も大切なこと
AWS RDS MySQLについて知らなければならない最も大切なことを簡単に、簡潔にご紹介しようと思います、
メジャーバージョンをあげるな。
特にフロントエンドまわりの方は、バージョンを最新にあげるのが最低限のマナーだと思っている方が多いかと思います。私もそうです。しかしながら、AWS RDS MySQLはバージョンを最新にすると使えなくなるサービスが多々あります。ざっとあげると
- Amazon Aurora MySQL(MySQL5.6/5.7のみレプリケーション可能)
- RDSパフォーマンスインサイト (MySQL5.6/5.7のみ可能)
まだこのふたつは問題ありません。Auroraは別途のチューニングが必要ですし、パフォーマンスインサイトは分析しなければ利用しなければいいだけです。致命的なのは
- Amazon RDS Proxy (MySQL5.6/5.7のみ可能)
現在、MySQLバージョン5.6または5.7で実行されるAmazon RDS MySQL、または、Aurora MySQLをサポートしています。
https://aws.amazon.com/jp/blogs/news/using-amazon-rds-proxy-with-aws-lambda/いや、プレビュー版なのはわかってます。けど、Lambdaでコネクションプールを考えるとRDS Proxyはまさに救世主でプレビュー版でも本番に投下したかったのです。私のプロダクション環境はRDS MySQL8系なので上記は一切使えませんが。Lambdaで環境構築をすませましたが、ElasticBeanstalkに切り替えます・・・。
使う予定はない?私もなかったです。けど、使いたくなるときはいつくるかわかりません。
AWS RDS MySQL使うなら「最新バージョンにしよう」とか思わずに、5.7のマイナーアップデートにしておくことをおすすめします。
それでは、また。
- 投稿日:2020-02-26T11:22:17+09:00
メモ②-SELECT文の基本-
【仮定・予備知識】
「->」←これはEnterキーで改行したことを表す記号。
MySQLでは、「;」を入力しない限り、いくらでも改行することができる。
また、「SELECT 」の「」印は、「すべての項目」を扱いたいときに使うもの。①練習用データベース「company」のemployeeテーブルを、コード順に並び替えたいとき
昇順に並べる場合↓
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee;
もしくは
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> ORDER BY
-> code ASC;降順に並べる場合↓
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> ORDER BY
-> code DESC;②companyデータベースのemployeeテーブルから「伊藤英樹」を抽出する場合
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> WHERE
-> name = "伊藤英樹";③companyデータベースのemployeeテーブルから血液型A型の人を抽出する場合
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> WHERE
-> blood = "A";④companyデータベースのemployeeテーブルから基本給(basic_salary)が23万円以上の人を抽出する
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> WHERE
-> basic_salary >= 230000
-> ORDER BY
-> basic_salary ASC;⑤companyデータベースのemployeeテーブルからコード(code)と基本給(basic_salary)だけを表示し、
基本給が23万円以上の人だけを抽出する
MariaDB [company]> SELECT
-> code,basic_salary
-> FROM
-> tbl_employee
-> WHERE
-> basic_salary >= 230000
-> ORDER BY
-> basic_salary ASC;・・・③へ続く
- 投稿日:2020-02-26T11:22:17+09:00
MySQLやったことメモ②
【仮定・予備知識】
「->」←これはEnterキーで改行したことを表す記号。
MySQLでは、「;」を入力しない限り、いくらでも改行することができる。
また、「SELECT 」の「」印は、「すべての項目」を扱いたいときに使うもの。①練習用データベース「company」のemployeeテーブルを、コード順に並び替えたいとき
昇順に並べる場合↓
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee;
もしくは
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> ORDER BY
-> code ASC;降順に並べる場合↓
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> ORDER BY
-> code DESC;②companyデータベースのemployeeテーブルから「伊藤英樹」を抽出する場合
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> WHERE
-> name = "伊藤英樹";③companyデータベースのemployeeテーブルから血液型A型の人を抽出する場合
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> WHERE
-> blood = "A";④companyデータベースのemployeeテーブルから基本給(basic_salary)が23万円以上の人を抽出する
MariaDB [company]> SELECT *
-> FROM
-> tbl_employee
-> WHERE
-> basic_salary >= 230000
-> ORDER BY
-> basic_salary ASC;⑤companyデータベースのemployeeテーブルからコード(code)と基本給(basic_salary)だけを表示し、
基本給が23万円以上の人だけを抽出する
MariaDB [company]> SELECT
-> code,basic_salary
-> FROM
-> tbl_employee
-> WHERE
-> basic_salary >= 230000
-> ORDER BY
-> basic_salary ASC;・・・③へ続く
- 投稿日:2020-02-26T10:57:24+09:00
メモ①-DB起動からテーブル一覧の表示まで-
【仮定】
MariaDBの導入・環境構築は終わっているものとする<0>
①コマンドプロンプトからMariaDBを起動するには
mysql -u ユーザー名 -pを入力し、Enter。②現在手元にあるデータべース一覧を表示する
MariaDB [(none)]> SHOW databases;③使用するデータベースを選択する
MariaDB [(none)]> USE データベース名;④データベースに含まれるテーブル一覧を表示する
MariaDB [world]> SHOW tables;⑤テーブルに含まれる項目一覧を表示する
MariaDB [world]> DESC テーブル名;・・・②へ続く
- 投稿日:2020-02-26T10:57:24+09:00
MySQLやったことメモ①
【仮定】
MariaDBの導入・環境構築は終わっているものとする<0>
①コマンドプロンプトからMariaDBを起動するには
mysql -u root -pを入力し、Enter。②現在手元にあるデータべース一覧を表示する
MariaDB [(none)]> SHOW databases;③使用するデータベースを選択する
MariaDB [(none)]> USE データベース名;④データベースに含まれるテーブル一覧を表示する
MariaDB [world]> SHOW tables;⑤テーブルに含まれる項目一覧を表示する
MariaDB [world]> DESC テーブル名;・・・②へ続く