読者です 読者をやめる 読者になる 読者になる

記録として残しておきたいブログ

主にプログラミングについて書きます

Raspbianにnginxをインストールする(最新版のインストールの仕方がわからない)

環境

Raspberry pi3
OS: Raspbian jessie lite

nginx(エンジンエックス)をインストー

Raspbianだと以下のコマンドでnginxをインストールできるが古いバージョン(バージョン1.6.2)のnginxがインストールされる。(2017/5/20時点での最新バージョンは1.12.0)

nginxをインストー

$ sudo apt-get install nginx
...
$ nginx -v 
nginx version: nginx/1.6.2

nginxのバージョン1.6.2(古いバージョン)がインストールされた

もしかしたら脆弱性とかありそうだし、最新バージョンのnginxをインストールしたい!!!!

結論から申しますと、

最新版をインストールしたかったんですが、できませんでした!!!!

1.6.2でやっていくしかないかな...


以下の2つの方法で試しましたができませんでした

最新バージョンのnignxをインストール(1)

ダウンロード設定ファイルに追加する。

apt-get updateコマンドでデータベースの更新を行う際に、sources.list に記述されているアーカイブ内のパッケージ一覧から探す。そのため、記述を追加する。

/etc/apt/sources.list をテキストエディタで開き、以下の文を追加する。
$ sudo vim /etc/apt/sources.list
# /etc/apt/sources.list
deb http://nginx.org/packages/mainline/debian/ jessie nginx
deb-src http://nginx.org/packages/mainline/debian/ jessie nginx

/etc/apt/preferencesファイルの作成

# /etc/apt/preferences
Pakage: *
Pin: release n=jessie
Pin-Priority: 600

nginxの導入

$ sudo apt-get install -t jessie nginx
$ nginx -v
nginx version: nginx/1.6.2

1.6.2じゃん...

もう1.6.2でいいや!!!!


参考サイト
APT HOWTO (Obsolete Documentation) - パッケージの管理


以下の方法ではsudo apt-get update でエラーが出てしまいできなかった

最新バージョンのnignxをインストール(2)

nginxリポジトリから最新版をインストールをする

キーを追加する

以下のコマンドで認証に使うための鍵を追加する

$ sudo wget http://nginx.org/keys/nginx_signing.key
...
`nginx_signing.key` へ保存完了
$ sudo apt-key add nginx_signing.key
OK

wgetコマンドでファイルをダウンロードし、apt-keyコマンドのaddオプションでキーを追加する。(nginx_signing.keyは公開鍵かな?ファイルの最初の行にPGP PUBLIC KEY BLOCKって書いてあるから)

apt-keyって何

Man page of APT-KEY

apt-key は、apt が パッケージを認証するのに使用するキーの一覧を管理するのに使用します。このキーで認証されたパッケージは、信頼するに足ると見なせるでしょう。

認証をするために鍵を使うから管理をするってことかな?

ソースの追加

apt-get updateコマンドでデータベースの更新を行う際に、sources.list に記述されているアーカイブ内のパッケージ一覧から探す。そのため、記述を追加する。

/etc/apt/sources.list をテキストエディタで開き、以下の文を追加する。
deb http://nginx.org/packages/mainline/debian/ jessie nginx
deb-src http://nginx.org/packages/mainline/debian/ jessie nginx
コードネームの確認

