Linux」カテゴリーアーカイブ

firewalldのポート設定(CentOS7)

代表的なポート
TCP 20 : FTP (データ)
TCP 21 : FTP (制御)
TCP 22 : SSH
TCP 23 : Telnet
TCP 25 : SMTP
UDP 53 : DNS
UDP 67 : DHCP(サーバ)
UDP 68 : DHCP(クライアント)
TCP 80 : HTTP
TCP 110 : POP3
UDP 123 : NTP
TCP 443 : HTTPS

設定の確認
# firewall-cmd –list-all

サービス単位の恒久的なポート開放設定(例:http)
# firewall-cmd –zone=public –add-service=http –permanent
# firewall-cmd –reload

直接の恒久的なポート開放設定(例:443/tcp)
# firewall-cmd –zone=public –add-port=443/tcp –permanent
# firewall-cmd –reload

サービス単位の恒久的なポート閉鎖設定(例:http)
# firewall-cmd –zone=public –remove-service=http –permanent
# firewall-cmd –reload

直接の恒久的なポート閉鎖設定(例:68/udp)
# firewall-cmd –zone=public –remove-port=68/udp –permanent
# firewall-cmd –reload

代表的なポートスキャナ「nmap」のインストール(CentOS)
# yum install nmap
# nmap <アドレス>

WindowsでLinux(WSL, LAMP, WordPress)

WSLとはWindows Subsystem for Linuxのこと。
仮想OSとかエミュレーターではなく、ネイティブで動作するのが特徴。

≪前編≫
Windowsメニュー右にある検索窓から”con”と入力してコントロールパネルを検索し起動します。

コントロールパネルから「プログラム」→「プログラムと機能」を開き、左ペインの「Windowsの機能の有効化または無効化」をクリックする。

[Linux 用 Windows サブシステム]にチェックを入れ、「OK」をクリックする。

「今すぐ再起動」をクリックして、PCを再起動する。

Edgeで、「https://aka.ms/store/」

Microsoft Store
「WindowsでLinuxを実行する」
「Windows Subsystem for Linux (WSL) に Linux ディストリビューション
をインストールして、実行できます。」
から、Ubuntu をインストール

Ubuntu のウィンドウが開くので、

user:*******
password:********

$ sudo su –
pass

#

管理者権限で入れました。

# apt install apache2

# /etc/apache2/apache2.conf
このファイルの末尾に以下の記述を追加します。

AcceptFilter https none
AcceptFilter http none

ファイルを編集したあと以下のコマンドでApacheを再起動します。

# service apache2 restart
ちなみにApacheを停止する場合は以下を実行します。

# service apache2 stop

Edgeで、「http://localhost」が表示されればOK

ApacheのWebサイトを表示するルートフォルダは以下です。
/var/www/html/
ここにページを表示するためのファイルを置きます。
WordPressもここにインストールします。

exitして、

$ sudo apt install mysql-server
ディスクスペース消費を確認してくるので”y”を入力します。

[エラー] Sub-process /usr/bin/dpkg returned an error code (1)

エラーになった
dpkg: error processing package mysql-server (–configure):
dependency problems – leaving unconfigured
Errors were encountered while processing:
mysql-server-8.0
mysql-server
ので、
$ sudo apt remove mysql-server
$ sudo apt autoremove
$ sudo apt install mysql-server

$ sudo apt remove mysql-server-8.0
$ sudo apt autoremove
$ sudo apt install mysql-server-8.0

エラーになったので、
$ sudo dpkg –configure -a

エラーになったので、
Ubuntuでは/var/lib/dpkg/info配下に、パッケージのインストール前、インストール後に実行するためのスクリプトファイルや、その他パッケージに関する情報を含むファイルが置かれています。そしてこのディレクトリにある問題のパッケージ(ここではmysql-server-5.7)のpreinstとprerm(インストール前用スクリプトファイル)、postinstとpostrm(インストール後用スクリプトファイル)の削除します。その後でapt updateやapt upgradeが正常に実行できるようになりました。
具体的には、以下のコマンドを実行します。
$ cd /var/lib/dpkg/info
$ sudo mv mysql-server-8.0.post* /tmp
$ sudo mv mysql-server-8.0.pre* /tmp
$ sudo mv mysql-server.post* /tmp
$ sudo mv mysql-server.pre* /tmp

$ sudo su –

# apt update
# apt upgrade

インストールができたらMySQLのバージョンを確認します。
$ mysql –version
mysql Ver 8.0.20-Oubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

MySQLを起動して動作確認します。
# service mysql start
# mysql

mysql>

①へ
エラーになったら、やり直す。

$ sudo apt update
$ sudo apt install mysql-client
必要なら
$ sudo apt install mysql-server

サーバー起動
$ sudo service mysql start

初期化
$ sudo mysqld –initialize

