Apatch2.4でのIP制限

a2h1r0.hatenablog.com

更に続き.

ローカルに持ってきたはいいが

ディレクトリによってはグローバルIPで公開したい.でもこのステージング環境は公開したくない.

そこでIP制限

# nano /etc/httpd/conf/httpd.conf

で,

<Directory "/var/www/html/見せたくないディレクトリ">
  Require local
  Require ip 接続OKのIP
</Directory>

追記.

これで,許可したIP以外はForbiddenになる.

ちなみに,IPアドレスを"192.168"とか途中で止めておくと,"192.168.xxx.xxx"の全部の意になる.これで家の中からなら繋がって,外部からは遮断とかが可能.

参考サイト様

next49.hatenadiary.jp

本番データベースをローカルに

a2h1r0.hatenablog.com

これの続き.

ファイルの加工

ローカルに移動したので色々変わる.

"wp-config.php"を書き直す.

'DB_NAME','DB_USER','DB_PASSWORD'あたりと,'DB_HOST'は'localhost'に.

データベースの加工

"Database Search and Replace Script in PHP"を使って,移動先のIPやらに変更してあげる.

これでアクセス出来るようになった.

CentOS8にphpMyAdminをインストールした話

自室にステージング用のサーバを立てることに

WordPressとかのソースを触るときに,いちいちバックアップとかなんやかんやがめんどくさいので,ステージング環境を作ってしまおうって話.

phpMyAdminのインストールで詰まった.

何度やっても,

エラー: 一致するものが見つかりません: phpMyAdmin

でインストールできない.

そんな訳あるかといいながら頑張った結論.

無理

www.itzgeek.com

あー,"まだCentOS8のリポジトリphpMyAdmin入れてないから公式Webから落として."って書いてる. CentOS8の情報はまだまだ新しいので,"CentOS phpMyAdmin"とかじゃ引っかからなくてめっちゃ悩んだ.

ざっくりやったこと書く

わからなければ聞いてください.

リポジトリ

# yum install epel-release
# yum install http://rpms.remirepo.net/enterprise/remi-release-8.rpm

入れなくてもイイかも.試行錯誤したので両方入れたけど.

とりあえずMariaDBから入れる

# yum -y install mariadb-server
# nano /etc/my.cnf.d/mariadb-server.cnf

これ,CentOS7の記事とパスが違った.

で,[mysqld]の項目に

character-set-server = utf8

を追記.

# systemctl start mariadb
# systemctl enable mariadb
# mysql_secure_installation

ここの設定は下記の参考サイト様一覧の,"データベースサーバー構築(MariaDB)"を見てください.

"MariaDB初期設定"の項目と"MariaDB確認"の途中まで終わらせればOKかも.

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

でインストール完了.

# mysql -u root -p
MariaDB [(none)]> create database test(作りたいデータベース名);
MariaDB [(none)]> exit

これでデータベースの準備はOK.

phpと周辺のモン入れる

# yum install -y wget php php-pdo php-pecl-zip php-json php-common php-fpm php-mbstring php-cli php-mysqlnd

本題のphpMyAdmin

# wget https://files.phpmyadmin.net/phpMyAdmin/4.9.1/phpMyAdmin-4.9.1-all-languages.tar.gz
# tar -zxvf phpMyAdmin-4.9.1-all-languages.tar.gz
# mv phpMyAdmin-4.9.1-all-languages /usr/share/phpMyAdmin
# cp -pr /usr/share/phpMyAdmin/config.sample.inc.php /usr/share/phpMyAdmin/config.inc.php

次に,ここにアクセスして phpMyAdmin blowfish secret generator

f:id:a2h1r0:20200308183500j:plain

文字列のとこを引っ張ってくる.

# nano /usr/share/phpMyAdmin/config.inc.php

$cfg['blowfish_secret'] = 'ここにコピーした文字列を入れる'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

f:id:a2h1r0:20200308155848j:plain

ここで,私は本番環境からデータベースをエクスポートしまして,

# mysql test(さっき作成したデータベース名) < インポートするファイル名.sql -u root -p

これでローカルにデータベースを入れれました.

まだ続きます.

# nano /etc/httpd/conf.d/phpMyAdmin.conf

で多分新規作成ファイルなので,白紙の状態に下のやつを貼り付け.

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny> 
      Require all granted
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require all granted
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

次に,

