Linux:rebootコマンドを使用したサーバの再起動

Linuxサーバでサーバの再起動をする場合、今までは「shutdown」コマンドを使用して再起動をしてました。
以前、「shutdown」コマンド使用した時の方法を記事にしてます。

Linux:サーバをシャットダウン・再起動する

他にも「reboot」コマンドを使用してもサーバの再起動をすることができると分かったのでメモします。

下記に「reboot」コマンドを使用して、Linuxサーバを再起動したときの方法を記載します。


「reboot」コマンド

システムの再起動で使用します。
引数(オプション)はなしで実行します。

reboot

rebootコマンドを使用したサーバの再起動

SSHでサーバにログインします。

suコマンドでrootに切り替えます。

「reboot」コマンドを実行するだけでサーバの再起動をすることができます。
※引数なしで実行

reboot

下記のコマンドと同じ意味になります。

shutdown -r -q now

また、ファイルシステムのチェックせずにより早く再起動する場合は「fastboot」コマンドを使用します。

fastboot

下記のコマンドと同じ意味になります。

shutdown -r -q -f now

WordPress:アイキャッチ画像の確認と出力

WordPressアイキャッチ画像を表示する場合のアイキャッチの存在確認出力方法をメモします。

アイキャッチが設定されているかどうか調べる場合は「has_post_thumbnail()」関数を使用します。
また、「the_post_thumbnail()」関数でアイキャッチ画像を出力することができます。

下記にWordPressの「has_post_thumbnail()」「the_post_thumbnail()」の説明と記述方法を記載します。


has_post_thumbnail()

アイキャッチ画像が設定されているか確認します。

has_post_thumbnail()

記事を指定してアイキャッチ画像の確認を行う場合は
引数に記事IDを記述します。

has_post_thumbnail(記事ID)

アイキャッチ画像が設定されている場合はtrue、
設定されていない場合はfalseを返します。


the_post_thumbnail()

アイキャッチ画像を出力します。

the_post_thumbnail()

引数を指定することによってアイキャッチ画像のサイズやクラスなどを設定することが可能です。

the_post_thumbnail(サイズ, 属性)

サイズや属性は配列で指定します。


アイキャッチ画像の確認と出力

アイキャッチ画像が存在するかどうかを「has_post_thumbnail()」を使用して確認します。

アイキャッチ画像が存在する場合は「the_post_thumbnail()」で出力します。
存在しない場合は「no image」などを出力するといいと思います。

<?php
// アイキャッチ画像の確認
if ( has_post_thumbnail()) {
    // 存在する
    the_post_thumbnail();
}
else {
    // 存在しない
    echo '<img src="noimage.jpg">';
}
?>

投稿記事をループさせて上記のコードを記述するようにすれば、
アイキャッチ画像を表示することができます。

<?php if (have_posts()): ?>
<?php while (have_posts()): the_post(); ?>
    <div>
    <?php if (has_post_thumbnail()): ?>
        <?php the_post_thumbnail(array(200, 200), array( 'class' => 'thumbimg')); ?>
    <?php else: ?>
        <img src="<?php echo get_template_directory_uri(); ?>/img/noimage.jpg" />
    <?php endif; ?>
    </div>
<?php endwhile; ?>
<?php endif; ?>

アイキャッチ画像を使用するとその記事がどのような内容なのかを一目で閲覧者に伝えることができるので、
記事にあった画像を用意できれば、設定した方がいいと思います。

WordPress:パーマリンクの取得はget_permalink()を使用する

WordPress投稿情報リンクURLを取得する時の方法をメモします。

取得した投稿情報のデータを見ると下記のように「guid」に記事のURLが入っています。

※例

Array
(
    [0] => WP_Post Object
        (
            [ID] => 1
            ・
            ・
            ・
            [guid] => http://raining.bear-life.com/?p=1
            ・
            ・
            ・
        )
)

「guid」にURL情報があるので、これを使ってしまいそうですが、
パーマリンクを取得する場合はget_permalink()を使用します。

get_permalink()にパーマリンクを取得する記事のIDを指定します。

<?php echo get_permalink($post->ID); ?>

パーマリンクを変更していない場合は「guid」のURLを使用してもいいのですが、
パーマリンクの設定を変更している場合は、「guid」のURLと表示されるURLが違うので
「get_permalink()」を使用してパーマリンクを取得した方がいいと思います。

WordPress:別階層に設置したWordPressの最新記事をTOPページに表示

WordPressを設置する時にドキュメントルートにブログ用のディレクトリを作成してインストールする場合があります。

その際に別階層にある静的ページ(TOPページなど)で「wp-load.php」を読み込めば、
WordPressで投稿した最新記事情報を取得し自動で反映させることが可能です。

「wp-load.php」を読み込んだページはWordPressの関数が使用できるようになるのです。

下記に静的ページで「wp-load.php」を読み込み、別階層に設置したWordPress最新記事情報を取得する方法をメモします。


別階層のWordPressの最新記事を静的ページに表示

※wpディレクトリにWordPressをインストールした場合

phpのファイルで「wp-load.php」を読み込みます。

<?php require_once('./wp/wp-load.php'); ?>

読み込むとWordPressの関数が使用できます。

下記コードを記述するとWordPressの最新記事を取得し、表示させることができます。

<?php $posts = get_posts("numberposts=5&category=&orderby=post_date&offset=0"); ?>
<?php global $post; ?>

<?php if ($posts): ?>
<ul>
<?php foreach($posts as $post): ?>
    <?php setup_postdata($post); ?>
    <li><a href="<?php the_permalink();?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

get_postsで記事情報を取得しています。

numberposts:件数
category:カテゴリーを指定
orderby:ソート順
offset:開始位置

上記の場合はカテゴリーを指定せず、最新記事5件を取得しています。

記事が存在する場合、取得したデータをループし「setup_postdata()」でポストデータをセットします。
そして「the_permalink()」と「the_title()」でパーマリンクと記事タイトルを表示しています。

記事が正しく出力されればOKです。


オフィシャルサイトのブログなどではディレクトリの中にWordPressが設置されているのをよく見ます。
最新情報が自動で反映されれば記事を投稿するたびに更新しなくて済むので運営も楽になると思います。

Linux:MySQLのmax_allowed_packetの値を変更する

LinuxサーバでMySQLmax_allowed_packetの値を変更した際の方法をメモします。

MySQLのmax_allowed_packetで設定している値よりも大きいデータをサーバに送った時に、
エラーになってしまうことがあります。

エラーになってしまう場合は、パケットの最大の値を変更する必要があります。
MySQLでサーバに送るパケットの最大は16MBです。

下記に変更手順を記載します。


MySQLのmax_allowed_packetの値を変更

SSHでサーバにログインし、MySQLに接続します。

mysql -u root -p

最大のパケット値を確認する場合は下記を実行します。

show variables like 'max_allowed_packet';

実行するとmax_allowed_packetの設定値が表示されます。

※1MBの場合

mysql> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)

max_allowed_packetの値を変更する場合は「my.cnf」を編集します。

vi /etc/my.cnf

max_allowed_packetの値を「16MB」に変更します。

max_allowed_packet=1MB

↓ 変更

max_allowed_packet=16MB

編集を保存し、MySQLを再起動します。

/etc/init.d/mysqld restart

再起動後、MySQLに接続しmax_allowed_packetの値を確認します。

mysql> show variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.00 sec)

max_allowed_packetの値が変更されていればOKです。


MySQLでデータが大き過ぎてエラーが出てしまう場合は、
max_allowed_packetの値を確認すると解決するかもしれないです。