初期ルートパスを所得
$ grep ‘temporary password’ /var/log/mysql/error.log
このパスワードを使って、rootパスワードを変更していく。
何も聞かれないので、

以下に従い、rootパスワードを変更する。

************************************************************

# mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root: 初期パスワードを入力する→********

The existing password for the user account root has expired. Please set a new password.

New password: 新しいパスワードを入力する→********

Re-enter new password: 再度同じ新しいパスワードを入力する→********

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y

New password: ポリシーに沿った新しいパスワードを入力→********

Re-enter new password: 再度新しいパスワードを入力する→********

Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user, a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Normally, root should only be allowed to connect from
‘localhost’. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named ‘test’ that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y Success.

– Removing privileges on test database…
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

************************************************************

設定ファイルは CentOS であれば /etc/my.cnf です。 [mysqld] 節に次のものを追加します。

[mysqld]
…(略)
character-set-server = utf8
default_password_lifetime = 0

************************************************************

①以下のコマンドで今の認証の内容をチェックします。
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

パスワード認証を有効にするため以下のコマンドでパスワードを設定します。
mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘********’;
以下のコマンドで有効にします。

mysql> FLUSH PRIVILEGES;
mysql> exit;

以降mysqlコマンドを使用するときはrootパスワードを入力します。
$ sudo mysql -u root -p

PHPをインストールする。
$ sudo apt install php libapache2-mod-php php-mysql
$ sudo service apache2 restart

ApacheのWebサイトを表示するルートフォルダに簡単なPHPコードが書かれたファイルを置いてブラウザで表示します。

viエディタでPHPファイルを作成します。

$ sudo vi /var/www/html/info.php
エディタが起動したら以下の内容を記述してファイルを保存します。

<?php
phpinfo();
?>
ファイルが保存できたらブラウザで表示してみます。

http://localhost/info.php
PHPの情報が表示されれば正しく動作しています。

動作確認できればこのファイルはいらないので削除しておきましょう。
$ sudo rm /var/www/html/info.php

次にPHPでマルチバイト文字を扱うためと、各ロケールに対応したプログラミングを行えるようにするため以下のパッケージをインストールします。
$ sudo apt install php-mbstring

PHP拡張モジュールであるmbstringを有効にするため以下のコマンドを実行します。
$ sudo phpenmod mbstring

そしてApacheを再起動します。
$ sudo service apache2 restart

phpMyAdminをインストールする
phpMyAdminを以下のコマンドでインストールします。

$ sudo apt install phpmyadmin

Webサーバーを選択する画面が表示されるとapache2にカーソルを持っていきスペースキーで*印を付けて選択します。TABキーで、OKにあわせて、ENTER。

データベースの設定画面が表示されるとそのままYesを選択してEnterキーを押します。

アプリケーションパスワードの設定画面が表示されると任意のパスワードを入力し、TABキーで、OKにあわせて、ENTER。
********

インストールが完了したら、以下をブラウザのアドレスバーに入力してphpMyAdminにアクセスしてください。

http://localhost/phpmyadmin
phpMyAdminのログイン画面が表示されます。

MySQLインストール時に設定したrootパスワードを使ってrootユーザーでログインします。
ログインできると画面が表示されます。
以上でWSLへのLAMP環境の作成は完了です。

エラーの時は・・・

「みんなこの問題に遭遇するんだ。一度WSLを閉じて再起動し、 sudo service mysql start, sudo dpkg –configure -a を実行すると完了するよ」
という感じに見受けられます。

ということで、

WSLを再起動
sudo service mysql start を実行
sudo dpkg –configure -a を実行
してみましょう。それでどうでしょう?

WSLを再起動
$ sudo service mysql start
$ sudo mysql -u root -p
WSLを再起動
sudo dpkg –configure -a
WSLを再起動
http://localhost/phpmyadmin

エラーになったので、
config.inc.phpを探す。
/etc/phpmyadmin/config.inc.php
にあることがわかる。

# vi /etc/phpmyadmin/config.inc.php

https://codeaid.jp/blog/wsl-lamp-wp1/ 参照

≪後編≫
WordPressの最新バージョンを公式サイトよりダウンロードします。
セキュリティソフトを外して、
# cd /var/www/html
# wget https://ja.wordpress.org/latest-ja.tar.gz
# tar xvzf latest-ja.tar.gz
wordpressフォルダ内にデフォルトで含まれているサンプルの設定ファイルをコピーして設定ファイルを作成します。
# cp ./wordpress/wp-config-sample.php ./wordpress/wp-config.php
wordpressフォルダとファイルの所有権をApacheの「www-data」に変更します。
# chown -R www-data:www-data /var/www/html/wordpress
テーマやプラグインが変更できるようにwordpress配下の「wp-content」ディレクトリのグループに書き込み権限を追加します。
# chmod g+w /var/www/html/wordpress/wp-content
テーマとプラグインのディレクトリ配下のすべてのファイルにApacheの書き込み権限を追加します。
# chmod -R g+w /var/www/html/wordpress/wp-content/themes
# chmod -R g+w /var/www/html/wordpress/wp-content/plugins