# mkdir /usr/share/phpMyAdmin/tmp
# chmod 777 /usr/share/phpMyAdmin/tmp
# chown -R apache:apache /usr/share/phpMyAdmin
# systemctl restart httpd

SELinuxの設定もいるみたいなので,続いて

# yum install -y policycoreutils-python-utils (インストール済みやと思われる)
# semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/phpMyAdmin/'
# semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/phpMyAdmin/tmp(/.*)?"
# restorecon -Rv '/usr/share/phpMyAdmin/'

Firewallの設定は自分はしてあったのでパス.

# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload

ほんだらphpMyAdminにアクセスできるように!

http://ipアドレスやらlocalhostやら/phpMyAdmin

f:id:a2h1r0:20200308161401j:plain

ユーザ作成してなけりゃユーザ名はroot.ログインすると,test(さっき作ったやつ)って名前でデータベースが作られているはずです!

参考サイト様

qiita.com

centossrv.com

www.itzgeek.com

qiita.com

WinSCPのroot権によるSFTP

参考サイト様

qiita.com

私の環境ではsftp-serverのディレクトリパスが違った

私の環境(CentOS8)では"/usr/lib/openssh/sftp-server"ではなく"/usr/libexec/openssh/sftp-server"だった.

そのため,

# visudo

からの

ユーザ名 ALL=NOPASSWD: /usr/libexec/openssh/sftp-server

で,WinSCP

sudo /usr/libexec/openssh/sftp-server

と設定.

WordPressでドメイン変更したら500エラーで繋がらなくなった

データベースはいじったけど...

"Database Search and Replace Script in PHP"を使って,データベース上は変更完了.サイトにもアクセスできる.けど,固定ページ周りにアクセスすると,500エラーが返ってくる.

原因は.htaccess

# BEGIN WordPress
# `BEGIN WordPress` から `END WordPress` までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase / (ここ変更)
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] (ここ変更)
</IfModule>

# END WordPress

前のディレクトリが残ってただけ.

Numpyのloadtxtで空ファイルを開くとバグる問題

loadtxtで空ファイルを開くとバグる

タイトル通りですが,上手く処理できません.

現在,行動認識系の国際ワークショップに出るために,テストデータを読みながら手法を模索中なのですが,その中に欠損ファイルが含まれており,その処理でつまづきました.

この欠損ファイル,ヘッダーのみ存在し,データは0行という構成のため,ファイル自体は存在します.

In [1]: data
Out[1]: array([], dtype=float64)

という感じで,読み込まれてはいたので,

if data == []:
  continue

とかで切り抜けようとしたんですが,これがなぜかうまくいかない.自分のコードが悪いのかもしれんけど.  

で,検索すると,下記サイト様を発見.

Numpyのloadtxtで空のファイルを開くとUserWarningmkacky.wordpress.com  

UserWarning: loadtxt: Empty input file

というエラーは見たような見てないような気がするが,検索ワードのために入れておく.ちょっとこのネタは情報が少なかったので.

 

で,結論,そのままですが,

import warnings

with warnings.catch_warnings():
    warnings.filterwarnings("error")
    
    try:
            空じゃなかった場合の処理
        except IOError:
            sys.exit()  # 終了するなら
            continue  # for文とかで続けるなら
        except UserWarning: 
            sys.exit()  # 終了するなら
            continue  # for文とかで続けるなら

こんな感じで.IOErrorはファイルが存在しない場合に通るのかな.確認してないけど.  

実環境ではこんな感じ.

作業中の汚いコードなのでご容赦を.

TeraTermのSSHで踏み台

TeraTermで多段SSHする話

TeraTermの優位性がわからなかった問題.コマンドプロンプトから一発で多段SSHもできるしいいのでは?と思ってた.

a2h1r0.hatenablog.com

でも!!!TeraTermのマクロでは!パスワード認証も自動化出来る!!!!これは良い...

こちらを参考に.

www.j-oosk.com

ちなみに,踏み台サーバがWindowsの場合は,

wait '$' '#'

ではなく,

wait '>'

となります.

これは, f:id:a2h1r0:20200305222316j:plain 赤丸を見ればわかるように,Windowsのコンソールは'>'だからです.

'>'が表示されたら次のコマンドを実行します.

Linuxとかは'$','#'でイイんですがね.

これで,デスクトップからアイコンをクリックするだけで研究室のWebサーバに接続できるようになりました.