折りたたみボタン(Expander編)

▼問題:expanderの記述方法は
 
▼問題:2×25=

参考:【WordPress】ネタバレなどをクリック表示するプラグイン「Expander」

カテゴリー: html | コメントする

折りたたみボタン

折りたたみ展開ボタン
方法1

方法2

カテゴリー: html | コメントする

WordPressのインストールと設定

1.PHP7対応のCMSってまだまだ少ない。日本国内で制作されたと思われるCMSはほぼPHP5止まり。

WordPress Drupal Joomlaを試してみたところ、PHP7でいずれも稼働する。だから、どれを選ぶかは好みの問題。日本語にも対応していて情報も多いWordpressが無難かも。

参考:The PHP Security Platinum Standard: Raising the Bar with CMS Airship

2.Wordpressのインストール

(1)インストールする場所の選択

Archlinux版のapacheであれば、/srv/http/ nginxであれば/usr/share/nginx/html/がデフォルトの設置場所ということになるが、ここに直接インストールすることも可能だが、セキュリティ上、ここに更にディレクトリを作成し、これにインストールすることをすすめる。例えば/usr/share/nginx/html/wordpress/のように。

(2)インストールする前にデータベースの作成(phpmyadminで作成)

ウェブブラウザで、phpMyAdmin を開いて以下の手順に従ってください:
phpMyAdmin にログイン。
“user” をクリックしてから “Add user” をクリック。
ポップアップウィンドウに名前とパスワードを記入。
“Create database with same name and grant all privileges” を選択。
“Add user” ボタンをクリックしてユーザーを作成。
ArchWikiより

(3)Wordpressの設置

任意のディレクトリに最新のWordpressをダウンロード

英語版は wget https://wordpress.org/latest.tar.gzで最新バージョンが手に入るが、日本語版を手に入れる場合には、Worpress.org日本語にアクセスして、最新バージョンを確認する。そのうえで、

$ wget https://ja.wordpress.org/wordpress-4.6.1-ja.tar.gzでダウンロード。

$ tar zxvf wordpress-4.6.1-ja.tar.gzで解凍。すると現在のディレクトリ配下にwordpressというディレクトリが作成され、その下に解凍されたファイルが並ぶ。

もしインストールするディレクトリがworpressでよければ

$ sudo cp -R * /usr/share/nginx/html/を実行して、解凍したwordpressディレクトリごと公開ディレクトリにコピーする。

いや、wpなどの任意のディレクトリにインストールしたければ、

$ sudo mkdir /usr/share/nginx/html/wp/とインストールするディレクトリを予め作成。

