$ sudo apt install nginx$ sudo systemctl start nginx$ sudo systemctl status nginx$ lsb_release -a$ sudo wget https://nginx.org/keys/nginx_signing.key$ sudo apt-key add nginx_signing.key$ sudo vi /etc/apt/sources.listadd these lines:
deb https://nginx.org/packages/mainline/debian/ <CODENAME> nginxdeb-src https://nginx.org/packages/mainline/debian/ <CODENAME> nginx$ sudo apt update$ sudo apt install nginx$ sudo systemctl start nginx$ sudo systemctl status nginxinclude /etc/nginx/sites-enabled/*;To test, go to http://localhost
# apt install php-fpm php-mysql...user = www-datagroup = www-data...listen.owner = www-datalisten.group = www-data...$ sudo apt install mariadb-serverThe MariaDB service will start automatically. You can verify it by typing:
$ sudo systemctl status mariadbSet MySQL/MariaDB root user password:
$ sudo mysql_secure_installationEnter current password for root (enter for none): ## Press EnterSet root password? [Y/n]## Press EnterNew password:## Enter passwordRe-enter new password: ## Re-enter passwordRemove anonymous users? [Y/n]## Press EnterDisallow root login remotely? [Y/n]## Press EnterRemove test database and access to it? [Y/n]## Press EnterReload privilege tables now? [Y/n]## Press Enter$ sudo mkdir -p /var/www/example.com/html$ chown -R $USER:$USER /var/www/$domain/public_html$ chmod -R 755 /var/www$ sudo nano /etc/nginx/conf.d/example.com.conf :
server { listen 80; listen [::]:80; root /var/www/example.com/html; index index.php index.nginx-debian.html; server_name example.com; location / { try_files $uri $uri/ /index.php?$args; } # pass PHP scripts to FastCGI server location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; }}# nginx -t<?phpphpinfo();?>$ sudo echo "192.168.1.56 example.com" >> /etc/hosts$ sudo systemctl start nginx php7.2-fpmIf the page does not load, or you have an error, find out with this command:
$ tail -10 /var/log/nginx/error.logIf the php page loads, congratulations ! PHP is working. Now you can delete the file index.php.
$ cd /tmp$ wget https://wordpress.org/latest.tar.gz$ tar xzvf latest.tar.gz$ cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.phpNow, we can copy the entire contents of the directory into our document root. We are using the -a flag to make sure our permissions are maintained. We are using a dot at the end of our source directory to indicate that everything within the directory should be copied, including hidden files (like the .htaccess file we created):
$ sudo cp -a /tmp/wordpress/. /var/www/example.com/html $ sudo chown -R www-data:www-data /var/www/example.com/htmlNext, we will set the setgid bit on each of the directories within the document root. This causes new files created within these directories to inherit the group of the parent directory (which we just set to www-data) instead of the creating user's primary group. This just makes sure that whenever we create a file in the directory on the command line, the web server will still have group ownership over it.
We can set the setgid bit on every directory in our WordPress installation by typing:
$ sudo find /var/www/example.com/html -type d -exec chmod g+s {} \;There are a few other fine-grained permissions we'll adjust. First, we'll give group write access to the wp-content directory so that the web interface can make theme and plugin changes:
$ sudo chmod g+w /var/www/example.com/html/wp-contentAs part of this process, we will give the web server write access to all of the content in these two directories:
$ sudo chmod -R g+w /var/www/example.com/html/wp-content/themes$ sudo chmod -R g+w /var/www/example.com/html/wp-content/pluginsThis should be a reasonable permissions set to start with. Some plugins and procedures might require additional tweaks.
$ sudo nano /var/www/example.com/html/wp-config.phpedit:
. . .define('DB_NAME', 'example_database');/** MySQL database username */define('DB_USER', 'wpuser');/** MySQL database password */define('DB_PASSWORD', 'mypassword');. . .and append:
define('FS_METHOD', 'direct');The above line will allow us to install Plugins and Themes in Wordpress.
Copy the generated values and replace the dummy values at /var/www/html/example.com/wp-config.php
$ sudo mariadb -u root -pMariaDB> CREATE DATABASE example;MariaDB> GRANT ALL PRIVILEGES ON example.* TO "wpuser"@"localhost" IDENTIFIED BY "mypassword";MariaDB> FLUSH PRIVILEGES;MariaDB> EXITIf you need to update Wordpress, follow these instructions:
$ sudo chown -R www-data /var/www/example.com/public_htmlNow, go back the WordPress administration panel and apply the update.
When you are finished, lock the permissions down again for security:
$ sudo chown -R cheo /var/www/example.com/public_htmlIn order to install Plugins and Themes, you must edit wp-config file, if you haven't already:
sudo nano /var/www/example.com/html/wp-config.phpAppend define('FS_METHOD', 'direct');
and save. Then restart nginx:
sudo systemctl restart nginxlocation /example.com/ { try_files $uri $uri/example.com/ /example.com/index.php?$args; }sudo systemctl restart nginxAppearance -> Customize -> Top Bar -> General -> Enable Top Bar (uncheck)
Settings -> Reading -> Your homepage displays -> A static page -> Homepage: <select your page>
When initially creating the website, it is recommended to turn off Search Engine indexation:
Settings -> Reading -> Search Engine Visibility -> Discourage search engines from indexing this site
Content to put before each post in the feed: %%POSTLINK%%
Content to put after each post in the feed: <p>Original article at <a href="https://mydomain.com/" rel="nofollow">My Site</a></p>
Clickeable Component -> Content -> Link -> #target_anchor
Target anchor component -> Advanced -> CSS ID -> target_anchor (without hash symbol)
Appearance -> Menus -> Menu Structure -> Affected Page -> Disable link
Note: For the Astra Them and Plugins to work, php-xml extension must be installed in the server.
Themes -> Add New -> search for 'Astra' -> Install Now -> Activate
Plugins -> Add New -> search for 'Astra Starter Sites' -> Install Now
Appearance -> Astra Sites -> Elementor -> select Site -> Install Plugins -> Import This Site
If you don't want LEMP to be enabled on start up, you can disable it:
sudo systemctl disable nginx php7.2-fpm mariadbYou can create the following bash script to manage the LEMP services:
#!/bin/bashif [ "$1" == "" ]then systemctl start nginx systemctl start mariadb systemctl start php7.2-fpmelif [ "$1" == "-s" ]then systemctl stop nginx systemctl stop mariadb systemctl stop php7.2-fpmelif [ "$1" == "-r" ]then systemctl restart nginxelif [ "$1" == "-status" ]then echo "nginx:" systemctl status nginx | grep "Active" echo "mariadb:" systemctl status mariadb | grep "Active" echo "php-fpm:" systemctl status php7.2-fpm | grep "Active"elif [ "$1" == "--help" ] || [ "$1" == "-h" ]then echo "Usage:" echo "'sudo ./server' will launch nginx, mariadb and php-fpm" echo "'sudo ./server -s' will stop nginx, mariadb and php-fpm" echo "'sudo ./server -r' will restart nginx" echo "'./server -status' will show the status of nginx, mariadb and php-fpm"else echo "Wrong argument supplied"fichmod +x file_name