0%

Google検索エンジンの検索に出すために、
記事を追加する度にサーチコンソールにURLを登録していました、
sitemap.xmlを登録する事で、都度登録する必要がなくなります。

手順

sitemap.xml生成プラグインをインストール

1
2
3
$ npm install hexo-generator-seo-friendly-sitemap --save
package.jsonをgitに追加します
$ git add package.json

_config.ymlに追記

以下の行をHexoプロジェクト直下の_config.ymlに追記する事で、
hexo generate時にsitemapが作成される様になります。

1
2
sitemap:
path: sitemap.xml

hexo generateをしてみます

1
2
3
4
5
6
7
8
$ hexo generate
INFO Start processing
INFO Files loaded in 614 ms
INFO Generated: post-sitemap.xml
INFO Generated: sitemap.xml
INFO Generated: tag-sitemap.xml
INFO Generated: index.html
INFO 5 files generated in 1.14 s

今回幾つかsitemapが作成された事がわかります。

  • post-sitemap.xml
    • 記事毎のページが記載されたsitemap
  • tag-sitemap.xml
    • タグ毎のページが記載されたsitemap
  • sitemap.xml
    • 内容見てもよくわからない(?)

sitemapをサーチコンソールに登録

sitemapの登録はここから行えます。

登録に失敗する場合は、
_config.ymlに記述しているURL部分が間違っている可能性があります。
このURLはデプロイ後にアクセスするページのURLを指定しておく必要があります。

以下例

1
url: https://sakkuntyo.github.io

go installしてたら「gcc.exe」が無いとビルドできないぞ!
と言われたので、mingw64のバイナリから持ってくる方法を覚えました。

前提

  • Windows10
    • Git

手順

Gitをインストール

Windows向けのGitはここからインストーラを入手できます。

起動し、全て「はい」を選択したとして次の手順に進みます。

MinGW-w64のバイナリをダウンロード

ここの下の方にあるx86_64-win32-sjljを選択しダウンロードします。

このファイルはダウンロードフォルダに置いておいてください。
解凍するために、7zipをインストールします。

7-zipのインストール

ここからダウンロードし、インストールします。

解凍

GitBashを管理者権限で開き、以下コマンドを実行して解凍します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ cd ~/Downloads
前半は7z.exeのパス、xはeXtractのx、最後は7zipファイルのファイル名
$ /c/Program\ Files/7-Zip/7z.exe x x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z
7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21

Scanning the drive for archives:
1 file, 52785774 bytes (51 MiB)

Extracting archive: x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z
--
Path = x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z
Type = 7z
Physical Size = 52785774
Headers Size = 109370
Method = LZMA2:26 LZMA:20 BCJ2
Solid = +
Blocks = 2

Everything is Ok

Folders: 340
Files: 13669
Size: 527855563
Compressed: 52785774

解凍が終わると、またコマンドが打てる様になるため、mingw64フォルダが作成されている事を確認します。

1
2
$ ls
mingw64 x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z

gccなどをGitのインストールディレクトリにコピー

GitBashを管理者権限で開き、以下のコマンドを実行します。

1
2
3
4
解凍してできたmingw64フォルダ内のbinフォルダに移動
$ cd ~/Downloads/mingw64/bin
tarで既存のファイルに上書きはしないオプションを付けて、Gitのmingw64/binにコピー
$ tar -cvf - . | tar -xvf - --keep-newer-files -C /c/Program\ Files/Git/mingw64/bin/

この後GitBashを起動し直すと、gccが使用出来る様になっています。

WSLのUbuntuを使っていて、sudoの度に「めんどくさいなあ」と思っていた時に見つけた方法です。

環境

  • Windows 10
    • Ubuntu18.04(WSL)
    • Ubuntu16.04(WSL)

手順

Windowsの機能「Windows Subsystem for Linux」を有効化する

Windowsキー -> 「機能の有効化」と検索し、「Windowsの機能の有効化または無効化」を開く -> Windows Subsystem for Linuxを探してチェックする

その後、再起動する

Windows StoreからUbuntuをインストールする

スタートメニューから「Microsoft Store」を開く -> どれでもよいのでUbuntuをインストール

初期ユーザー名を「root」で指定する

スタートメニューからUbuntuを開き、ユーザー名を聞かれたら「root」と入力

既に存在しているユーザーです!(英語)と言われるが、そのまま閉じる

再度Ubuntuを起動する

なんと、rootでログインしています。

環境

  • Ubuntu 16.04(KAGOYA VPS KVM)

