1.Apache2 Install , Virtual Host Configuration
1.1 Apache2 Install
①httpd Install
# dnf -y install httpd
Version Check
# httpd -v
Server version: Apache/2.4.62 (Rocky Linux)
Server built: May 11 2026 00:00:00
1.2 Apache Configuration
①Edit httpd.conf file
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_org
# vi /etc/httpd/conf/httpd.conf
Line 91: Administrator Address Specification
ServerAdmin [Email Address]
Line 101 : Adding a ServerName
#ServerName www.example.com:80
ServerName [Domain]
Line 149: Change (Indexes removed)
Options FollowSymLinks
Line 156: Change
AllowOverride All
Line 169: File names accessible only by directory name
DirectoryIndex index.html index.php index.cgi
Add to the last line
ServerTokens Prod
②If Firewalld is enabled, HTTP service permission is required; HTTP uses [80/TCP]
# firewall-cmd --add-service=http --permanent
# firewall-cmd --reload
③Apache Auto-Start Configuration
# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled)
Active: active (running) since Mon 2026-06-08 09:39:45 JST; 12s ago
Docs: man:httpd.service(8)
Main PID: 9564 (httpd)
Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:>
Tasks: 177 (limit: 22900)
Memory: 14.1M (peak: 14.5M)
CPU: 56ms
CGroup: /system.slice/httpd.service
├─9564 /usr/sbin/httpd -DFOREGROUND
├─9565 /usr/sbin/httpd -DFOREGROUND
├─9566 /usr/sbin/httpd -DFOREGROUND
├─9567 /usr/sbin/httpd -DFOREGROUND
└─9568 /usr/sbin/httpd -DFOREGROUND
Jun 08 09:39:45 Lepard systemd[1]: Starting The Apache HTTP Server...
Jun 08 09:39:45 Lepard httpd[9564]: Server configured, listening on: port 80
Jun 08 09:39:45 Lepard systemd[1]: Started The Apache HTTP Server.
④operation check
If you access http://[server IP address] and see the RockyLinux Test Page as shown below, it is OK.

⑤Hide the Welcome page, create a new index.html file as a Test Page, and check apache operation
Rename the welcome page
# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.org
Create an HTML test page
# vi /var/www/html/index.html
Please describe the following
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
Apache Test Page
</div>
</body>
</html>
If you access http://[server IP] and the Test Page is displayed as shown below, it is OK.

1.3 Virtual Host Settings
Assign and configure the domain name [FQDN] to the document root [/var/www/html/FQDN] directory for virtual host operation
# vi /etc/httpd/conf.d/vhost.conf
Enter the following (virtual host domain settings)
<VirtualHost *:80>
DocumentRoot /var/www/html/[FQDN]
ServerName [FQDN]
ServerAdmin <Email Address> ←Administrator's email address
ErrorLog logs/[FQDN].error_log
CustomLog logs/[FQDN].access_log combined
</VirtualHost>
<Directory "/var/www/html/[FQDN]">
Options FollowSymLinks
AllowOverride All
</Directory>
Creating a Document Directory
# mkdir /var/www/html/[FQDN]
Restart Apache
# systemctl restart httpd
2. Use of CGI Scripts
①CGI availability check
# grep -n "^ *ScriptAlias" /etc/httpd/conf/httpd.conf
252: ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
The above is displayed and available under "/var/www/cgi-bin/".
②Create test scripts and check operation
# vi /var/www/cgi-bin/index.cgi
Please describe the following
#!/usr/libexec/platform-python
print("Content-type: text/html\n")
print("CGI Script Test Page")
# chmod 755 /var/www/cgi-bin/index.cgi
# curl localhost/cgi-bin/index.cgi
CGI Script Test Page
3. PHP installation and configuration
3.1.PHP8 Install
Since the PHP version in the standard repository (PHP 8.0) is outdated for installing the latest version of WordPress, we will install PHP 8.4 from the Remi repository.
The Remi repository is pre-installed by default.
①Enabling PHP 8.4 Modules
Update the module information so that PHP 8.4 can be selected from the Remi repository, then reset and enable it.
# dnf module reset php -y
# dnf module enable php:remi-8.4 -y
①Installing PHP 8.4 and Extensions
# dnf install -y php php-cli php-fpm php-mysqlnd php-mbstring php-xml php-gd php-json php-curl
②Version Check
# php -v
PHP 8.4.22 (cli) (built: Jun 3 2026 01:12:32) (NTS gcc x86_64)
Copyright (c) The PHP Group
Built by Remi's RPM repository <https://rpms.remirepo.net/> #StandWithUkraine
Zend Engine v4.4.22, Copyright (c) Zend Technologies
with Zend OPcache v8.4.22, Copyright (c), by Zend Technologies
Enabling and starting php-fpm
# systemctl enable php-fpm
Created symlink '/etc/systemd/system/multi-user.target.wants/php-fpm.service' → '/usr/lib/systemd/system/php-fpm.service'.
# systemctl start php-fpm
③Apache Restart
After PHP installation, restarting Apache will invoke PHP-FPM (FPM : FastCGI Process Manager) by default, and php-fpm service will be started in conjunction with httpd startup.
# systemctl restart httpd
# systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; preset: disabled)
Active: active (running) since Mon 2026-06-08 09:52:09 JST; 14s ago
Main PID: 10690 (php-fpm)
Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 6 (limit: 22900)
Memory: 11.4M (peak: 11.8M)
CPU: 35ms
CGroup: /system.slice/php-fpm.service
├─10690 "php-fpm: master process (/etc/php-fpm.conf)"
├─10691 "php-fpm: pool www"
├─10692 "php-fpm: pool www"
├─10693 "php-fpm: pool www"
├─10694 "php-fpm: pool www"
└─10695 "php-fpm: pool www"
Jun 08 09:52:09 Lepard systemd[1]: Starting The PHP FastCGI Process Manager...
Jun 08 09:52:09 Lepard systemd[1]: Started The PHP FastCGI Process Manager.
④Confirmation of PHP operation
Create the following files
# vi /var/www/html/[FQDN]/info.php
Please describe the following
<?php phpinfo(); ?>
If you access http://[FQDN]/test.php in your browser and see the following screen, it is OK

4. 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.
4.1 Create password file for Digest authentication
Specify an authenticated area called realm. This realm allows the same directory to be accessed as authenticated.
For this example, the realm is "DigestAuth" and a user and password file named "secretuser" ".digestauth" is created.
# /usr/bin/htdigest -c /etc/httpd/.digestauth "DigestAuth" secretuser
New password:
Re-type new password:
Confirmation
# cat /etc/httpd/.digestauth
secretuser:DigestAuth:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
As above, secretuser and encrypted password are created
4.2 Edit Apache configuration file
Specify the directory to which Digest authentication will be applied. (In this case, specify the "secret" directory.)
# vi /etc/httpd/conf/httpd.conf
Add the following at the end
<Directory "/var/www/html/[FQDN]/secret">
AuthType Digest
AuthName "DigestAuth"
AuthDigestDomain /[FQDN]/secret/
AuthUserFile "/etc/httpd/.digestauth"
Require valid-user
</Directory>
Create a directory for Digest authentication
# mkdir /var/www/html/[FQDN]/secret
Enable Digest authentication and reboot
# systemctl restart httpd.service
When accessing http://[FQDN]/secret with a browser, a screen appears asking for "user name" and "password".