$ sudo cp -R wordpress/*  /usr/share/nginx/html/wp/でwordpressディレクトリに展開(1)でされたファイルをコピーする。

(4)php.iniファイルの変更

sudo nano /etc/php/php.ini

open_basedir= /usr/share/nginx/html/wordpress
(open_basedir にWordpressのインストールディレクトリを追加)

(5)Wordpressのインストール

webブラウザでhttp://サーバのIPアドレス/wordpress/(またはwp)にアクセス。

(2)で作成したユーザIDとパスワードでログイン。すると既に作成してあるデータベースが選択できるので、それを選択する。あとは画面に表示された操作に従って操作すればインストール完了です。

それが終了すると、管理者の設定画面に入るので、管理者の名前、パスワードを控えておいて、ログインするだけ。

(6)外部への公開

この段階では、内部からしかアクセスできず、このあと自宅サーバでCMSのような手法が必要となる。なぜならば、この段階のWordpressはローカルIPアドレスまたはlocalhostのもとで運用されているからだ(Wordpressのダッシュボードの設定(一般)画面で表示されるWordpressのアドレスにはローカルIPアドレスまたはlocalhostが設定されている)。

しかしIPv6であれば外部公開も内部からのアクセスにもドメインの運用が可能だ。今回はIPv6による公開方法を記載する。

そのためには、IPv6で接続させてくれるプロバイダへの乗り換えと、nginxの設定、Wordpressのアドレスの修正が必要となる。

[nginxの設定]

serverブロックに listen [::]:80 ipv6only=on;を追記し、nginxを再起動する。

$ sudo nano /etc/nginx/nginx.conf

server{
listen 80;
listen [::]:80 ipv6only=on;
・・・・・・
}

$ sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

$ sudo systemctl restart nginx

[Wordpressの修正]

ダッシュボードの設定(一般)画面の上から3行目「WordPressのアドレス(URL)」をhttp://IPアドレス/wordpress/からhttp://ドメイン名/wordpress/に修正する。また投稿の中に挿入したメディア(写真)などのアドレスの修正が必要となる。

カテゴリー: CMS, IPv6, wordpress | コメントする

REX-230UH これって意外と使える?

REX-230UH

dsc_1053-225x300

2台のPCを1組のキーボード、マウス、ディスプレイ(HDMI)で共有できる、いわゆる切替器ですが、いろいろなUSB機器を認識してくれます。

USBキーボード(マウス機能を有するもの)を使えば、USBの出力端子が1個余ります。

これに色んな物を接続してみました。

1.USBメモリー

簡単に認識してくれます。だから2台のPCでファイル共有が簡単に実現します。いちいちUSBメモリーを差し替える手間から開放されます。

2.スマフォの充電

これも可能でした。さすがに供給できるのは最低限のようで、充電時間はかかります。しかもPCの電源を落とした状態でも使えます。

カテゴリー: 小物 | コメントする

自宅サーバでCMS

自宅サーバでwordpressのようなCMSを実現しようとすると、LAN内部からアクセスすると表示できないものが出てきたり、設定の一部が機能しない。この場合にいちいちwordpressの設定を内部LANのアドレスに修正すると、今度は外部に公開できないというジレンマに陥る(すなわち、CMSをIPアドレスで運用すると外部に公開できない、ドメイン運用すると内部からのアクセスで表示できないものが出てくる。)。

これを解消するには、以下のような手段がある。

  1. 次に述べるようなシステムを構築する。
  2. プロキシサプロキシサーバを経由してアクセスする。しかしこの方法は、アクセススピードに難点が出る。
  3. LAN内に内部DNSを設置する。
  4. IPv6で接続する。
    参考:MORILOG  ローカルからドメイン名でアクセス出来ない!

このページでは光のマルチセッションを利用したシステムの構築によってCMSを運用する方法を記載する。

構成図

構成図

設定例

光ルータ(PR-400KI):192.168.1.1
LANルータ(WZR-D1100H):192.168.11.1
Server:192.168.1.100だとすると

※1 光ルータの設定(マルチセッション対応)

  1. 2つのプロバイダに接続することになるが、基本設定→接続先設定(IPv4PPPoE)のページ→接続先の選択設定→メインセッションのPPPoEの設定はせず、LANのルータに任せる。『PR-400KIのルーター機能をオフにしたい』のクチコミ掲示板
  2. サーバからの発信はセッション2に割り当てる。同じページの接続先ルールの設定セッション2の送信元IPアドレスに「192.168.1.100」と設定する。その他の欄は空欄で構わない。
  3. 静的NAT機能を有効にして、WANからの接続を公開サーバに導く。詳細設定→静的NAT設定→[ワンタッチ設定]の欄にサーバのアドレス「」を設定するか、その下の欄[静的NATエントリ]に「優先順位」1「接続インターフェース名」セッション2「宛先アドレス」192.168.1.100「変換対象IPアドレス」自WAN側アドレス「変換対象プロトコル」TCP「変換対象ポート」80と設定。

※2 LANルータの設定

  1. PPPoEによる発信。「Internet/LAN」→「Internet]のページで「PPPoEクライアント機能を使用する」を選択。「PPPoE]の設定で、通常使用する接続先を設定。
  2. 内部LANを光ルータと異なるセグメントになるようアドレスを設定。「PPTPサーバ」のページ[LAN側IPアドレス]に「192.168.11.1」サブネットマスク「255.255.255.0」をと設定。

※3 公開サーバの設定

  1. 光ルータと同じセグメントとなるようアドレスを固定。サーバのIPアドレスを「192.168.1.100」
  2. DDNSを利用するのであれば、DDNSに接続してグローバルアドレスを通知するアプリを導入する。例えばddclient。
カテゴリー: CMS | 1件のコメント

Kindle for PC (Windows)のインストール

1.linuxでkindleを使うなら、wineでということになるのですが、

参考:Kindle for PC が日本語に対応したので早速 Linux(Ubuntu) で動かしてみた

何度やってもインストールができませんでした。 環境は以下のとおり。

OS xubuntu 16.04 LTS
Wine  ubuntuソフトウェアセンターよりインストール
(Ver:1.6.2)

2.症状

本来、/home/ユーザー名/.wine/drive_c/Program Files (x86)/Amazon/Kindle/Kindle.exe←が出来上がるはずなのですが、これが何度やってもできないのです。

3.解消

新たにダウンロードしたものではなく、以前ウィンドウズに使用するためにダウンロードしたものをコピーしてきてインストールしたら、あっさりインストールできた。

ちなみにkindle for pcのバージョンは1.16.0(44025)です。

カテゴリー: wine | コメントする

ddclientをIPv6に対応させる

当サイトが利用しているDDNSサービスはDynDNSなのですがすでにIPv4だけでなく、IPv6にも対応していた。でもddclientがIPv4にしか対応していなかったため、今まではIPアドレスが変更されるたびに、IPv4欄はddclientで、IPv6欄にはいちいちサイトにアクセスし手入力していた。

参考:Dynamic IPv6 updates using ddclient for records hosted on Hurricane Electric DNS

既に、ddclientがインストールされ、IPv4では有効に機能していることが前提です。」
$ sudo ddclinet -force
(強制的に書き換えさせると、今まで設定されもていたIPv6欄が空欄になった。)

$ cd /tmp
$ wget https://www.dropbox.com/s/fwkjh1jlt4rlu5p/ddclient.ipv6
$ sudo cp ddclient.ipv6 /usr/bin
$ sudo mv /usr/bin/ddclient /usr/bin/ddclient.ipv4
$ sudo ln -s /usr/bin/ddclient.ipv6 /usr/bin/ddclient
$ sudo chmod 755 /usr/bin/ddclient.ipv6
$ sudo systemctl restart ddclient
$ sudo nano /etc/ddclient/ddclient.conf

daemon=300 # check every 300 seconds
syslog=yes # log update msgs to syslog
mail=root # mail all msgs to root
mail-failure=root # mail failed update msgs to root
pid=/var/run/ddclient.pid # record PID in file.
ssl=yes # use ssl-support. Works with
#Configuration file for ddclient
# /etc/ddclient/ddclient.conf
use=web
usev6=if,if=enp4s1
protocol=dyndns2, \
login=loginID \
password=loginPASSWORD
server=members.dyndns.org, \
#mx=a.host.willing.to.mx.for.me,backupmx=yes,wildcard=yes \
kurafuto.homeip.net

$ sudo systemctl restart ddclient
(この時点でIPv6欄のデータも修正されていた。)
$ sudo ddclient -force
(無理やりテストしてみた。)

WARNING: updating kurafuto.homeip.net: nochg: No update required; unnecessary attempts to change to the current address are considered abusive
Can’t exec “sendmail”: No such file or directory at /usr/bin/ddclient line 1487.
ddclient: cannot execute command | sendmail -oi root.

既にIPアドレスは修正されていたので、「修正の変更なし、むやみに変更要求は出すな」と怒られてしまうが、この警告は当然。sendmailはインストールしていないので、これも当然。

気になる場合は、/etc/ddclient/ddclient.confの中の次の2行をコメントすればよい。
#mail=root # mail all msgs to root
#mail-failure=root # mail failed update msgs to root

そのうえで、
$ sudo systemctl restart ddclient
$ sudo ddclient -force
WARNING: updating kurafuto.homeip.net: nochg: No update required; unnecessary attempts to change to the current address are considered abusive
警告は、「変更の必要なし」だけになった。

また、変更されると
SUCCESS: updating kurafuto.homeip.net: good: IP address set to IPv6アドレス
と表示され、IPv4の表示はないが、実際にはIPv4も変更されていた。

これで楽ちん!!

カテゴリー: ddclient, IPv6 | 1件のコメント

MariaDBのインストールとセッティング

1.Mysql互換のMariaDBのインストール

$ sudo pacman -S mariadb
(この段階のインストールは、通常のインストールとは異なり、ファイルをダウンロードした段階と考えるべき。)

2.起動する前に、次を実行し安全にインストールする。(この意味がよく分かっていない。だからこれはおまじない。)

$ sudo mysql_install_db –user=mysql –basedir=/usr –datadir=/var/lib/mysql
(推測だが、mysqlを/var/lib/mysql/というディレクトリにmysqlの所有でインストールするという意味だと思われる。)
$ sudo mysql_secure_installation
(これが説明がつかないのだが、Qiitaさんの説明では、rootのパスワードを設定する過程のようだ。)

3.起動

$ sudo systemctl start mysqld.service
$ sudo systemctl enabele mysqld.service

4.問題発生

archwikiには以下のように記述されている。

MySQL サーバーを起動できたら、おそらく MySQL ユーザーとデータベースを管理するための root アカウントを追加したくなるはずです。上記のスクリプトの出力で説明されているように、手動または自動で設定を行えます。root アカウントのパスワードを設定するコマンドを実行するか、セキュアなインストールスクリプトを実行してください。
インストールの後は、好きなインタフェースを使って使用するための設定を行うことができます。例えば MySQL のコマンドラインツールを使って MySQL サーバーに root でログインすることが可能です:
$ mysql -u root -p

でも、rootのパスワードを入力しても入れないし、そもそもMysqlのrootパスワードを設定した覚えもない。何度やってもダメだったので、

$ sudo systemctl stop mysqld.service
$ sudo -s
# mysqld_safe –skip-grant-tables &
# mysql -u root mysql
mysql> use mysql;
mysql> UPDATE mysql.user SET Password=PASSWORD(‘MyNewPass’) WHERE User=’root’;
(‘MyNewPass’)の中に新しいパスワードを設定すること。
mysql> FLUSH PRIVILEGES;
mysql> exit
(以上でrootの新しいパスワードが設定できた。)

# exit
(一般ユーザに戻る)

$ sudo systemctl start mysqld

5.phpmyadminのインストール

$ sudo pacman -S phpmyadmin php-mcript

6.php.iniファイルの修正

$ sudo nano /etc/php/php.ini

次の2行の冒頭にある#を削除し有効にする。
extension=mysqli.so
extension=mcrypt.so

open_basedir の行に
/etc/webapps/をくわえる。

7.nginxがアクセスする/usr/share/nginx/html/にphpmyadminへのシンボリックリンクを張る。

$ sudo ln -s /usr/share/webapps/phpMyAdmin/ /usr/share/nignx/html/phpmyadmin

8.phpmyadminへの接続

http://サーバのIPアドレス/phpmyadmin/でアクセス。先ほど設定しなおしたrootとそのパスワードでログインする。

カテゴリー: phpmyadmin | コメントする

sshdのインストールとセッティング

1.SSHDを稼働させるためには、「インストールして、起動、再起動後も自動的に立ち上がるように設定」。ここまではお定まりのコース

サーバで操作
$ sudo packman -S openssh
$ sudo systemctl start sshd.service
$ sudo systemctl enable sshd.service

以降はクライアントから操作
$ ssh ユーザ名@サーバのIPアドレスで接続。

2.SSHDの設定

上の操作だけで十分稼働するのだが、セキュリティ上問題。なぜならデフォルトの設定ではrootで、パスワード認証で接続できるからだ。総当り攻撃などの危険にも晒される。

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org

(オリジナルの設定ファイルを別名で保存しておく。)

$ sudo nano /etc/ssh/sshd_config

  • Port 22
    デフォルトではポート22で稼働するが、これはぜひ変更しておきたい。sshはシステムを操作するもので、他のユーザに知れ渡っている必要は全く無いからだ。設定方法は#を削除し、22の表記を使用していないポート番号に変更するだけ(例:port 123456)。
  • Protocol 2
    デフォルトで2で動いているようであるが、これも#を削除し、有効にしておいたほうが良いのでは?。
  • PubkeyAuthentication yes
  • PermitRootLogin no
  • PermitEmptyPasswords no
    (この3行は排他的でPubkeyAuthentication yesを選択すると、rootでログイン、空パスワードでのアクセスも禁止されるようだが、念の為、明示的に#を削除し、有効においたほうが良いと思う。)

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh

(作成しておいたid_pubファイルを、authorized_keysの名前で保存するでディレクトリを作成し、そのディレクトリのパーミッションを700[ユーザのみによる読み書き、実行]にします。)

事前に公開鍵を作成していない場合は、クライアント側で$ ssh-keygen -t rsaを実行して鍵を作成してください。
クライアント側で
$ mkdir .ssh
$ cd ~/.ssh
$ ssh-keygen -t rsa
(この時点公開鍵キーが収納されたid_pubと秘密鍵を収納したid_rsaが生成される。)
$ chmod 600 id_rsa

(sftpクライアントで接続し、設置する方法もあるが、コマンドでは)

$ scp id_pub ユーザ名@サーバのIPアドレス:/home/ユーザ名/.ssh/authorized_keys
$ chomod 400 ~/.ssh/authorized_keys
(パーミッションをユーザによる読み書きのみ。400でユーザによる読み込みだけのほうがもっと安全)

$ sudo systemctl restart sshd

(再起動で有効にする)

$ logout

$ ssh -p 123456 ユーザ名@サーバのIPアドレス

(一旦ログアウト、再接続するときには、-pオプションで設定したポート番号を指定)

 

カテゴリー: ssh | コメントする

nginxの設定(CGIを動かす)

nginxでCGIを動かすには、

  1. fcgiwrapをインストール(インストールは省略)
  2. nginxの設定ファイルに動かすぞという記述をする。
  3. nginxを再起動し、実際のCGIプログラムを設定してみる。

 

nginxの設定ファイル/etc/nginx/nginx.confの中のserverブロックに

server{

include mycgi.conf;

 (例のごとく設定ファイルを別に作成し読み込ませます。ファイル名は任意。実際のmycgi.confの中身は以下のとおり。)

## mycgi.conf ########################
location ~ \.cgi|pl$ {
root /usr/share/nginx/html;
fastcgi_pass unix:/run/fcgiwrap.sock;
fastcgi_index index.pl;
include fastcgi.conf;
}
##########ここまで#####################

}

$ sudo nginx -t

$ sudo systemctl restart nginx

あとは実際にCGIアプリをインストールするだけでOK。当サイトではkentwebさんのdream counterを設置してみました。

ちょっと手こずったのはCGIアプリの所有者の設定。

$ ps auxf | grep nginx を実行してnginxが実行されているユーザを確認。

$ sudo chown -R ユーザ名:ユーザ名 /usr/share/nginx/html/を実行し、ファイルの所有者をnginxと同一にする必要がありました。

カテゴリー: CGI | コメントする