In a previous post I went over installing FreeBSD, in this post I will install a "FAMP" stack (FreeBSD, Apache, MySQL and PHP).
First we will install Apache:
pkg install apache24 sysrc apache24_enable="YES" service apache24 start service apache24 status
When we browse to our webpage, we will see a large "It works!".
Now Apache is installed, we can install PHP. As of writing, the latest php version is 8.2 (packages are
php82), so I will be installing this
pkg install php82 php82-mysqli mod_php82 cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini rehash
next, create a new file
/usr/local/etc/apache24/modules.d/001_mod-php.conf and add the following content:
<IfModule dir_module> DirectoryIndex index.php index.html <FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch> </IfModule>
now we can restart apache
Now PHP is installed and added to apache, we can test it by removing the default index document, and replacing it with a php file printing the php information.
/usr/local/www/apache24/data/index.html and create a new file
/usr/local/www/apache24/data/index.php with the following content:
<?php phpinfo(); ?>
If you visit the server's IP address again, you should see information about the PHP version that is installed.
First we need to install the mysql server:
pkg install mysql80-server sysrc mysql_enable="YES" service mysql-server start
Next, we have to run
mysql_secure_installation to do the initial configuration of mysql.
- Set a password (a secure one!)
- Remove anonymous users: yes
- Disallow root login remotely: yes
- Remove test database and access to it: yes
- reload privilege tablees: yes
Now we have all the basics installed
HTTPS and virtualhosts
Because, even when testing, it is a good idea to set up HTTPS, we will add this first. Open
/usr/local/etc/apache24/httpd.conf and uncomment the line that loads
LoadModule ssl_module libexec/apache24/mod_ssl.so
Next, uncomment the line that includes the
Next, we need to add a self signed certificate
openssl req -x509 -nodes -newkey rsa:2048 -keyout /usr/local/etc/apache24/server.key -out /usr/local/etc/apache24/server.crt -days 365
tip: If you are deploying a production website, you should use Let's Encrypt.
Testing our setup by installing Wordpress
cd /usr/local/www/apache24/data rm index.html wget https://wordpress.org/latest.tar.gz tar xzf latest.tar.gz mv wordpress/* . chown -R www:www *
Next, create a mysql database (be sure to change the password to something else):
mysql -u root -p create database wordpress; create user 'wordpress'@'localhost' identified by 'password'; grant all privileges on wordpress.* to 'wordpress'@'localhost'; flush privileges;
Next visit the website and follow the steps of the installer to set up wordpress!