Сервер Ubuntu 18.04.5
Добавить юзера, которого будем использовать вместо root
adduser suser
usermod -aG sudo suser
Узнаем есть ли в списке доступных приложений OpenSSH
ufw status
Добавим OpenSSH в разрешённые для фаервола ufw и активируем
ufw allow OpenSSH
ufw enable
Просмотреть результат
ufw status
Перенесём (скопируем) ключи в папку обычного пользователя и войдём
rsync --archive --chown=suser:suser ~/.ssh /home/suser
exit
ssh suser@server_ip
sudo apt install mc nano zip unzip
Установим nginx и разрешим HTTP (80 port)
sudo apt update
sudo apt install nginx
sudo ufw allow 'Nginx HTTP'
Проверим
http://server_ip/
Установим самую новую версию
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install -y php8.0 php8.0-common php8.0-cli php8.0-fpm php8.0-mysql php8.0-mbstring php8.0-curl php8.0-gd php8.0-imagick php8.0-xml php8.0-xmlrpc php8.0-soap php8.0-intl php8.0-opcache php8.0-readline php8.0-zip
sudo apt install -y php7.4 php7.4-common php7.4-cli php7.4-fpm php7.4-mysql php7.4-mbstring php7.4-curl php7.4-gd php7.4-imagick php7.4-xml php7.4-xmlrpc php7.4-soap php7.4-intl php7.4-opcache php7.4-readline php7.4-zip php7.4-json
Файл настройки /etc/nginx/sites-available/your-site.com
server {
listen 80;
server_name your-site.com;
root /var/www/your-site/html/;
index index.html index.htm index.php;
# turn on gzip
gzip on;
gzip_disable "msie6";
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
## deny hidden files
#location ~ /\. {
# deny all;
#}
#location ~* /(?:uploads|files)/.*\.php$ {
# deny all; # disallow downloaded scripts
#}
#location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
# access_log off;
# log_not_found off;
# expires max; # stat cache
#}
location ~ ^/wp-json/ {
# if permalinks not enabled
rewrite ^/wp-json/(.*?)$ /?rest_route=/$1 last;
}
location / {
try_files $uri $uri/ /index.php?$args; # permalinks
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Седлать настройку виртуального сервера доступной
sudo ln -s /etc/nginx/sites-available/your-site.com /etc/nginx/sites-enabled/your-site.com
Проверим конфиг
sudo nginx -t
Перезапустим сервер
sudo systemctl restart nginx
Выполняем пункты разделов Установка и Настройка сервера со страницы MariaDB
Создаём дамп базы, например, локальной, и меняем домены с локального на внешний your-site.com (это же wordpres)
mysqldump -u username -p database_name > /local-path/data-dump.sql
sed 's/http:\/\/your-site.com/http:\/\/localhost/g' /local-path/data-dump.sql > /local-path/data-dump-sed.sql
Заливаем дамп базы на сервер
scp /local-path/data-dump-sed.sql suser@server_ip:/var/www/
Создаём базу и заливаем дамп в базу
mysql -u admin -p
MariaDB [(none)]> CREATE DATABASE wp_database;
MariaDB [(none)]> exit
mysql -u admin -p wp_database < /var/www/data-dump-sed.sql
Делаем архив, копируем на сервер и распаковываем
cd /var/www/
zip -r /var/www/your-site.com.zip your-site/html/
scp /var/www/your-site.com.zip suser@server_ip:/home/suser/
sudo unzip /home/suser/your-site.com.zip -d /var/www/your-site/html/
Добавляем ко всем файлам единственно верного пользователя
sudo chown -R www-data:www-data /var/www/your-site/html/
sudo find /var/www/your-site/htwp/ -type d -exec chmod 750 {} \;
sudo find /var/www/your-site/html/ -type f -exec chmod 640 {} \;
Установка
sudo apt install postfix
Выбрать из списка -Internet Site
Ввести имя своего домена -your-site.com
Поменять настройки можно в файле /etc/postfix/main.cf не забывая перегерузить сервер
sudo nano /etc/postfix/main.cf
sudo service postfix reload
Скачать wordpress consol wp-cli.phar с сайта https://wp-cli.org/
cd /var/www/wp/
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
Создаем функцию отправки письма в своей теме или в своем кастомном плагине
function myTemplate_sendMail() {
$emails = 'your@email.com';
$subject = 'Statistic';
$message = '<html><body><p> See attachments </p></body></html>';
$headers = ['Content-Type: text/html; charset=UTF-8'];
$statFile = '/var/www/wp/wp-content/attachments/2020-12-20-1220.csv'
wp_mail($emails, $subject, $message, $headers, [$statFile]);
}
Протестировать выполнение функции
runuser -u www-data -- php /var/www/wp-cli.phar --path='/var/www/your-site/html' eval 'myTemplate_sendMail();'
Установка Crone
sudo apt update
sudo apt install cron
# убедитесь, что cron настроен для работы в фоновом режиме
sudo systemctl enable cron
# Output
Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable cron
Настройка крона
crontab -u www-data -e
# запуск в 10 утра по времени сервера каждый день
0 10 * * * php /var/www/wp-cli.phar --path='/var/www/your-site/html' eval 'employa_plugin_sendStatMail();'