前編でインストールしたphpMyAdminコンソールを使ってデータベースを作成します。

# service mysql start
# service apache2 restart
# apt install phpmyadmin

root
********

http://localhost/phpmyadmin

phpMyAdminへrootでログインして”wordpress”という名前でデータベースを作成します。(データベース名は任意でいいです。ここでは”wordpress”で例として作成しています)
phpMyAdmin画面でデータベースタブを選択します。
作成するデータベース名を入力し、utf8_general_ciを選択して作成します。

WordPressの設定ファイルを修正します。
# vi /var/www/html/wordpress/wp-config.php

/** WordPress のためのデータベース名 */
define(‘DB_NAME’, ‘wordpress’);
/** MySQL データベースのユーザー名 */
define(‘DB_USER’, ‘root’);
/** MySQL データベースのパスワード */
define(‘DB_PASSWORD’, ‘rootのパスワード’);
・・・
define(‘FS_METHOD’,’direct’);
先程作成したWordPressで使うデータベース名とユーザー名とパスワードを入力し、設定ファイル下部にテーマやプラグインのアップデートが直接ダウンロードできるよう
「define(‘FS_METHOD’,’direct’);」
を記述して保存します。

WordPressをインストール
http://localhost/wordpress

サイトのタイトル:********
ユーザー名:********
パスワード:********
メールアドレス:********@********

まとめ
作成した環境でWordPressのテーマやプラグインを開発する場合などでファイルを書き換えるときは、WSLからCLIでコマンド操作するのが基本的な方法になります。

今のところWSLからWindowsのファイルへアクセスできますが、WindowsからWSL環境へアクセスできません。

例えば、プラグインの開発作業で動作確認しながらファイル修正するような作業をするには、Windows環境で修正したファイルをWSLのUbuntuでWordPress環境のwp-content/pluginsフォルダ配下にファイルをコピーする操作をします。

WSLからWindowsのファイルへは、「/mnt/c」からCドライブへアクセスできます。

「/mnt」はWindowsシステムがマウントしているドライブが表示されますが、USBやネットワークドライブは表示されないようです。

今後はWindowsからWSL環境のファイルへアクセスできるようになるという情報も出ているので、そうなればWidnowsから直接WordPressのテーマやプラグインファイルを直接修正できるようになります。

それから、WordPressの更新、テーマやプラグインのインストール・更新のときにもし以下のようなSSLでエラーが発生した場合

curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to ubuntu.com:443
Windowsにセキュリティソフトを入れていれば、それが原因でこのエラーが発生します。

一度セキュリティソフトを停止してから再度実行してください。

前編にも記載しましたが、WSLのUbuntuはsystemctlコマンドが使えないためこれによる自動起動設定ができません。

利用する際はコマンド操作でMySQLとApacheを起動してください。

https://codeaid.jp/blog/wsl-lamp-wp2/ 参照

GNU C Compiler

「Windows」のデスクトップ上の「Tera Term」のショートカットを用いる
(「Windows」に「Tera Term」をインストールしておく)。
「Linux」のサーバに、一般ユーザーでログインする
(いきなり「root」で、ログインすると、ルートディレクトリで作業することに注意)。
ユーザーディレクトリの中で、スーパーユーザーに交代する。

$ su
パスワード:
#

「GCC」ディレクトリを作成する。

# mkdir GCC
# cd GCC

# vi hello.c

#include <stdio.h>
main () {
printf(“Hello, world.\n”);
}

コンパイル

# gcc hello.c

実行

# ./a.out
Hello, world.

UNIXでは「./」と、カレントディレクトリを指定しないと、
カレントディレクトリのコマンドは実行されない。

「a.out」以外のファイル名にしたい場合は、

# mv a.out hello

とするか、コンパイル時に

# gcc hello.c -o hello

のように指定する。
実行ファイル名に「test」を使用しない
(「test」はUNIXのコマンドなので)。

実行

# ./hello
Hello, world.

「WP Multibyte Patch」の要件

WordPressの「WP Multibyte Patch」プラグインの更新の際、
「お使いの WP Multibyte Patch を有効化するには PHP の mbstring 関数が必要です。」
というエラーが表示された。

解決策として、

ダッシュボードからWP Multibyte Patchを有効化。「お使いの WP Multibyte Patch を有効にするには、PHP の mbstring 関数が必要です。」と表示され場合、php-mbstrigをインストールする必要があります。

【手順】
# yum -y install php-mbstring
# service httpd restart

http://www.eastforest.jp/esthome/?p=286 より引用

ちなみに私のシステム(Fedora20)では、

# yum -y install php-mbstring
# systemctl restart httpd.service

で更新できるようになりました。