Apacheって何

  • ブログやホームページを公開するために使う事が出来るウェブサーバ

特徴

  • phpやCGIを用いた動的コンテンツの表示が出来る
  • リバースプロキシとしても使用できる
  • 使われ始めてからの歴史が長い

初期ページを表示するまでの手順

ポート解放とApacheのインストール、起動

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$ apt update

ufw(ファイアウォール)をインストール
$ apt install ufw

インストール直後はufwはファイアウォールとして指定されないためufwを有効化
$ ufw enable

「このコマンドを実行するとssh接続が切れるかも知れませんがいいですか?」と聞かれるので y を入力してEnter

sshのポートを開く
これを行わないとssh切断したあと接続出来なくなってしまいます!
$ ufw allow 22

Apacheが使用するポートを開く
$ ufw allow 80

Apacheをインストールする
$ apt install apache2

Apacheが稼働している事を確認する
$ curl localhost && echo success || echo failed

successと表示されればApacheは起動出来ています。
表示された長いhtmlはデフォルトページのhtmlソースです。

自分のIPアドレスを確認する
$ ifconfig | grep "inet addr:"

192.168.1.xや127.0.0.1といったIPアドレスが表示されると思います
これらはローカルIPや、グローバルIPと呼ばれます。
127.0.0.1は、ループバックアドレスと呼ばれ、自分自身を表すIPアドレスとなります。

実際にページを表示してみる

同じネットワーク内の他のPCからウェブサーバを利用してみます。
ブラウザを起動し、先ほど確認したローカルIP、又はグローバルIPをアドレスバーに入力します。

このような画面が表示されると思います。
スクリーンショット 2018-07-02 2.04.52.png
Apacheではこれが初期ページとして設定されています。

ページを追加、変更する

ページを追加する

Apacheがブラウザに送ってくれているhtmlは /var/www/html/ となっている様です。
ここを ドキュメントルート と呼びます。
ここにファイルを配置する事でApache経由で参照する事ができるようになります。

1
2
3
4
ドキュメントルートに移動する
$ cd /var/www/html/
新しいページのファイルを作成する、アクセスする際のページ名は「test.html」とします
$ echo "Hello World!" > ./test.html

実際にページを表示してみる

他のPCからページを
同じネットワーク内の他のPCからウェブサーバを利用してみます。
ブラウザを起動し、下記のようにアドレスバーに入力します。

この様な画面が表示されます。
スクリーンショット 2018-07-02 0.07.53.png
以上となります、Nginxが気になる方はこちら

https://qiita.com/noma3629/items/807f25f9eb13525eebef

環境

  • Ubuntu16.04(KAGOYA VPS KVM)

Nginxって何

  • Apacheの代替となり得るWebサーバ

Apacheとの違い

  • C10Kをクリアしていて静的コンテンツを返すレスポンスが早い
    • C10Kとは・・・クライアント一万人接続問題の事
  • イベント駆動
    • イベント駆動のおかげでスレッドを有効に使う事ができるため早い
    • 一応Apacheでもイベント駆動には出来るがNginxの方が早い

じゃあApacheは良くないの?

Apacheの武器はそこではなく、Nginxよりも古くからユーザーに使われているため、

様々なモジュールがあり、色々な用途に使う事ができます。

Nginxとは?Apacheとの違いについてエンジニアに聞いてみた
https://academy.gmocloud.com/qa/20160616/2761

phpやCGIを使用した動的な処理をしたい場合にはApache
速度やアクセス数を求めたい場合にはNginx
といった使い方がよさそうです。
どっちも使って、お互いのデメリットを埋める事も出来るそうです

初期ページを表示するまでの手順

ポート解放とNginxのインストール、起動

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ apt update

ufw(ファイアウォール)をインストール
$ apt install ufw
インストール直後はufwはファイアウォールとして指定されないためufwを有効化
$ ufw enable
「このコマンドを実行するとssh接続が切れるかも知れませんがいいですか?」と聞かれるので y を入力してEnter

sshのポートを開く
これを行わないとssh切断したあと接続出来なくなってしまいます!
$ ufw allow 22

Nginxが使用するポートを開く
$ ufw allow 80

Nginxをインストールする
$ apt install nginx

Nginxが稼働している事を確認する
$ curl localhost
curlでウェブページにアクセスすると、そのページのhtmlの内容が帰って来ます

