To fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA record(s) for that domain contain(s) the right IP address.

複数ドメイン環境での Let’s encrypt 更新の際のエラー

原因はたぶん複数ドメインにしていて,非SSLアクセスすると全く別のドメインのドキュメントルートへリダイレクトされていたためと思われる,
すべての複数ドメインをSSL化してHSTS と.htaccessで強制SSLにしたところ解決

.htaccess

 
RewriteEngine On
RewriteBase /
# HTST
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
 

Windows Subsystem for Linux でubuntu18に制作環境を作る

Window10でLAMP (Fall Creators Update版) の記事のApacheを入れた後から


作りたてアカウントなら待ち行列になってるので全部✕にする

[Windowsの機能の有効化または無効化]、「Windows Subsystem for Linux」のチェックボックスがすでにオンなら
Store から UBUNTUダウンロードから始めればいい

Ubuntuはバージョン番号が無いやつを選べ

Storeでログインしろと言われるがそのまま☒で閉じれば始まる

sudo su でroot権限になる

 $ sudo passwd root
	Enter new UNIX password:  x2回
	su - 
	cat /etc/os-release  → Ubuntu18

root# になった

PHP インストール

$ sudo apt-get install -y php7.2 php7.2-zip php7.2-mbstring php7.2-dom php7.2-mysql

Apache とMySQLの自動起動

	sudo systemctl enable apache2
	sudo systemctl enable mysql

WSLでは自動起動しないのでシェルスクリプトでショートカットを作れ

shellscript 作成

ap.sh コマンドは $ sh ap.sh

	#!/bin/sh
	sudo service apache2 start
	sudo service mysql start

kaspelsky を入れている場合,ポートをふさいでいるので停止する

DocumentRoot変更

Cに作らないと forbidden回避できないので,!
設定編集 ファイルは2つある

 sudo vi /etc/apache2/apache2.conf		←これも読み込まれている
<Directory /mnt/c/html>  ←変える
        Options Indexes FollowSymLinks
        AllowOverride All  ←変える
        Require all granted
</Directory>

 sudo vi /etc/apache2/sites-available/000-default.conf ←こっちが本家 編集対象
  
   DocumentRoot /mnt/c/html  ←変える

ubuntuでAllowOverrideを変更しても.htaccessが有効化しなかった時の対処法

mode rewriteを有効にする

	$ sudo a2enmod rewrite
	$ sudo  service apache2 restart

ディレクトリの一覧表示を有効にする(なってなかったら)

対象ディレクトリに .htaccessを作ってこの一行を書く
Options Indexes FollowSymLinks

ユーザ名はApacheではない www-dataだ

sudo chown -R www-data drupal
システムが ntfsなので変わらない

アップロードファイルの上限サイズを変更する

	info.php  phpinf()でファイルの所在を確認
	$ sudo vi /etc/php/7.2/apache2/php.ini
		uploadで検索  20Mに
		display_errors On に変更

Apache 再起動

	$ sudo service apache2 start

これで phpinfo() が実行できた
だめなら OS再起動 windows の再起動

ターミナルの初期ディレクトリ変更 & Apache起動

 cd /home/work
 sudo vi .bashrc

最終行に付け足す
 sh ap.sh
 cd /mnt/c/var/www

MySQL バージョン確認

$ mysql --version  →5.7

MySQLでmysqld.sockのエラーが出た

コマンドはすべて「sudo」で実行します。
mysqlコマンドをsudoをつけずに実行すると接続エラーになります。

	# service mysql start  ←root権限ならこれでいい
	$ sudo mysql -uroot -p

rootパスワードを設定する

ubuntu18 mysql5.7 root password 設定

 の記事参照

root パスワードを忘れた場合

$ sudo service mysql stop
    sudo vim /etc/init.d/mysql
		mysqld_safe で検索して、↓この行をコメントアウトし
		   su - mysql -s /bin/bash -c "mysqld_safe > /dev/null &"
		その下に↓こう追加。
		su - mysql -s /bin/bash -c "mysqld_safe --user=root --skip-grant-tables &"
		$ sudo service mysql start
		$ mysql --database=mysql
パスワードを更新
use mysql
UPDATE user SET authentication_string=password('新規パスワード') WHERE user='root';
再設定したパスワードをMySQLに反映させます
	mysql> flush privileges;
	mysql> quit
	/etc/init.d/mysql の コメント状態を元にもどす。
	sudo service mysql restart
	$ sudo mysql -u root -p

パスワード変更

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '好きなパスワード';

>MySQLでユーザを作成し、権限を設定する方法

	CREATE USER 'ginzo'@'localhost' IDENTIFIED BY 'wert3333'
	grant all on moodle.* to ginzo@localhost identified by  'wert3333';	

DBの全権限を”既存”ginzoユーザーに追加
	create database drupal DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
	GRANT ALL PRIVILEGES ON drupal.* TO 'ginzo'@'localhost';

→ adminerでDB名が出てこない → Database – Refresh する

php インストール

 		sudo apt-get install php php-mysql php-mbstring php-gd php-pear php-intl php-soap php-xmlrpc php-xml php-ldap

imageMagic インストール

	sudo apt-get install php-imagick
	sudo php -m | grep imagick
	sudo service apache2 restart


	apt install libmariadb-dev-compat
	apt install libmariadbclient-dev

