7.3 KiB
Installation
This is an example of installation of the project on a virtual private server. I has been installed on a OVH VPS, the smallest one, its specifications are:
- 1 vCore
- 2 Go RAM
- 20 Go SSD SATA
- 100 Mbit/s unlimited
- Ubuntu 22.04 LTS
Of course any hoster and servers type can be used. Small modifications may be required depending on the used operating system. But as the installation process is quite generic, ony small changes should be required to fit your operating system needs.
Some links are provided for reference. Of course you are free to install the way you want the various required component it's just a basic working example that can be adapted.
I havent's put sudo command, it depends on wheter you run an administrator account or not. If not, you will have to prefix some commands with sudo.
Server update (source):
First we must update the base packages of the server:
apt update && sudo apt upgrade -y
apt-get install linux-headers-generic make
snap install nvim --classic
([ -f /var/run/reboot-required ] && sudo reboot -f)
PHP Installation
apt install php php-cli php-common php-mbstring php-xmlrpc php-soap php-gd php-xml php-intl php-mysql php-cli php-zip php-curl php-apcu php-redis -y
Verify the cli:
php --version
We should have the following output:
PHP 8.1.2-1ubuntu2.11 (cli) (built: Feb 22 2023 22:56:18) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.11, Copyright (c), by Zend Technologies
Here the defautl PHP version is used but it is better to use the ondrej/php PPA
repository to have the last minor PHP version.
Apache installation (source)
apt install apache2
systemctl start apache2
systemctl enable apache2
service apache2 status
It should display (green ●):
● apache2.service - The Apache HTTP Server
And we should see the default Apache page when accessing the server with HTTP:
(eg: http://vps-9cd99999.vps.ovh.net)
Generate a SSH key (source)
This section is only needed if you want to fetch the project from a private repository. You may also not need this depending of your deployment process.
ssh-keygen -t ed25519 -C "ubuntu@vps-6cd61302"
eval `ssh-agent -s`
ssh-add
Cloning the project
Git is already installed on this distribution. You must install it if it isn't available.
cd /var/www
git clone git@github.com:ApesHDF/EBS.git
Composer (source)
Follow the instructions on https://getcomposer.org/download/.
Then should have composer available
composer --version
Which gives:
Composer version 2.5.5 2023-03-21 11:50:05
Install the project dependencies:
cd /var/www/plateformcoop-ebs
composer install --ignore-platform-req=php
The --ignore-platform- options is required if you have a PHP version below 8.1.11.
Redis installation
apt-get install redis
Meilisearch cloud service
You can install a Meilsearch local instance but you can also use the cloud free service. It allows to have 100k documents and 10k search by month. It works well for testing purpose. Then can you always install a local Meilisearch instance when you reached the free tier threshold.
Once you cloud instance is created, get the instance URL and the password.
You have to use them for the MEILISEARCH_URL and MEILISEARCH_API_KEY variables
(check below).
Postgres 14 installation (source)
apt install vim curl wget gpg gnupg2 software-properties-common apt-transport-https lsb-release ca-certificates
apt install postgresql-14 postgresql-client
systemctl status postgresql@14-main.service
sudo -u postgres psql -c "SELECT version();"
Create the database
sudo -u postgres psql
create database app;
create user app with encrypted password '!ChangeMe!';
grant all privileges on database app to app;
Create the tables and load the initial fixtures
bin/console doctrine:schema:create --env=prod
bin/console doctrine:migrations:migrate --env=prod --no-interaction
bin/console messenger:setup-transports --env=prod
bin/console hautelook:fixtures:load --no-interaction -vv --no-bundles --env=prod
Apache configuration
Here is a simple vhost:
nvim /etc/apache2/sites-available/000-default.conf
And put:
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /var/www/plateformcoop-ebs/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/plateformcoop-ebs/public>
AllowOverride All
Require all granted
FallbackResource /index.php
</Directory>
</VirtualHost>
Of course you should install a SSL certificate later with letsencrypt for example.
Node and Yarn installation
Here are some resources:
- https://www.howtoforge.com/how-to-install-yarn-on-ubuntu-22-04/
- https://linuxize.com/post/how-to-install-node-js-on-ubuntu-22-04/
- https://www.digitalocean.com/community/tutorials/how-to-install-and-use-the-yarn-package-manager-for-node-js
We must have at least Node 14 and Yarn 1.22
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
sudo apt install nvm
Close and reopen the session so nvm is available:
nvm install 14
apt install npm
npm install -g yarn
Then run:
cd /var/www/plateformcoop-ebs
yarn install
yarn build
Files
Be careful that is you run the commands as root some files may not have the correct rights. The following directory should be owned by the web server user:
chown -R /var/www/plateformcoop-ebs/public
chown -R /var/www/plateformcoop-ebs/var
Parameters
You can create a .env.local file containing:
APP_ENV=prod
APP_DEBUG=0
APP_SECRET=xxxxxxx
MEILISEARCH_URL=https://ms-xxxxxxxx-3263.lon.meilisearch.io
MEILISEARCH_API_KEY=xxxxxxx
PAYUM_APIKEY=test_FRxxxxxx
REDIS_URL=redis://localhost:6379
DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=14&charset=utf8"
MAILER_DSN=smtp://mailer:1025
SMS_DSN=null://null
Change the Meilisearch parameters you received before. With this setup, mails are sent with a local SMTP server and SMS are disabled.
Then you can run the Meilisearch index command:
sudo bin/console app:index-products --env=prod
That's it, access the root URL of your server, you should see the home page.
If you have a 500 error, you can change APP_DEBUG to 1 to see the errors.
More information about the parameters in this file.
Conclusion
This is a working basic installation process. Of course, it it better to use a deployment tool like EasyDeploy, Capistrano or other ones.