自分のIPアドレスを確認する
$ ifconfig | grep "inet addr:"
192.168.1.xや127.0.0.1といったIPアドレスが表示されると思います
これらはローカルIPや、グローバルIPと呼ばれます。
127.0.0.1は、ループバックアドレスと呼ばれ、自分自身を表すIPアドレスとなります。

実際にページを表示してみる

同じネットワーク内の他のPCからウェブサーバを利用してみます。
ブラウザを起動し、先ほど確認したローカルIP、又はグローバルIPをアドレスバーに入力します。

このような画面が表示されると思います。
スクリーンショット 2018-07-01 23.47.42.png

Nginxではこれが初期ページとして設定されています。

ページを追加、変更する

ドキュメントルートを確認する

1
2
$ grep "root" -r /etc/nginx/ | grep "html"
/etc/nginx/sites-available/default: root /var/www/html;

私の場合はこう表示されました。
Nginxのバージョンなどによってパスが違う様なので、このように調べるのが確実です。
どうやらページとなるhtmlファイルが保存されているのは /var/www/html ディレクトリの様です。
ここを ドキュメントルート と呼びます。

ページを追加する

1
2
3
4
ドキュメントルートに移動する
$ cd /var/www/html/
新しいページのファイルを作成する、アクセスする際のページ名は「test.html」とします
$ echo "Hello World!" > ./test.html

実際にページを表示してみる

他のPCからページを
同じネットワーク内の他のPCからウェブサーバを利用してみます。
ブラウザを起動し、下記のようにアドレスバーに入力します。

この様な画面が表示されます。
スクリーンショット 2018-07-02 0.07.53.png
以上となります。

Apacheが気になる方はこちら

UbuntuとApacheでウェブサーバを立てる - Qiita

ターミナルに出てきた文字列をコピーしたい、
ただしマウス触るのがめんどくさい。。。
そんな時に

環境

  • Ubuntu18.04

インストール

1
2
$ apt update
$ apt install xsel -y

使い方

1. 出力をクリップボードにコピー

1
$ echo "Hellow" | xsel --clipboard --input

この後右クリックやCtrl+Vで貼り付けできる様になっています。

GitHubにリポジトリを作りたい、
けどそのためだけにマウスを動かすのがめんどくさい、、、
そんな時に行う操作です。

環境

  • Ubuntu18.04

手順

hubコマンドのインストール

1
2
3
$ sudo add-apt-repository ppa:cpick/hub
$ sudo apt update
$ sudo apt install hub

sshの設定

hubコマンドはsshの接続名(github.com)を使用するため、
~/.ssh/configにgithub.comの設定を記述しておく必要があります。

そのため、以下の様な内容にしておきます。

1
2
3
Host github.com
Hostname github.com
IdentityFile <githubに登録済の鍵のパス>

GitHubにリポジトリを作成する

1
2
3
4
5
6
7
$ mkdir test-repository
$ cd test-repository
$ hub init
以下のコマンドでgithubにリポジトリが作成されます、プライベートで作成する場合は-pオプションを付けます。
$ hub create
Updating origin
created repository: sakkuntyo/test-repository

3OSで同じ手順でできます

WindowsはWSLを入れ、WSLからコマンド操作を行います。

手順

nvmをインストール

1
$ git clone https://github.com/creationix/nvm ~/.nvm

パスを通す

1
$ source ~/.nvm/nvm.sh

次回ターミナル起動時に自動でパスを通す

1
$ echo "source ~/.nvm/nvm.sh" >> ~/.bashrc

nodejsとnpmをインストール

1
2
$ nvm install --lts
# バージョンを指定するのであれば --lts の代わりにバージョンを入力

nodejsのバージョンを確認

1
$ node -v

npmのバージョンを確認

1
$ npm -v

Windowsを入れている端末にLinuxをインストールすると、
RTCの時刻がLinuxに変更され、
Windowsで表示される時間がズレることがあります。
そんな時にいつも行う操作のメモ

RTCとは

マザーボードが記憶した時刻です。
OSを起動した際にマザーボードから時刻が取得できる場合には、
まず最初にRTCの時刻を取得し、使用されます。

ポイント
インターネットに繋がる場合は、NTPを利用した時刻同期が行われます。
インターネットにも繋がらず、RTCからの時刻取得もできない場合には、
以前シャットダウンした時刻を使用する事があります。(Ubuntu14,16,18で体験)

何故Windowsの時刻もズレてしまうのか

timedatectlコマンドを実行するとわかりますが、
Debianは少なくとも3つの時刻にアクセスし、それぞれの時刻を変更する事ができます。

