前準備
ロケール表示
# echo $LANG
使用可能なロケール一覧表示
# locale -a
デフォルトのロケールを英語に変更して反映させる
# echo export LANG=en_US.utf8 >> ~/.profile
# source ~/.profile
# echo $LANG
Ubuntu 22.04 の場合
ステップ 1 — root としてログインする
Tera Termでログインします。※Tera Termの設定についてはこちらを参照してください
ステップ2-ファイアウォールの設定
# ufw app list
Output
Available applications:
OpenSSH
次回サーバーにログインできるように、ファイアウォールで SSH 接続が
許可されていることを確認する必要があります。
次のように入力して、これらの接続を許可します。
# ufw allow OpenSSH
次のように入力して、ファイアウォールを有効にします。
# ufw enable
入力yして押してENTER続行します。次のように入力すると、SSH 接続がまだ許可されていることがわかります。
# ufw status
———————————————–
Output
Status: active
To Action From
— —— —-
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
——————————————————
ファイアウォールは現在、SSH 以外のすべての接続をブロックしています。
追加のサービスをインストールして構成する場合は、ファイアウォールの設定を調整して、
サーバーへの新しいトラフィックを許可する必要があります。
1.インストール設定 ※ローカルパッケージインデックスを更新します
# sudo apt update
2.apache2 パッケージをインストールします。
# sudo apt install apache2
3.ファイアウォールの調整
Apache をテストする前に、ファイアウォール設定を変更して、デフォルトの
Web ポートへの外部アクセスを許可する必要があります。
前提条件の指示に従っていると仮定すると、サーバーへのアクセスを制限するように
UFW ファイアウォールを構成する必要があります。
インストール中に、Apache はそれ自体を UFW に登録して、
ファイアウォールを介した Apache へのアクセスを有効または無効にするために
使用できるいくつかのアプリケーション プロファイルを提供します。
次のように入力して、ufw アプリケーション プロファイルを一覧表示します。
# sudo ufw app list
アプリケーション プロファイルのリストが表示されます。
Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
出力に示されているように、Apache で使用できるプロファイルは 3 つあります。
Apache: このプロファイルはポート 80 のみを開きます (通常の暗号化されていない Web トラフィック)
Apache Full: このプロファイルは、ポート 80 (通常の暗号化されていない Web トラフィック) と
ポート 443 (TLS/SSL 暗号化トラフィック) の両方を開きます
Apache Secure: このプロファイルはポート 443 (TLS/SSL 暗号化トラフィック) のみを開きます
構成したトラフィックを引き続き許可する、最も制限の厳しいプロファイルを有効にすることをお勧めします。
このガイドではサーバーの SSL をまだ構成していないため、ポート 80 でのトラフィックのみを許可する必要があります。
# sudo ufw allow ‘Apache’
次のように入力して、変更を確認できます。
# sudo ufw status
Status: active
To Action From
— —— —-
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
出力に示されているように、プロファイルがアクティブ化され、Apache Web サーバーへのアクセスが許可されています。
4.Web サーバーの確認
次のように入力して、systemd init システムでサービスが実行されていることを確認します。
# sudo systemctl status apache2
● apache2.service – The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2023-03-12 16:02:52 JST; 5min ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 3431 (apache2)
Tasks: 55 (limit: 2317)
Memory: 5.2M
CPU: 40ms
CGroup: /system.slice/apache2.service
tq3431 /usr/sbin/apache2 -k start
tq3433 /usr/sbin/apache2 -k start
mq3434 /usr/sbin/apache2 -k start
Mar 12 16:02:52 x162-43-16-223 systemd[1]: Starting The Apache HTTP Server…
Mar 12 16:02:52 x162-43-16-223 systemd[1]: Started The Apache HTTP Server.
サーバーのコマンド プロンプトで次のように入力してみてください。
# hostname -I
スペースで区切られたいくつかのアドレスが返されます。
Web ブラウザーでそれぞれを試して、動作するかどうかを判断できます。
5.Apacheプロセスの管理
Web サーバーを起動して実行したので、systemctl を使用していくつかの基本的な管理コマンドを見てみましょう。
Web サーバーを停止するには、次のように入力します。
# sudo systemctl stop apache2
停止している Web サーバーを開始するには、次のように入力します。
# sudo systemctl start apache2
サービスを停止してから再開するには、次のように入力します。
# sudo systemctl restart apache2
単純に構成を変更する場合、Apache は多くの場合、接続をドロップせずにリロードできます。これを行うには、次のコマンドを使用します。
# sudo systemctl reload apache2
デフォルトでは、サーバーの起動時に Apache が自動的に起動するように設定されています。これが望ましくない場合は、次のように入力してこの動作を無効にします。
# sudo systemctl disable apache2
サービスが起動時に起動するように再度有効にするには、次のように入力します。
# sudo systemctl enable apache2
サーバーが再起動すると、Apache が自動的に起動するはずです。
6.仮想ホストのセットアップ(推奨)
次のように your_domain のディレクトリを作成します。
# sudo mkdir /var/www/your_domain
次に、$USER 環境変数を使用してディレクトリの所有権を割り当てます。
# sudo chown -R ubuntu:ubuntu /var/www/your_domain
デフォルトのファイル許可を設定する umask 値を変更していない場合、Web ルートの許可は正しいはずです。権限が正しいことを確認し、所有者がファイルの読み取り、書き込み、および実行を許可する一方で、グループやその他のユーザーには読み取りと実行の権限のみを付与するには、次のコマンドを入力します。
# sudo chmod -R 755 /var/www/your_domain
次に、nano またはお気に入りのエディターを使用して、サンプルの index.html ページを作成します。
# sudo nano /var/www/your_domain/index.html
内部に、次のサンプル HTML を追加します。
<html>
<head>
<title>Welcome to Your_domain!</title>
</head>
<body>
<h1>Success! The your_domain virtual host is working!</h1>
</body>
</html>
終了したら、ファイルを保存して閉じます。
Apache がこのコンテンツを提供するには、正しいディレクティブを使用して仮想ホスト ファイルを作成する必要があります。 /etc/apache2/sites-available/000-default.conf にあるデフォルトの構成ファイルを直接変更する代わりに、
/etc/apache2/sites-available/ に新しい構成ファイルを作成しましょう。 your_domain.conf:
# sudo nano /etc/apache2/sites-available/your_domain.conf
次の構成ブロックを貼り付けます。これはデフォルトに似ていますが、新しいディレクトリとドメイン名用に更新されています。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName your_domain
ServerAlias www.your_domain
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerAdmin support@your_domain.com
ServerName your_domain.com
ServerAlias your_domain.com
DocumentRoot /var/www/your_domain.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
DocumentRoot を新しいディレクトリに更新し、ServerAdmin を your_domain サイト管理者がアクセスできる電子メールに更新したことに注意してください。また、2 つのディレクティブを追加しました。ServerName は、この仮想ホスト定義に一致する必要があるベース ドメインを確立します。ServerAlias は、あたかも一致する必要がある追加の名前を定義します。それらは基本名でした。
終了したら、ファイルを保存して閉じます。
a2ensite ツールでファイルを有効にしましょう:
# sudo a2ensite your_domain.conf
000-default.conf で定義されているデフォルト サイトを無効にします。
# sudo a2dissite 000-default.conf
次に、構成エラーをテストしましょう。
# sudo apache2ctl configtest
次の出力が表示されます。
Output
Syntax OK
Apache を再起動して変更を実装します。
# sudo systemctl restart apache2
Apache がドメイン名を提供するようになりました。これをテストするには、http://your_domain に移動すると、次のように表示されます。
PHPのインストール 8.1標準をインストール
$ sudo apt show php
$ sudo apt install -y php
$ php -v
$ apache2ctl -v
Server version: Apache/2.4.52 (Ubuntu)
Server built: 2022-09-30T04:09:50
次にIMAPの拡張モジュールをインストール
# sudo apt install php-imap
# sudo phpenmod imap
# service apache2 restart
# sudo ufw app list
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
ご覧のとおり、Apacheにはプロファイルが3つあります。
Apache: このプロファイルは、ポート80(通常の暗号化されていないWebトラフィック)のみを開きます。
Apache Full: このプロファイルは、ポート80(通常の暗号化されていないWebトラフィック)とポート443(TLS/SSL暗号化トラフィック)の両方を開きます。
Apache Secure: このプロファイルは、ポート443 (TLS/SSL暗号化トラフィック)のみを開きます。
設定したトラフィックを許可しながら、最も制限の厳しいプロファイルを有効にすることをお勧めします。現時点ではまだ、サーバーにSSLを設定していないため、ポート80のトラフィックのみを許可すればよいでしょう。
# sudo ufw allow ‘Apache’
# sudo ufw status
Status: active
To Action From
— —— —-
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
# sudo systemctl status apache2
● apache2.service – The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2023-03-12 16:48:38 JST; 3min 40s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 11950 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 11954 (apache2)
Tasks: 6 (limit: 2317)
Memory: 10.6M
CPU: 42ms
CGroup: /system.slice/apache2.service
tq11954 /usr/sbin/apache2 -k start
tq11955 /usr/sbin/apache2 -k start
tq11956 /usr/sbin/apache2 -k start
tq11957 /usr/sbin/apache2 -k start
tq11958 /usr/sbin/apache2 -k start
mq11959 /usr/sbin/apache2 -k start
Mar 12 16:48:38 x162-43-16-223 systemd[1]: Starting The Apache HTTP Server…
Mar 12 16:48:38 x162-43-16-223 systemd[1]: Started The Apache HTTP Server.
MySqlサーバーをインストール
# sudo apt install mysql-server
# mysql –version
phpMyAdminのインストール
# sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl
★下記をインストールしないとphpmyadminは動作しない★
最後に SQLite/UbuntuにSQLite3をインストール
以下の通り、SQLite3(sqlite3)で始まるパッケージをapt-cacheコマンドで検索します。
# apt-cache search sqlite3 | grep ^sqlite3
sqlite3 – Command line interface for SQLite 3
sqlite3-doc – SQLite 3 documentation
sqlite3-pcre – Perl-compatible regular expression support for SQLite
sqlite3-tools – Command line interface for SQLite 3 (tools)
上記の操作によりsqlite3のパッケージ名が確認できました。
以下のコマンドでsqlite3のインストールができます。
# sudo apt-get install -y sqlite3
以下のコマンドにより、sqlite3コマンドが/usr/binにインストールされていることが確認できます。
# which sqlite3
/usr/bin/sqlite3
# sudo systemctl restart apache2
バックグラウンド ジョブの設定
バックグラウンド ジョブの設定
システムの crontab に次の行を挿入します。
以下の cron ジョブを実行するタイミングは推奨されるものであり、必要に応じて変更できます。
* * * * * /usr/bin/php -q /home/ubuntu/okmail/artisan schedule:run 2>&1
# systemctl restart cron
ユーザーのパスワード変更
# sudo passwd ubuntu
PHPアドミンのアクセス制限をする
/etc/phpmyadmin のapache.conf を
下記を追加する
———————————————————
order deny,allow
deny from all
allow from ***.***.***.***
————————————————————-
***.***.***.*** ← この部分は固定IPアドレスを設定
—- 以下がapache.conf の内容
# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
order deny,allow
deny from all
allow from ***.***.***.***
# limit libapache2-mod-php to files and directories necessary by pma
<IfModule mod_php7.c>
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/usr/share/doc/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/:/usr/share/javascript/
</IfModule>
</Directory>
# Disallow web access to directories that don’t need it
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
———————— ここまで apache.conf 内容
http://okmail.jp/phpmyadmin/
# sudo mysql
mysql>ALTER USER ‘root’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘password’;
mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;
これで phpMyAdmin にログイン出来ます。
http://okmail.jp/phpmyadmin/
コマンドでSQLにログインする場合は下記になる
# mysql -uroot -p
文字コードをUTF8にする
mysql> CHARSET utf8;
データーベースを見る
mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| phpmyadmin |
| sys |
+——————–+
5 rows in set (0.00 sec)
mysql>
SSLサーバー証明書の設定
ステップ1— Cerbotのインストール
# sudo apt install certbot python3-certbot-apache
# sudo nano /etc/apache2/sites-available/your_domain.com.conf
下記を記入
<VirtualHost *:80>
ServerAdmin support@your_domain.com
ServerName your_domain.com
ServerAlias your_domain.com
DocumentRoot /var/www/your_domain.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
ここまで