WordPressインストール

 		cd /mnt/c/var/www/html    移動 document rootへ
  wget wget http://wordpress.org/latest.tar.gz
  tar -xvf latest.tar.gz  解凍
  chown -R www-data:www-data wordpress
  mv wordpress/* ./  全部移動

パスワードを忘れたら

		UPDATE `wp_users` SET
		`user_pass` = md5('zxcv'),
		WHERE `ID` = '1';

PhpMyadmin インストール

pasuword:Wert3333- ログインユーザ: phpmyhadmin

rootではログインできなくなったらしいので 全部の権限を phpmyadminに与える

mysql> grant all on *.* to phpmyadmin@localhost identified by ‘Wert3333-‘;

なにかするたびに長々とエラーで表示されるのを何とかするコマンド

sudo sed -i "s/|\s*\((count(\$analyzed_sql_results\['select_expr'\]\)/| (\1)/g" /usr/share/phpmyadmin/libraries/sql.lib.php

phpmyadmin のTOPから[詳細設定]→一般→エラーレポート をOFFのほうが良い

Smartyをダウンロード

インストールするディレクトリに移動
    cd /usr/local/lib

ダウンロード
  sudo wget https://github.com/smarty-php/smarty/archive/v3.1.33.zip

unzipのインストール
  sudo apt install unzip

解凍
  sudo unzip v3.1.33.zip


sudo mv smarty-3.1.33 smarty-master

Gitをインストールする

 		  sudo apt-get install git

# コミットしたディレクトリに移動してinitする
  $ git init
	Initialized empty Git repository in /path/to/already/.git/  
#ステージする
 $ git add . 
 $ git commit -m 'initial commit' 

#除外ディレクトリ → gitへpushuしない
 $ git rm --cached -r .metadata

# 初回のみ,githubアカウントがありリポジトリがあったらこれでpushする, なければ先に作る
   $  git remote add origin https://github.com/アカウント名/リポジトリ名.git


# KaspelSky を終了して
 $ git push origin master   
		
cloneした方ではここで git pull	→ 変更のあったところが更新される



ターミナルのカレントのパスが長いのを短くする

 vi ~/.bashrc

w→Wに 2箇所を大文字にする
if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

ついでにカレントを/var/www/にする,最後の行に加える
 cd /mnt/c/var/www   

source ~/.bashrc で反映させる

SceneBuilder 10で日本語が文字化けするのを直す Windows10

日本語の言語パックが原因なので単純に削除して英語にするというもの
ユーザ\AppData\Local\SceneBuilder\app\dist.jar
の拡張子を.zipに変更
zipのまま開く
com/oracle/javafx/scenebuilder/app/i18n/SceneBuilderApp_ja.properties を削除
自動的に保存されるのでしばらく待つ
これでEclipseから呼び出しても文字化けしない

setcookie php secure httponlyのサンプルコード


 //ここまでに通信bodyに出力がなにもないことが条件
session_start();
 
 $time=time()+3600*240;
      setcookie('_user[0]' ,"44",$time,"/","","","");
      setcookie('_user[1]' ,"Jackey",$time ,"/","",true );
      setcookie('_user[2]' ,"guest",$time ,"/","",true,true);

 header("Content-type: text/html; charset=UTF-8");

print_r($_COOKIE);
?>
引数の 5 はdomain 省略するとサブドメインは含めいない
6 セキュア属性 SSLのみでやり取りする
7 httponly属性 下のスクリプトでは表示されない

 <script>
   
   console.log(document.cookie);
 </script>

wordpressのログインアタック (ブルートフォース攻撃) の阻止

普通の対策では認証をさせないだけなのでアクセスは減らず,サーバーのパフォーマンス低下は避けられない。
以下はwp-login.phpへのアクセス自体を阻止する対策。

WordPressの自動更新にも対応

.htaccess に追加

# END WordPress の下に

 redirect 301 /wp-login.php /new-login.php  

nginxなら default.conf に

 rewrite ^/wp-login.php /new-login.php permanent; 

wp-login.php を new-login.php に別名コピー

ファイルを開いてwp-login.php → new-login.phpに全置換

new-login.phpの<?php 以下に追加

session_start();
  if(!isset($_SESSION['任意文字'])){ 
     echo '<h1>404 Not Found<hr></h1>';
   exit;
}

if($_SESSION['任意文字']!="てきとうなひらがな"){
    echo '<h1>404 Not Found<hr></h1>';
    exit;
}

[logon.php] ← セッションを作るためのダミーのログインファイル

 <?php
  session_start(); //セッション開始

  $_SESSION["任意文字"]="てきとうなひらがな";
 ?>

  <a href="new-login.php"> 秘密のログインへ </a>

普通に/wp-admin/ や /wp-login.php でログインしようとすると 404 Not Found になる。
ダミーで作った /login.php からならログインできる。

Xcode9.4 行コピー ショートカットの追加

/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
をどこかにコピペして編集
最終行の
</dict>
</plist>
の上に以下を追加


   <dict> 
		<key>Duplicate Current Line</key> 
		<string>moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, moveToBeginningOfLine:, yank:</string> 
	</dict> 

Xcode再起動
Preferences → キーバインド → 一番下の 「Duplicate Current Line」
にあてたいショートカット設定

have_posts()でカテゴリ分岐


//カテゴリーID 2の記事
 if( have_posts() ) {
		 while(have_posts() ) {
		 the_post();
			 $cat = get_the_category(); //現在の記事のカテゴリー情報を取得
			 	if( $cat[0]->term_id===1) //現在の記事のカテゴリーIDを取得
			 get_template_part( 'content');
		 }
 } 
//カテゴリーID 2の記事
  if( have_posts() ) {
		 while(have_posts() ) {
		 the_post();
			 	 $cat = get_the_category(); 
			 	if( $cat[0]->term_id===2) 
			 get_template_part( 'content');
		 }
 } 

query_posts、get_posts を使うとページャーが動かなくなるので注意!