Ubuntu 22.04 LTS (debian) Apache2 http2 + PHP 8.1

Commands to launch and to set up my preferred environment in ubuntu.

$> sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
$> sudo apt install -y php8.1-fpm php8.1 libapache2-mod-php8.1 php8.1-common  php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl php8.1-bcmath unzip php8.1-dom apache2 composer libapache2-mod-fcgid

$> sudo apt install -y certbot python3-certbot-apache  #optional for SSL
$> sudo apt autoremove -y

Optionally to setup ZSH and the Z plugin

$> sudo apt install -y zsh #optional for ZSH
$> zsh
#pick option #2, to setup.

# install Z plugin
$> curl https://raw.githubusercontent.com/agkozak/zsh-z/master/zsh-z.plugin.zsh > zsh-z.plugin.zsh
$> echo source ~/zsh-z.plugin.zsh >> .zshrc
$> source ~/zsh-z.plugin.zsh

#set current user to use zsh as default
$> sudo chsh -s $(which zsh) $(whoami)

Setup apache.

### SETUP YOUR FQD - fully qualified domain
$> DOMAIN_NAME=example.com

Paste below carefully…

sudo mkdir -p /var/www/$DOMAIN_NAME/public
cd /var/www/bfcm_monitoring
sudo chown -R $(whoami):www-data .


sudo tee /etc/apache2/sites-available/$DOMAIN_NAME.conf << END
<VirtualHost *:80>
    ServerName $DOMAIN_NAME
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/$DOMAIN_NAME/public
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Protocols h2 http/1.1

	<Directory /var/www/$DOMAIN_NAME/public>
		AllowOverride All
		Order Allow,Deny
		Allow from All
		DirectoryIndex index.php
	</Directory>
</VirtualHost>
END

sudo su
a2dissite 000-default
a2ensite $DOMAIN_NAME.conf 
a2dismod mpm_prefork
a2dismod php8.1
a2enmod mpm_event
a2enmod http2
a2enmod proxy
a2enmod proxy_fcgi
a2enconf php8.1-fpm
a2enmod rewrite
systemctl restart apache2

Probably want to ensure that your DNS settings are working. Run certbot, or put in your SSL certs manually.

other tidbits of script

###
### WARNING, this command can be dangerous.
### REVIEW initial crontab -l first, and only if you know for suer
### run the command below, and will populate.
### Handy cron stuff... INITIAL install only... REVIEW
###
echo '@daily apt update
@daily apt autoremove -y' | sudo crontab




###
### MySQL support for php
###
apt install php8.1-mysql


###
### Postgresl SQL support for php
###

apt install php8.1-pgsql
sudo -i -u postgres
createuser --interactive


### Postgresql itself
apt install postgresql postgresql-contrib
sudo systemctl start postgresql.service


####

Leave a Reply

Your email address will not be published. Required fields are marked *