Ubuntu Server 20.04 LTSを入れて最低限のLAMP開発環境を構築するまでの備忘録

UbuntuをノートPCにインストールして、最低限LAMP開発環境を構築するまでの忘備録です。

真っ先にやること

まずはアップデート

sudo apt update -y
sudo apt dist-upgrade -y
sudo apt autoremove -y

1行版

sudo apt update -y && sudo apt dist-upgrade -y && sudo apt autoremove -y

ノートPCのカバーを閉じてもサスペンドさせない

sudo vi /etc/systemd/logind.conf

#HandleLidSwitch=suspend

HandleLidSwitch=ignore

設定を反映

sudo systemctl restart systemd-logind

ネットワークツールをインストール

IPアドレス確認に使い慣れたifconfigなどが使えないと不便なので

sudo apt install net-tools -y

単にIPアドレスを確認したいだけなら以下のコマンドで良い

ip -4 a

無線Lanを使えるようにする

Ubuntu Serverなどをインストールすると自動でWiFiの設定がされないので、ネットワークユーティリティをインストールする必要があります。
ネットワークツールをインストールします。

sudo apt install network-manager -y

アクセスポイントを表示

ハードウェアレベルでWiFiが認識されている場合、以下のコマンドでSSIDが表示されます。

nmcli device wifi

アクセスポイントへ接続

以下のコマンドで接続できます。
SSIDパスワードは接続したい機器に合わせてください。

sudo device wifi connect SSID password パスワード

IPアドレスを確認

ip -4 a

LAMP構築

Linux + Apache + MySQL(MariaDB) + PHP(Perl,Python)構築
(L)に該当するLinuxはすでにインストール済みなので、AMPの部分をインストールしていきます。

Apache

Webサーバーをインストールする。

sudo apt install apache2 -y

インストールが終わるとすでにWebサーバーが動いているので、ブラウザからアクセスするとデフォルトのWebページが表示されます。

MySQL(MariaDB)

インストールできるパッケージを確認

apt-cache -n search "^mariadb-"

最新のMariaDBをインストール

sudo apt install mariadb-server mariadb-client -y

MariaDBにログインできるか確認
最近のMariaDBはセキュリティの強化でrootにならないとログインできないので注意。
このあたりの問題や解決法はここが参考になります。
公式のドキュメントはこちら

sudo mysql -u root -p

mariadbへのrootログインをシステムのroot権限なしに手っ取り早くパスワード認証にするには

use mysql;
update user set plugin='' where user='root';
flush privileges;

rootのパスワードを(強制的に)セット

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY "hogehoge";

外部ホストからmariadbへ接続させるにはもう少し設定が必要になります。
この記事の少し下のほうに書いてあります。

PHP(perl、Python)

PHP

インストールできるパッケージを確認

apt-cache -n search "^php-"

PHP7.4系をインストール

sudo apt install php7.4 libapache2-mod-php7.4 -y
sudo apt install php7.4-curl php7.4-gd php7.4-gmp -y
sudo apt install php7.4-json php7.4-ldap -y
sudo apt install php7.4-mysql php7.4-xml php7.4-xmlrpc -y

perlをインストール

インストールできるパッケージを確認

apt-cache -n search "^perl"

perlはUbuntu Serverをインストールした状態でデフォルトで使えるようになってる。
インストールされているperlのバージョンを確認する。

perl -v

特にアップデートする必要もなさそう。
念のためapt installしても特に何かがインストールされた様子もない。

sudo apt install perl -y

Reading package lists… Done
Building dependency tree
Reading state information… Done
perl is already the newest version (5.30.0-9build1).
perl set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Pythonをインストール

Ubuntu ServerのデフォルトインストールでPythonはインストールされている様です。
バージョンは3系

pcm@versapro:~$ python
Command 'python' not found, did you mean:
command 'python3' from deb python3
command 'python' from deb python-is-python3

pcm@versapro:~$ python3
Python 3.8.2 (default, Apr 27 2020, 15:53:34)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

Apache再起動

sudo service apache2 restart

phpMySQLAdminをインストール

sudo apt install phpmyadmin -y

インストール後
http://ipアドレス/phpmyadmin/
でアクセスできる。

UserDirを有効にする

sudo a2enmod userdir
sudo vi /etc/apache2/mods-enabled/php7.4.conf

以下のように <IfModule mod_userdir.c> のブロックをコメントアウトする。

設定を反映するためApacheを再起動

sudo /etc/init.d/apache2 restart

もしかしたらこのあたりの作業も必要になるかもしれない。

sudo apt install apache2-suexec-custom
sudo a2enmod userdir
sudo a2enmod include
sudo a2enmod cgid
sudo a2enmod suexec
sudo vi /etc/apache2/suexec/www-data
2行目を、public_html にする。
chmod o+rx ~/public_html

動作確認

mkdir ~/public_html
cd ~/public_html
vi test.php

<?php
    phpinfo();

外部ホストからmariaDBへ接続できるようにする

configファイル

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

bind-address = 127.0.0.1
となっているところを、
#bind-address = 127.0.0.1
などとしてコメントアウトする。

MariadDB再起動

sudo systemctl restart mariadb

データベース側

mysql -u root -p
SELECT user,host,plugin from mysql.user;
+------------+-----------+--------+
| user       | host      | plugin |
+------------+-----------+--------+
| root       | localhost |        |
+------------+-----------+--------+
CREATE USER 'root'@'%' IDENTIFIED VIA mysql_native_password USING '任意のパスワード'; 
GRANT ALL PRIVILEGES ON *.* 
 TO 'root'@'%' REQUIRE NONE 
WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 
     MAX_CONNECTIONS_PER_HOUR 0 
     MAX_UPDATES_PER_HOUR 0 
     MAX_USER_CONNECTIONS 0;

こうなっていれば外部から接続できる

SELECT user,host,plugin from mysql.user;

+------------+-----------+--------+
| user    | host   | plugin |
+------------+-----------+--------+
| root    | localhost |     |
| root    | %     |     |
+------------+-----------+--------+

ValueDomainのDDNSをwgetとcronで自動更新させる

とりあえず公式のドキュメントをみてwgetで使用するURLを組み立てる。

sudo cp /etc/crontab /etc/cron.d/cron_ddns
sudo vi /etc/cron.d/cron_ddns

以下の行を追加

10分に1回更新

*/10 * * * * root wget -O – 'https://dyn.value-domain.com/cgi-bin/dyn.fcg?d=hogehoge.com&p=hogehoge&h=ddnstest' /dev/null 2>&1

毎事0分に1回更新(60分間隔)

0 * * * * root wget -O – 'https://dyn.value-domain.com/cgi-bin/dyn.fcg?d=hogehoge.com&p=hogehoge&h=ddnstest' /dev/null 2>&1

設定反映

sudo service cron restart

コメント

タイトルとURLをコピーしました