jessieの部分はDebianのコードネームを書くらしい。一応、コードネームを確認してみた
バージョン確認の方法(raspbian(Raspberry Pi)のバージョン確認方法 | Check!Site
lsb_release -a で確認できる

$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 8.0 (jessie)
Release:        8.0
Codename:       jessie

コードネームは「jessie」でした。

パッケージ一覧を更新

$ sudo apt-get update

エラーが出て更新できない(´;Д;`)


もし、この記事を見た方でRaspbianに最新バージョン(最新でなくても1.6.2以降のバージョン)をインストールできた方いましたら教えていただけると嬉しいです

Git Your branch is up-to-date with 'origin/master'.って何

master以外のブランチ(developブランチとか)からmasterブランチにチェックアウトしたときに「Your branch is up-to-date with 'origin/master'.」って表示された

いろいろやってみたけど、最終的にたどり着いた答えが「あなたのorigin/masterは最新ですよ!」ってことなのかな?

「前回リポートリポジトリと同期したときより進んでたから更新しといたよ」って感じ

Gitが教えてくれてるだけだから気にしなくていい表示らしい

以下、いろいろやってみたこと

~~~~~~~~~~~~~~~~~

一応、masterブランチにはチェックアウトできてるんだけど気になる...

$ git branch
* develop
  master
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
$ git branch
  develop
* master

masterよりもdevelopのほうが先に進んでるから「Your branch is up-to-date with 'origin/master'.」って表示が出るのかも?(とか仮説を立ててみたりした)

masterブランチにdevelopブランチの変更をプルリクエストしてみる

リモートのmasterブランチに変更を反映するにはプルリクエストをするらしい?(新たな発見)

GitHub上からプルリクエストを送ることでマージできるようになる!!(とか思ったりした)
「developブランチの変更をmasterブランチに反映してください」っていうリクエストを送る


プルリクエストの仕方は以下のサイトを参考にいたしました
qiita.com

リモートリポジトリに反映した変更をリモートリポジトリにも反映させる(pull)

プルリクエストでの変更をmasterにマージした後に、

pullコマンドを使ってローカルリポジトリにも変更を反映する。

$ git pull origin master
...

でも、やっぱり「Your branch is up-to-date with 'origin/master'.」は消えなかった!!


~~~~~~~~~~~~~~~~~


今回、いろいろやってみて、

リモートリポジトリのmasterブランチに変更を反映させるにはプルリクエストを送る
リモートリポジトリに反映させた変更をローカルリポジトリに反映させるにはプルを使う

ということが学べたので良かったです。

MySQL 絵文字のデータを挿入できない

MySQL: 5.5.54-0+deb8u1 (Raspbian)

MySQLに絵文字を入れようと思うとutf8では入れられないらしい。utf8mb4という文字コードが用意されていて、それを使えば対応できるそうです。

MySQLのutf8は1文字3バイトとして扱っている。しかし、絵文字などは1文字4バイトになっているためデータを扱えない。


http://okamerin.com/nc/title/mysql_utf8mb.htm
MySQLの文字コードをutf8mb4にする - light log

my.cnfの設定

自分のmy.cnfは /etc/mysql/my.cnfにあった

クライアントとサーバーの文字コードを設定する

[client]
...
#default-character-set = utf8
default-character-set = utf8mb4   # utf8mb4に変更

[mysqld]
...
#character-set-server = utf8
character-set-server = utf8mb4   # utf8mb4に変更

データベースの文字コード設定

mysql> alter database databasename default character set utf8mb4;

テーブルの文字コードを設定

mysql> ALTER TABLE m_listener DEFAULT CHARACTER SET utf8mb4;
mysql> ALTER TABLE latest_comments DEFAULT CHARACTER SET utf8mb4;

列の文字コードの設定

mysql> ALTER TABLE m_listener MODIFY user_name VARCHAR(45) CHARACTER SET utf8mb4 NOT NULL;
mysql> ALTER TABLE latest_comments MODIFY message VARCHAR(360) CHARACTER SET utf8mb4 NOT NULL;


MySQLの再起動
sudo /etc/init.d/mysql restart

Python:ファイルへの書き込み

Pythonでのファイル操作 - Qiita参考にさせていただきました。

# 上書き
with ("myfile.txt", "w") as f:
    f.write("hello world\n")

# 追記
with ("myfile.txt", "a") as f:
    f.write("hoge")

もし、指定したファイルが存在していなかった場合には作成してくれる

MySQL データベースとユーザーの作成

環境

Raspberry pi3
OS: Raspbian jessie lite
MySQL: 5.5.54-0+deb8u1 (Raspbian)

やること

1.データベースの作成
2.ユーザーの作成
3.権限の付与
4.パスワードの設定


データベースの作成

rootでログインする

例)testdb という名前のデータベースの作成

mysql> create database testdb;

ユーザの作成

(1)ユーザの作成、権限付与
例)user1という名前のユーザを作成

・user1は testdbのすべてのテーブルにアクセス可能
・uesr1は権限付与以外の権限を持っている

mysql> GRANT ALL ON testdb.* TO user1@localhost;


(2)設定を反映

mysql> FLUSH PRIVILEGES;


(3)作成したユーザにパスワードを設定する
例)user1のパスワードに「password」を設定する

mysql> SET PASSWORD FOR user1@localhost=password('password');


参考サイト
MySQL/ユーザとDB作成 - MinacoWiki

【メモ】MySQLdbをimportできるようになるまでのコマンド

環境

Raspberry pi3
OS: Raspbian jessie lite

PythonからMySQLに接続したくて躓いた

f:id:tmg1998:20170409004309p:plain

PythonからMySQLに接続するための準備として mysqlclient をpipでインストールしたかったけど、なんかできなかった


いろいろ調べながらコマンドうってて、どのコマンドによってできるようになったのかがよくわからないから実行したコマンドを載せておく

$ sudo apt-get install python-pip

$ sudo apt-get install python-dev python3-dev

$ sudo apt-get install libmysqlclient-dev

$ pip install -U pip

$ easy_install -U setuptools

$ sudo apt-get install python-mysqldb

$ pip3 install mysqlclient

とりあえず、できてよかった(?)




参考にしたサイトはたくさんあってよくわかりませんでした。