1
2
3
4
5
6
7
8
$ timedatectl
Local time: 金 2019-11-15 01:28:34 JST
Universal time: 木 2019-11-14 16:28:34 UTC
RTC time: 木 2019-11-14 16:28:34
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
  • Local Time(指定したタイムゾーンの時間)
  • Universal Time(世界標準の時間、UTC)
  • RTC Time(マザーボードの時間)

Linux(例えばUbuntu)を起動した際に、
RTCの時刻がUTC時刻等に合わされて調整されてしまうためです。

この記事を書いているのは日本時間(JST)でいうとAM 1:00ですが、
UTCでは9時間前の前日のPM 4:00となっています。

Linuxがデフォルトで持つ時間がUTCであり、
それを定期的にRTCに同期を行っているため、
次にWindowsを起動した場合に、「時刻がズレている」という状態になります。

じゃあどうするのか

Linuxから2つの操作を行います。

  • タイムゾーンを指定し、Local Timeを日本時間に変更
  • Local TimeをRTCに同期する様に変更

手順

次の操作はLinux上で行います。

現在の時刻と設定を確認する

timedatectlコマンドを実行し、時刻を確認します。

1
2
3
4
5
6
7
8
$ timedatectl
Local time: 金 2019-11-15 16:28:34 UTC
Universal time: 木 2019-11-14 16:28:34 UTC
RTC time: 木 2019-11-14 16:28:34
Time zone: UTC (UTC, +0000)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no

ここで確認したいのは

  • タイムゾーン
  • RTCへLocal Timeを同期するか

です。

タイムゾーンはUTC、RTCへLocal Timeを同期しない設定となっています。

そのため、次にWindowsを起動した際にはRTCの時刻がズレた状態となります。

タイムゾーンをJSTにする

JSTとは日本時間の事です。

次のコマンドでタイムゾーンを日本時間に変更します。

1
$ timedatectl set-timezone Asia/Tokyo

念の為、設定が変わった事を確認します。

1
2
3
4
5
6
7
8
$ timedatectl
Local time: 金 2019-11-15 01:35:59 JST
Universal time: 木 2019-11-14 16:35:59 UTC
RTC time: 木 2019-11-14 16:35:59
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no

RTCに同期する時刻をLocal Timeにする

次のコマンドでRTCにLocal timeを同期させる設定を行います。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ timedatectl set-local-rtc true
Local time: 金 2019-11-15 01:38:59 JST
Universal time: 木 2019-11-14 16:38:59 UTC
RTC time: 金 2019-11-15 01:38:59
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: yes

Warning: The system is configured to read the RTC time in the local time zone.
This mode can not be fully supported. It will create various problems
with time zone changes and daylight saving time adjustments. The RTC
time is never updated, it relies on external facilities to maintain it.
If at all possible, use RTC in UTC by calling
'timedatectl set-local-rtc 0'.

何やら注意が出ていますが、Google翻訳をかけた所は以下の様なメッセージでした。

警告:システムは、ローカルタイムゾーンでRTC時間を読み取るように構成されています。
このモードは完全にはサポートできません。さまざまな問題が発生します
タイムゾーンの変更と夏時間の調整。
RTC時間が更新されることはなく、外部の設備に依存して維持されます。
可能な場合は、UTCでRTCを使用して呼び出します
‘timedatectl set-local-rtc 0’

ここでWindowsの時刻がズレない設定は完了です。

Ubuntu14,16,18とこの設定を使用していますが、今の所問題は見当たりません。

前提環境

  • Linux Mint19 Mate

手順

phpをインストール

1
2
3
4
5
$ sudo apt update
$ sudo apt install -y php7.2 php7.2-mbstring php7.2-xml php7.2-gd php7.2-zip
$ sudo apt install -y sqlite3 php7.2-sqlite3 php7.2-mysql
$ php --version
$ php -m

composerをインストール

1
2
3
4
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
$ sudo chmod +x /usr/local/bin/composer
$ composer --version

Laravelをインストール

1
$ composer global require laravel/installer

パスを通す

1
2
echo export PATH="~/.config/composer/vendor/bin:$PATH" >> ~/.bash_profile
source ~/.bash_profile

実際に起動しブラウザで確認

1
2
3
4
5
$ laravel new test
$ cd test
$ php artisan --version
$ php artisan serve --host 0.0.0.0
Laravel development server started: http://0.0.0.0:8000

ブラウザで接続してみると以下の様な画面が表示される

laravel