Click here for "Error Codes for Commercial Air Conditioners".

Ubuntu Server 22.04 : WEB Server(Apache)

Apache2 installation.

Allow http:80 port and https:443 port in UFW first.

# ufw allow http
# ufw allow https
# ufw reload

1 Install Apache2

# apt -y install apache2

2 Apache2 Basic Settings

# vi /etc/apache2/conf-enabled/security.conf
# Line 25:change
ServerTokens  Prod
# vi /etc/apache2/mods-enabled/dir.conf
# Line 2:Check file names accessible by directory name only
DirectoryIndex index.html index.cgi index.php index.xhtml i ndex.htm
# vi /etc/apache2/apache2.conf
# Line 70:Server name added
ServerName <own domain name>
# Line 172:change
AllowOverride ALL
# vi /etc/apache2/sites-available/000-default.conf
# Line 11:Administrator Email Address
ServerAdmin <your mailaddress>
Restart Apache
# systemctl restart apache2

3 Apache2 : Using Perl Scripts

Enable CGI to make Perl scripts available
①Install Perl

# apt -y install perl

②Enable CGI module and restart

# a2enmod cgid
# systemctl restart apache2

③Confirm CGI module is enabled
Test Script Creation

# cat > /usr/lib/cgi-bin/test_script <<'EOF'
print "Content-type: text/html\n\n";
print "Hello CGI\n";

Authorize script files

# chmod 705 /usr/lib/cgi-bin/test_script

operation check

# curl http://localhost/cgi-bin/test_script
If you get a "curl: command not found" message
# apt install curl
# curl http://localhost/cgi-bin/test_script
Hello CGI

4 Apache2 : Using PHP Scripts

①Install PHP

# apt -y install php php-cgi libapache2-mod-php php-common php-pear php-mbstring

②Apache2 Configuration

# a2enconf php8.1-cgi
Enabling conf php8.1-cgi.
To activate the new configuration, you need to run:
systemctl reload apache2
# vi /etc/php/8.1/apache2/php.ini
# Line 850 : change
#upload_max_filesize = 2M
upload_max_filesize = 200M
# Line 968:Uncomment and set time zone
date.timezone = "Asia/Tokyo"

③Create a PHP test page and check its operation

# vi /var/www/html/index.php
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
print "PHP Test Page";

If you access http://<server IP address>/index.php with a browser and the following screen appears, success!

5 Apache2 : Virtual Host Configuration

①Copy the default configuration file (file name is arbitrary, in this case vhost-yourdomain.conf as an example) and configure the virtual host

# cd /etc/apache2/sites-available/
# cp 000-default.conf vhost-yourdomain.conf

②Edit the configuration file you created

# vi vhost-yourdomain.conf
<VirtualHost *:80>
ServerName <own domain name>
ServerAdmin <Administrator Email Address>
DocumentRoot /var/www/html/<own domain name>/
ErrorLog ${APACHE_LOG_DIR}/<own domain name>.error.log
CustomLog ${APACHE_LOG_DIR}/<own domain name>.access.log combined

③Symbolic link to the configuration file to disable the default configuration file

# cd /etc/apache2/sites-available/
# a2ensite vhost-yourdomain.conf
# a2dissite 000-default.conf
# systemctl restart apache2

④Edit hosts file

# vi /etc/hosts <own domain name>

⑤directory creation

# mkdir /var/www/html/<own domain name>

⑥Create test pages and check operation

# vi /var/www/html/<own domain name>/index.html
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
Virtual Host Test Page

⑦If you access http://<your domain name>/index.html with a browser and see the following screen, you have succeeded.

6.Digest authentication with Apache2

Since Basic Authentication, a well-known authentication authorization method for http, sends authentication information in plain text, there is a risk of ID and password leakage if the packet is intercepted.
On the other hand, Digest Authentication encrypts and transmits authentication information, so there is almost no risk of information leakage.

6.1 Create password file for Digest authentication

Specify an authenticated area called realm. This realm allows the same directory to be accessed as authenticated.
As an example, we will create a user named "secretuser" with "DigestAuth" as the realm. Execute the following command and enter the password for "secretuser" when prompted.

# /usr/bin/htdigest -c /etc/apache2/.digestauth "DigestAuth" secretuser


# cat /etc/apache2/.digestauth

As above, secretuser and encrypted password are created

6.2 Edit Apache configuration file

Specify the directory to which Digest authentication will be applied. (In this case, specify the secret directory.)

# vi /etc/apache2/apache2.conf

Add the following at the end

<Directory /var/www/html/secret>
AuthType Digest
AuthName "DigestAuth"
AuthDigestDomain /secret/
AuthUserFile /etc/apache2/.digestauth
Require valid-user

Enable Digest authentication and reboot

# a2enmod auth_digest
# systemctl restart apache2

When accessing http://<domain name>/ with a browser, a screen appears asking for "user name" and "password".