ディレクトリのAilias設定

Apache のconf ファイルでディレクトリのAlias設定をしたのでメモ。

/DocumentRoot/wordpress/ ディレクトリにWordpress をインストールしているとしてhttp://{ホストネーム}/computers/ とブラウザのアドレス欄に入力してアクセスしたいときに、httpd.conf ファイルを開いてAlias を設定しました。

<If Module alias_module>
    Alias /computers "/usr/local/apache2/htdocs/wordpress"

Apache 再起動。

WordPress のダッシュボードから[設定]-[一般]-[Wordpress アドレス] と[サイトアドレス]のURLにhttp://{ホストネーム}/computers としてディレクトリ設定を追加。

ブラウザでhttps://{ホストネーム}/computers でアクセスできることを確認。

これがやりたかったんですね。

ただ、旧URL でのアクセスをリダイレクト処理は別途、必要ですね。(くぅ~ん

Apache のアクセス解析的なツール

Linuxメモ : GoAccessでリアルタイムにWebログ解析 – もた日記

yum でインストールできるApache のアクセス解析を探していたらベストマッチなツールを見つけたのでメモ。

yum で引っ張って

# yum install goaccess

apache のlogファイルのパスを指定。

# goaccess /usr/local/apache2/logs/access_log

logファイルの形式を選択、[Enter]キー押下。

ターミナルに動的アクセス解析を表示できました。

こんなのが欲しかったんですね。

https へのリダイレクト

httpプロトコルのアクセスをhttpsへのリダイレクトの方法はいくつかあるそうですが今回は、.htaccess で試してみました。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^stuffy.dip.jp/        ←(追記
RewriteRule ^(.*) https://stuffy.mydns.jp/$1 [R=301,L]  ←(追記
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>

 

RewriteRule ^(.*)$ https:// の後の % を付けずに表示させたところ、{HTTP_HOST}エラーがでました。
正しく表記して正常に転送できるかどうかトライ。うん、良いですね。。

 

追記)旧サイトからアクセスしてくるリクエストをSSL化した新サイトへのリダイレクトを追加しました。

サイトのSSL暗号化

Webサーバー間通信内容暗号化(Apache+mod_SSL+Certbot) でサイトのSSL暗号化しようとして失敗した点をメモ。

1.Apache はソースからビルドしたので/usr/local/apache2/conf.d/ssl.conf がなかった。→コピーして解決。

# cp /etc/httpd/conf.d/ssl.conf /usr/local/apache2/conf.d/ssl.conf

2./usr/local/apache2/conf.d/ssl.confをApacheが起動しても読み込んでくれなかった。→httpd.conf 内に Include conf.d/*.conf を追記して解決。

# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
#       starting without SSL on platforms with no /dev/random equivalent
#       but a statically compiled-in mod_ssl.
#
Include conf.d/*.conf  ←(追記

3.httpd.conf のヴァーチャルホスト設定はssl.conf が設定してあると2重になる。→httpd.conf の<VirtualHost *:443>~</VirtualHost>を削除して解決。

以上、3点でした。ルーターの443 を開放してApache を再起動したらホームページをhttps:// ~で表示できることを確認。

searchreplacedb2.php でデータベースのhttp:// の部分をhttps:// にreplace してサイトのSSL化、・・・完了です。

突然ですが、Python 入門

Python には、インタプリタ(対話形式)とスクリプトの2つの方法があります。

python とだけコマンドを打つと対話型のプロンプトで実行可能になります。

$ python
>>>

プロンプトを抜けるには[Ctrl]+[D]です。
一方、テキストファイルに拡張子.py としてプログラムしたスクリプトを実行するにはpython test.py です。

$ vi test.py    # スクリプトを編集
↓ を保存。
print("Hello World!")

$ python test.py    # スクリプトを実行
Hello World!

python 入門

>>> 1+2  # 算術計算
3
>>> 6/5  # 割り算の結果はfloat型に
1.2
>>> 3*4
12
>>> type(1.4)  # データ型の問い合わせ
<class 'float'>
>>> type("hello")
<class 'str'>
>>> x=20  # 変数
>>> print(x)
20
>>> y=15  # 変数同士の演算
>>> print(x+y)
35
>>> a=[1,2,3,4,5]  # リスト
>>> print(a)
[1, 2, 3, 4, 5]
>>> len(a)  # リストの長さを取得
5
>>> a[1]  # リストの要素にアクセス
2
>>> a[4]=99  # リストに値を代入
>>> print(a)
[1, 2, 3, 4, 99]
>>> a[0:2]  # インデックスの0番から2番まで取得
[1, 2]
>>> a[1:]  # インデックスの1番から最後まで取得
[2, 3, 4, 99]
>>> a[:3]  # インデックスの最初から3番まで取得
[1, 2, 3]
>>> a[:-1]  # インデックスの最初から最後のひとつ前まで取得
[1, 2, 3, 4]
>>> a[:-2]  # インデックスの最初から最後の2つ前まで取得
[1, 2, 3]
>>> me={"height":180}  # ディクショナリを作成
>>> me["height"]  # 要素にアクセス
180
>>> me["weight"]=80  # 新しい要素を追加
>>> print(me)
{'height': 180, 'weight': 80}

ブーリアン とif for

&>>> hungry=True    # お腹すいてる?
>>> sleepy=False    # 眠い?
>>> type(hungry)    # 型取得
<class 'bool'>
>>> not hungry    # ブーリアン演算
False
>>> hungry and sleepy    # 空腹 かつ 眠い
False
>>> hungry or sleepy    # 空腹 または 眠い
True

>>> hungry=True    # if 文
>>> if hungry:
...     print("I'm hungry")    # if の中身は行頭空白4つ分インデントを空ける
......
I'm hungry
>>> hungry=False
>>> if hungry:
...     print("I'm hungry")
... else:             # else の中身も行頭空白4つ分のインデントを空ける
...     print("I'm not hungry")
...     print("I'm sleepy")
...
I'm not hungry
I'm sleepy

>>> for i in [1,2,3]:    # for 文(繰り返し)i を print
...     print(i)
...
1
2
3
>>> for i in range(1,11):    # range で指定
...     print(i)
...
1
2
3
4
5
6
7
8
9
10

>>> def hello():    # 関数を定義
...     print("Hello World!")
...
>>> hello()
Hello World!

>>> def Hello(object):    # 引数付きの関数を定義
...     print("Hello "+object+"!")
...
>>> Hello("cat")
Hello cat!
>>>

Anaconda3 はどこ?ここ?

Anaconda3(ディストリビューション)が入っていなかったのでPython3 のインストールやり直し。
シンボリックリンクを削除。

# rm /usr/local/python/bin/python3
# rm /usr/local/python/bin/pip3.7

パスを削除。

# vi ~/.bash_profile

↓ 行を削除
export PATH=$PATH:/usr/local/python/bin

インストールディレクトリを削除。

# rm -fr /usr/local/python/

https://www.anaconda.com/download からAnaconda 2018.12 for Linux Installer をダウンロード。

インストール方法は、Anaconda で Python 環境をインストールする Qiita – @t2y をご参考下さい。

今回は、/home/gusachan/anaconda3/ にインストールしました。パスを通して

$ export PATH=/home/gusachan/anaconda3/bin:$PATH

バージョン確認。

追記)永続的にパスを通すには、.bash_profile に以下の記述で保存。

# vi ~/.bash_profile

↓ 追記
export PATH=/home/gusachan/anaconda3/bin:$PATH

過去ログ再掲 – PHP7 をソースからビルド

CentOS6にPHP7をソースからインストール – Qiita から丸写しで ビルドしたのでメモ。

# wget php-7.1.16.tar.gz http://jp2.php.net/get/php-7.1.16.tar.gz/from/a/mirror
# tar zxvf php-7.1.16.tar.gz
# cd php-7.1.16

でソースディレクトリにて作業開始。

# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --includedir=/usr/include --bindir=/usr/local/bin --with-openssl=/usr/local/ssl --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --with-freetype-dir=/usr --with-gd --with-zlib --with-curl --with-xsl --with-gettext --with-libxml-dir=/usr/bin/xml2-config --enable-mbstring --with-mysqli=mysqlnd --enable-mysqlnd --with-pdo-mysql=mysqlnd --enable-bcmath --enable-pcntl --enable-ftp --enable-exif --enable-calendar --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-gmp --with-pspell

ここでエラー。

Warnning unrecognized options --with-mysql --enable-gd-native-ttf

PHP7 ではwith-mysqli で十分とのこと。enable-gd-native-ttfも要らないようですね。改めて ./configure make && make install して

# make && make install
# /etc/init.d/mysqld restart
# /etc/init.d/httpd restart

ビルド完了。mysql apache 再起動すると『データベース接続エラー』と表示されwordpress 表示に問題発生。

Google 先生に聞くと、PHP7にバージョンを上げると、WPの「データベース接続確立エラー」が出てしまいます  にズバリ正解がありました。

# mysql_config --socket

コマンドでソケットのパスを聞いて、php.ini のmysql.default_socket、mysqli.default_socket のそれぞれに=/pass を放り込めば良いらしい。
phpinfo.php で、mysql のmysql.default_socketmysqli 、mysqli.default_socket 項目のそれぞれに正しいパスが表示されていれば作業終了。

# php -v
PHP 7.1.16 (cli) (built: Apr 18 2018 22:12:13) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

めでたくPHP7 にバージョンアップされました。ただし、数式表示プラグイン wpmathpub との相性が悪いらしくWordpress の表示が崩れます。ここは、PHP5.6.35 にダウングレードして解決しました。

CentOS6.10 GUI起動、完了です。

yum update するとグラフィックボードのドライバーが書き換わりGUI 起動ができなかったのですが、ふと他の方のブログを検索した結果、Radeon のfglrx-uninstall.sh を使えばドライバーを上書きせずにアンインストールすることができると判明。

【centos6】Radeonドライバー再設定で嵌ってしまった!

早速、試したところドライバーのアンインストール、yum によるカーネルのバージョンアップ、ドライバーの再インストールに成功した結果、件の課題をクリアすることができました。

まず [F2] 押下からBIOSを起動、 Onboad のグラフィックボードを有効にして再起動、シングルユーザーモードに入って/boot/grub/grub.conf のカーネルオプション行末の、nouveau.modeset=0 を削除、init 3 でランレベル3でroot でCUI ログインします。(ディスプレイケーブルはオンボードのVGA端子に接続する)

/etc/yum.conf でカーネルアップデートをexclude しているときは行頭を# コメントアウトして yum update 、すべての更新を掛けます。

/usr/share/ati/ ディレクトリに移動してドライバー削除スクリプト、fglrx-uninstall.sh を実行後、/usr/share/ati/ をディレクトリごと削除、再起動。

ふたたびシングルユーザーモードでgrub.conf のnouveau.modeset=0 をカーネルオプションの行末に加えて再起動。

[F2] BIOS で外付けグラフィックボード[External Video] を有効にして(ディスプレイケーブルをグラフィックボードのVGA端子に接続する)

シングルユーザーモードからinit 3 でCUI ログイン。

あらかじめユーザーディレクトリにコピーしておいた、AMD-Catalyst-15.9-Linux-installer-15.201.1151-x86.x86_64.run を実行、エラーが出たら必要なパッケージを別のPCからでもダウンロード、フラッシュドライブにコピーしておく。(ここはトライアンドエラーもやむなしです。)

エラーログから必要なドライバーに当たりをつけやっと、本体のドライバーのインストールに成功しました。最後に#aticonfig –initial して再起動するとカーネルのアップデートされたCentOS6.10 でXウィンドウが起動してGUI 表示できました。

ありがとうございました。

ランレベル

サーバー機でひさびさにyum update を掛けてGUIログインしようとしたら画面が固まりました。

シングルユーザーモードから

# telinit 3

でCUIログインしようとするとパスワードではねられてログインできない、ふぐっ、ちりりぃ。
察するに、yum でグラフィックボードのドライバーが更新されて不整合を起こしているんだと推理してます。
再びシングルユーザーモードでパスワードリセットして、アカウントのロックアウトポリシーを解除。root でCUIログイン成功。

# pam_tally2 -u root --reset

どうしても、telinit 5 や、startx ができないのでyum で不整合を起こしたドライバーのエラーログ何かないかと探したのですが原因不明。強制的にドライバーを再インストールしたところ画面表示が壊れました。もうダメポ。バックアップから復元。yum update は諦めました。復旧に際し、6時間にわたり通信障害が起きたことをお詫び申し上げます。

MySQL のパスワードリセット

ブログを更新するときにWordpress のパスワードファイルを、バックアップを取らずに削除した所ログイン出来なくなりました。過去ログから以前に助かったデータベースに接続する方法でリセットしようとしましたが、MySQL のパスワードも失念。

まず順序どおりに MySQLでrootパスワードを忘れた場合の対処方法 からroot のパスワードをリセット・・・しようとするとエラー。

# ERROR 1054 (42S22): Unknown column 'password' in 'field list'

Google 先生に聞くと MySQL 5.7.6でroot用パスワードが変わらなくて困った話  で解決できたのでシェアしておきます。

次に、MySQL にroot でログインしてWordpress のデータベースに接続、ユーザーパスワードの再設定をして助かりました。

シェルを触るのひさびさだったので、色々テンパりました。(汗