https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-20-04
sudo apt update
sudo apt install apache2
--------no need to do this----------
sudo ufw status
sudo ufw app list
sudo ufw allow 'Apache Full'
press 'y' and enter continue'
sudo ufw enable
-------------------------------
check: http://server ip
-------------------------------------------
install mysql
$ sudo apt install mysql-server
switch its authentication method from auth_socket to mysql_native_password
sudo mysql
SELECT user,authentication_string,plugin,host FROM mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'fabrica@mysupply';
FLUSH PRIVILEGES;
TEST
SELECT user,authentication_string,plugin,host FROM mysql.user;
exit
$ sudo mysql_secure_installation
--VALIDATE PASSWORD PLUGIN.-NO
REST- YES
---------------------------------------------------
Install PHP8.1
---------------------------------------------------------------------------------------------------
Add PPA for PHP 8.1
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt install php8.1
sudo apt install php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl -y
----------------------------------------------------------------------------------------------
INSTALL MONGODB in ubuntu 20, php8.1
https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/?_ga=2.242670018.1950484347.1673427386-451534989.1673427383
sudo apt remove mongodb-org*
sudo apt autoremove mongodb-org*
sudo apt purge mongodb-org*
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl start mongod
sudo systemctl daemon-reload
sudo systemctl status mongod
sudo apt-get install php8.1-mongodb
how to work with mongodb
sudo systemctl start mongod
mongosh
show databases;
use testing_api
db.dropDatabase()
//db.logs.remove({});//deprecated
show collections
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cd /etc/apache2/sites-available
Step 2 — Modify the new api.domain.work.conf file
-
<VirtualHost *:80>
ServerName api.domain.work
ServerAdmin admin@domain.work
DocumentRoot /var/www/html/api/public
<Directory /var/www/html/api>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =api.domain.work
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
--------------------------
<VirtualHost *:80>
ServerName domain.work
ServerAdmin admin@domain.work
DocumentRoot /var/www/html/user
<Directory /var/www/html/user>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =domain.work
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
-------------------------------------------------------------------------------------
<VirtualHost *:80>
ServerName dashboard.domain.com
ServerAdmin admin@domain.com
DocumentRoot /var/www/html/dashboard.domain.com
<Directory /var/www/html/dashboard.domain.com>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =dashboard.domain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
---------------------------------------------------------------------------------------
set up domain name in godaddy
set up ssl using certbot:
$ sudo snap install --classic certbot
$ sudo certbot --apache -d domain.solutions -d www.domain.solutions
dashboard.medicalfactory.org
$ sudo certbot --apache -d supplier.domain.org -d supplier.domain.org
$ systemctl restart apache2
mongo
sudo a2ensite api.domain.com.conf
sudo apachectl configtest
-------------------------------------------------------
-to enable the site
sudo a2ensite <directoryname>
-to test for syntax errors
sudo apachectl configtest
-syntax ok
-restart apache services
sudo systemctl restart apache2
---------------------------------------------------------------------
install swap space
https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-20-04#step-6-tuning-your-swap-settings
sudo swapon --show
free -h
df -h
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
ls -lh /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon --show
free -h
sudo cp /etc/fstab /etc/fstab.bak
sudo nano /etc/fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
cat /proc/sys/vm/swappiness
sudo sysctl vm.swappiness=10
sudo nano/etc/sysctl.conf
at the bottom add vm.swappiness=10
vm.vfs_cache_pressure=50
sudo sysctl vm.vfs_cache_pressure=50
cat /proc/sys/vm/vfs_cache_pressure
-------------------------------------------------------------------------
download tar.gz newapi backend files from gitlab
take backup of humhum.work storage and DB and upload to server
copy .env file
install composer ---https://getcomposer.org/download/
Steps to install a composer:
1. sudo apt install wget php-cli php-zip unzip
2. php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
1. php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
2. HASH="$(wget -q -O - https://composer.github.io/installer.sig)"
3. php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Out put: Installer verified
4. sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
Out put: All settings correct for using Composer
Downloading...
Composer (version 2.0.14) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer
--------------------------------------------------------------------------
sudo api.domain.com
cp .env.prod .env
copy public/.htaccess
copy storage
sudo chmod 777 -R storage
sudo chmod 777 -R storage
sudo ln -s /var/www/html/api.medicalfactory.org/storage/app/public /var/www/html/api.medicalfactory.org/public/storage
sudo ln -s /var/www/html/api.sqdesignz.com/storage/app/public /var/www/html/api.sqdesignz.com/public/storage
sudo chown www-data:www-data -R storage
composer install
----showing php extension errors------
sudo a2enmod php8.1
systemctl restart apache2
$ sudo update-alternatives --set php /usr/bin/php8.1
-----------------------------------------
mysql -u root -p;
fabrica@mysupply
create database api;
/var/www/html/newapi/database/seeders/DatabaseSeeder.php , uncomment all seeders
please comment this line
Permission::truncate();
php artisan migrate --seed
---------------------------------------------------------------------------------
sudo nano public/.htaccess
cron job automation documentation
----------------------------------------------------------------------------------------
Front end: supplier portal angularjs
# Build Instructions (node version 16)
sudo rm -rf node
sudo npm install
- change `src/environments/environment.prod.ts`
```json
{
"baseURL": "https://{{api_domain}}/api/v1/",
"baseStorage": "https://{{api_domain}}/storage/",
"baseHREF": "{{base for front domain}}"
}
"ng build -c production --prod --base-href https://supplier.domain.work"
ng build -c production --configuration production --base-href https://supplier.domain.com
ng build -c production --configuration production --base-href https://supplier.domain.com
ng build -c production --configuration production --base-href https://supplier.domain.org
run `npm run build {{base_href for front domain}}`
- upload `dist` folder content to server
--------------------------------------------------
copy to server
sudo nano .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
# -- REDIRECTION to https (optional):
# If you need this, uncomment the next two commands
# RewriteCond %{HTTPS} !on
# RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
# --
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*) index.html [NC,L]
</IfModule>
-------------------------------------------------------------
Front end: admin portal angularjs
# Build Instructions (node version 16)
sudo rm -rf node
sudo npm install
- change `src/environments/environment.prod.ts`
```json
{
"baseURL": "https://{{api_domain}}/api/v1/",
"baseStorage": "https://{{api_domain}}/storage/",
"baseHREF": "{{base for front domain}}"
}
export const environment = {
production: true,
baseURL: 'https://api.domain.com/api/v1/',
// baseURL: 'https://domain.work/newapi/public/api/v1/',
baseStorage: 'https://api.domain.com/storage/',
baseHREF: '/humhum/',
firebase: {
apiKey: 'AIzaSyBvDfgkv2VnrIMbrT9oJYgtlL6XGthURdY',
projectId: 'humhum-d8850',
messagingSenderId: '569896873041',
appId: '1:569896873041:web:9551d54e2e7056fcacdc70',
vapidKey:
'BCg19OadFV9lZNChEu1nhKI9zW2HRqiVls8U_4UVQyRLz5rVf3-2qzUSBWdTB7U0nqa-O7lho69FM8VdRsQW970',
},
defaultPerPage: 20,
};
"ng build -c production --prod --base-href https://supplier.domain.work"
ng build -c production --configuration production --base-href https://dashboard.domain.com
ng build -c production --configuration production --base-href https://dashboard.domain.org
run `npm run build {{base_href for front domain}}`
- upload `dist` folder content to server
---------------------------------------------------------------------------------------------------------------
Front end: admin portal vuejs
# Build Instructions (node version 16)
sudo rm -rf node_modules/
sudo npm install
npm run build
- change .env
-find and remove humhum-user/
--------------------------------------------------
copy to server
sudo nano .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
# -- REDIRECTION to https (optional):
# If you need this, uncomment the next two commands
# RewriteCond %{HTTPS} !on
# RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
# --
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*) index.html [NC,L]
</IfModule>
-------------------------------------------------------------
Solution for all npm ERR! code EINTEGRITY errors 🙏
$ cd <project_directory>
$ rm -rf package-lock.json npm-shrinkwrap.json node_modules
$ npm cache clean --force
$ npm cache verify
$ npm install
---------------------------------------------------------------
FIXING MYSQL ISSUES:
show columns from tokens;
show column_name from table_name;
Admin login , tokens table error:
ALTER TABLE tokens MODIFY client_id bigint UNSIGNED;
ALTER TABLE tokens MODIFY user_id bigint UNSIGNED;
Admin login , after login popup error:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
-------------------------------------------------------------------------
git pull then run
php artisan migrate:fresh --seed
then
php artisan permission:cache-reset
------------------------------------------------------------------------------