「MediaWikiの設定 - さくらインターネット」の版間の差分
編集の要約なし |
細 (Wiki がページ「MochiuWikiの設定 - さくらインターネット」を「MediaWikiの設定 - さくらインターネット」に、リダイレクトを残さずに移動しました) |
||
(同じ利用者による、間の5版が非表示) | |||
1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
さくらインターネットにおいて、MediaWikiを構築する場合の設定を記載する。<br> | |||
<br><br> | <br><br> | ||
== SyntaxHighlight Geshi == | == SyntaxHighlight Geshi == | ||
==== 旧版MediaWikiのSyntaxHighlight Geshiを使用する方法 ==== | |||
MediaWikiの配布ファイルに標準添付されているが、MediaWiki 1.31以降の同梱版ではPython3が必要である。<br> | MediaWikiの配布ファイルに標準添付されているが、MediaWiki 1.31以降の同梱版ではPython3が必要である。<br> | ||
<br> | <br> | ||
さくらインターネットのレンタルサーバには、Python2のみインストールされているため、<br> | さくらインターネットのレンタルサーバには、Python2のみインストールされているため、<br> | ||
MediaWiki 1.31以降をインストールする場合、SyntaxHighlight Geshiは動作せず、<br> | MediaWiki 1.31以降をインストールする場合、SyntaxHighlight Geshiは動作せず、<br> | ||
<syntaxhighlight>タグが含まれるページを編集すると"構文ハイライトエラーがあるページ"になる。<br> | <nowiki><syntaxhighlight></nowiki>タグが含まれるページを編集すると"構文ハイライトエラーがあるページ"になる。<br> | ||
<br> | <br> | ||
解決方法は、MediaWiki 1.30に含まれるSyntaxhighlight Geshiディレクトリにあるpygmentsディレクトリをコピーする。<br> | 解決方法は、MediaWiki 1.30に含まれるSyntaxhighlight Geshiディレクトリにあるpygmentsディレクトリをコピーする。<br> | ||
18行目: | 19行目: | ||
<br> | <br> | ||
ただし、この方法で不具合が出ないとも限らないので、自己責任で行うこと。<br> | ただし、この方法で不具合が出ないとも限らないので、自己責任で行うこと。<br> | ||
<br> | |||
==== Python3を使用する方法 ==== | |||
ホームディレクトリにPython3をインストールして、Python3を参照するようにSyntaxHighlight Geshiの設定を変更する。<br> | |||
手順は、以下の通りである。<br> | |||
# Python 3のインストール | |||
#: まず、Python 3のインストールディレクトリを作成する。 | |||
#: <code>mkdir -p $HOME/local/python</code> | |||
#: <br> | |||
#: Python 3.7.9をダウンロードして解凍する。 | |||
#: <code>wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tar.xz</code> | |||
#: <code>tar -xf Python-3.7.9.tar.xz</code> | |||
#: <br> | |||
#: Python-3.7.9ディレクトリに移動する。 | |||
#: <code>cd Python-3.7.9</code> | |||
#: <br> | |||
#: Python 3をインストールする。 | |||
#: <code>./configure CPPFLAGS="-I/usr/local/ssl/include" LDFLAGS="-L/usr/local/ssl/lib" \</code><br><code>--enable-optimizations --prefix=$HOME/local/python \</code> | |||
#: <code>make</code> | |||
#: <code>make install</code> | |||
#: <br> | |||
#: Python 3.7.9ディレクトリを削除する。 | |||
#: <code>rm -rf $HOME/Python-3.7.9</code> | |||
#: <br> | |||
#: <u>Pyenvのインストールは不要である。</u> | |||
#: <br> | |||
# SyntaxHighlightの編集 | |||
#: 編集するファイルは、<MediaWikiのディレクトリ>/extensions/SyntaxHighlight_GeSHi/pygments/create_pygmentize_bundleファイルである。 | |||
#: <br> | |||
#: <code>cd $HOME/<MediaWikiのディレクトリ>/extensions/SyntaxHighlight_GeSHi/pygments</code> | |||
#: <br> | |||
#: まず、バックアップを作成する。 | |||
#: <code>cp create_pygmentize_bundle create_pygmentize_bundle_org</code> | |||
#: <code>mv pygmentize pygmentize_org</code> (pygmentizeファイルは再作成するため、mvコマンドを実行している) | |||
#: <br> | |||
#: 次に、create_pygmentize_bundleファイルを、以下のように修正する。 | |||
<syntaxhighlight lang="python"> | |||
#!/home/<ユーザ名>/local/python/bin/python3 # 変更する箇所 | |||
# -*- coding: utf-8 -*- | |||
""" | |||
Create a standalone, executable 'pygmentize' bundle. | |||
Author: Ori Livneh | |||
""" | |||
import hashlib | |||
import io | |||
import os | |||
import stat | |||
import textwrap | |||
import urllib.request | |||
import xmlrpc.client | |||
import zipfile | |||
PYGMENTIZE_LAUNCHER = textwrap.dedent('''\ | |||
#!/home/<ユーザ名>/local/python/bin/python3 # 変更する箇所 | |||
import sys | |||
import pygments.cmdline | |||
try: | |||
sys.exit(pygments.cmdline.main(sys.argv)) | |||
except KeyboardInterrupt: | |||
sys.exit(1) | |||
''') | |||
print('Querying PyPI for the latest Pygments release...') | |||
pypi = xmlrpc.client.ServerProxy('https://pypi.python.org/pypi') | |||
latest_version = pypi.package_releases('Pygments')[0] | |||
url = None | |||
for release in pypi.release_urls('Pygments', latest_version): | |||
if (release['packagetype'] == 'bdist_wheel' and | |||
release['python_version'].startswith('py2')): | |||
url = release['url'] | |||
md5_digest = release['md5_digest'] | |||
break | |||
if not url: | |||
raise RuntimeError('No suitable package found.') | |||
print('Retrieving version %s (%s)...' % (latest_version, url)) | |||
req = urllib.request.urlopen(url) | |||
buf = io.BytesIO(req.read()) | |||
print('Verifying...') | |||
if hashlib.md5(buf.getvalue()).hexdigest() != md5_digest: | |||
raise RuntimeError('MD5 checksum mismatch.') | |||
print('Creating executable ZIP bundle...') | |||
with zipfile.ZipFile(buf, 'a') as zf: | |||
zf.writestr('__main__.py', PYGMENTIZE_LAUNCHER) | |||
data = buf.getvalue() | |||
script_dir = os.path.dirname(os.path.abspath(__file__)) | |||
file_path = os.path.join(script_dir, 'pygmentize') | |||
with open(file_path, 'wb') as f: | |||
f.write(b'#!/home/<ユーザ名>/local/python/bin/python3\n') # 変更する箇所 | |||
f.write(data) | |||
file_st = os.stat(file_path) | |||
os.chmod(file_path, file_st.st_mode | stat.S_IEXEC) | |||
with open(os.path.join(script_dir, 'VERSION'), 'w') as f: | |||
f.write(latest_version + '\n') | |||
print('Done. Wrote %s bytes to %s' % (len(data), file_path)) | |||
</syntaxhighlight> | |||
<br> | |||
: 3. 次に、上記で編集したcreate_pygmentize_bundleファイルを使用して、pygmentizeを再作成する。<br> | |||
::: <code>/home/<ユーザ名>/local/python/bin/python3 ./create_pygmentize_bundle</code> | |||
::: <br> | |||
::: pygmentizeファイルに実行権限を付加する。<br> | |||
::: <code>chmod +x pygmentize</code> | |||
::: <br> | |||
: 4. 最後に、Webブラウザのキャッシュを削除して、Syntaxhighlight Geshiが正常に動作しているか確認する。<br> | |||
<br><br> | <br><br> | ||
2024年8月14日 (水) 02:35時点における最新版
概要
さくらインターネットにおいて、MediaWikiを構築する場合の設定を記載する。
SyntaxHighlight Geshi
旧版MediaWikiのSyntaxHighlight Geshiを使用する方法
MediaWikiの配布ファイルに標準添付されているが、MediaWiki 1.31以降の同梱版ではPython3が必要である。
さくらインターネットのレンタルサーバには、Python2のみインストールされているため、
MediaWiki 1.31以降をインストールする場合、SyntaxHighlight Geshiは動作せず、
<syntaxhighlight>タグが含まれるページを編集すると"構文ハイライトエラーがあるページ"になる。
解決方法は、MediaWiki 1.30に含まれるSyntaxhighlight Geshiディレクトリにあるpygmentsディレクトリをコピーする。
pygmentsディレクトリのみを変更することにより、さくらインターネットのPython2でも使用できるようになる。
cd <MediaWikiのフルパス>/extensions mv SyntaxHighlight_GeSHi/pygments SyntaxHighlight_GeSHi/pygments_org fetch https://extdist.wmflabs.org/dist/extensions/SyntaxHighlight_GeSHi-REL1_30-87392f1.tar.gz tar zxvf SyntaxHighlight_GeSHi-REL1_30-87392f1.tar.gz SyntaxHighlight_GeSHi/pygments/
ただし、この方法で不具合が出ないとも限らないので、自己責任で行うこと。
Python3を使用する方法
ホームディレクトリにPython3をインストールして、Python3を参照するようにSyntaxHighlight Geshiの設定を変更する。
手順は、以下の通りである。
- Python 3のインストール
- まず、Python 3のインストールディレクトリを作成する。
mkdir -p $HOME/local/python
- Python 3.7.9をダウンロードして解凍する。
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tar.xz
tar -xf Python-3.7.9.tar.xz
- Python-3.7.9ディレクトリに移動する。
cd Python-3.7.9
- Python 3をインストールする。
./configure CPPFLAGS="-I/usr/local/ssl/include" LDFLAGS="-L/usr/local/ssl/lib" \
--enable-optimizations --prefix=$HOME/local/python \
make
make install
- Python 3.7.9ディレクトリを削除する。
rm -rf $HOME/Python-3.7.9
- Pyenvのインストールは不要である。
- SyntaxHighlightの編集
- 編集するファイルは、<MediaWikiのディレクトリ>/extensions/SyntaxHighlight_GeSHi/pygments/create_pygmentize_bundleファイルである。
cd $HOME/<MediaWikiのディレクトリ>/extensions/SyntaxHighlight_GeSHi/pygments
- まず、バックアップを作成する。
cp create_pygmentize_bundle create_pygmentize_bundle_org
mv pygmentize pygmentize_org
(pygmentizeファイルは再作成するため、mvコマンドを実行している)- 次に、create_pygmentize_bundleファイルを、以下のように修正する。
#!/home/<ユーザ名>/local/python/bin/python3 # 変更する箇所
# -*- coding: utf-8 -*-
"""
Create a standalone, executable 'pygmentize' bundle.
Author: Ori Livneh
"""
import hashlib
import io
import os
import stat
import textwrap
import urllib.request
import xmlrpc.client
import zipfile
PYGMENTIZE_LAUNCHER = textwrap.dedent('''\
#!/home/<ユーザ名>/local/python/bin/python3 # 変更する箇所
import sys
import pygments.cmdline
try:
sys.exit(pygments.cmdline.main(sys.argv))
except KeyboardInterrupt:
sys.exit(1)
''')
print('Querying PyPI for the latest Pygments release...')
pypi = xmlrpc.client.ServerProxy('https://pypi.python.org/pypi')
latest_version = pypi.package_releases('Pygments')[0]
url = None
for release in pypi.release_urls('Pygments', latest_version):
if (release['packagetype'] == 'bdist_wheel' and
release['python_version'].startswith('py2')):
url = release['url']
md5_digest = release['md5_digest']
break
if not url:
raise RuntimeError('No suitable package found.')
print('Retrieving version %s (%s)...' % (latest_version, url))
req = urllib.request.urlopen(url)
buf = io.BytesIO(req.read())
print('Verifying...')
if hashlib.md5(buf.getvalue()).hexdigest() != md5_digest:
raise RuntimeError('MD5 checksum mismatch.')
print('Creating executable ZIP bundle...')
with zipfile.ZipFile(buf, 'a') as zf:
zf.writestr('__main__.py', PYGMENTIZE_LAUNCHER)
data = buf.getvalue()
script_dir = os.path.dirname(os.path.abspath(__file__))
file_path = os.path.join(script_dir, 'pygmentize')
with open(file_path, 'wb') as f:
f.write(b'#!/home/<ユーザ名>/local/python/bin/python3\n') # 変更する箇所
f.write(data)
file_st = os.stat(file_path)
os.chmod(file_path, file_st.st_mode | stat.S_IEXEC)
with open(os.path.join(script_dir, 'VERSION'), 'w') as f:
f.write(latest_version + '\n')
print('Done. Wrote %s bytes to %s' % (len(data), file_path))
- 3. 次に、上記で編集したcreate_pygmentize_bundleファイルを使用して、pygmentizeを再作成する。
/home/<ユーザ名>/local/python/bin/python3 ./create_pygmentize_bundle
- pygmentizeファイルに実行権限を付加する。
chmod +x pygmentize
- 4. 最後に、Webブラウザのキャッシュを削除して、Syntaxhighlight Geshiが正常に動作しているか確認する。
Python3のインストール
pyenvをインストールして、Pythonのバージョンを簡単に切り替えるように設定する。
pyenvのインストールするため、以下のコマンドを実行する。
git clone --depth 1 https://github.com/yyuu/pyenv.git ~/.pyenv
pyenv-virtualenvをインストールするため、以下のコマンドを実行する。
git clone --depth 1 https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
次に、.bashrcファイルに以下の設定を追記する。
export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" export TMPDIR="$HOME/tmp" export PYTHON_PATH=./ eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
.bashrcファイルの設定を反映させる。
source ~/.bashrc
pyenvを使用して、Pythonをインストールする。
# インストールできるPythonのバージョンを表示する pyenv install --list # Pythonのバージョンを指定して、Pythonをインストールする pyenv install 3.8.7
以下に示すように、confファイルを開くことができないというメッセージが出力されるが、正常にインストールされる。
Downloading Python-3.8.7.tgz... -> https://www.python.org/ftp/python/3.7.6/Python-3.8.7.tgz Installing Python-3.8.7... pkg: Unable to open '/usr/local/etc/pkg/repos//sakura11-repo.conf':Permission denied pkg: Insufficient privileges to query the package database pkg: Unable to open '/usr/local/etc/pkg/repos//sakura11-repo.conf':Permission denied pkg: Insufficient privileges to query the package database Installed Python-3.8.7 to /home/beginner/.pyenv/versions/3.8.7
Pythonが正常にインストールされているか確認する。
/home/hogehoge/.pyenv/versions/3.8.7/bin/python3 --version
使用できるPythonのバージョンを確認する。
pyenv versions * system (set by /home/hogehoge/.pyenv/version) 3.8.7
特定のPythonのバージョンに変更する。
pyenv global 3.8.7
現在、設定されているPythonのバージョンを確認する。
python -V