ITСooky

IT-рецепты съедобные и не очень!

Настройка, переезд, тестирование нового VPS!

дата 30.04.2016

Тут увидел у своего хостера HC.RU новый тариф на 50 рублей дороже но на 30Gb больше — прикупил, перенес, протестировал!
Test_Page_for_the_Nginx_HTTP_Server_on_EPEL_-_2016-04-23_14.52.28
Начну сразу с тестирования, VPS тестировался без веб нагрузки, Orange PI и типичный Desktop представлены для сравнения!

Тестирование меня смутило, старый тариф показывал невозможные фантастические цифры в тестах HDD, но приэтом ужасно тормозил как это теперь видно на фоне нового тарифа. Вот результаты:
vps_test

Нам надо установить бэнчмарк
yum install sysbench
тест CPU 1 запускатся коммандой
sysbench --test=cpu --cpu-max-prime=20000 run
Далее увеличиваем колличество потоков
sysbench --test=cpu --cpu-max-prime=20000 --num-threads=2 run
В ответе главный показатель xecution time (avg/stddev) меньше лучше

Для теста дисков надо создать файлы для теста
sysbench --test=fileio --file-total-size=10G prepare
Для VPS размер ставил 10G, для Опельсинки 8G, для Desktopa 100G — говорят надо ставить гораздо больше чем оперативная память
Запускаем тест
sysbench --test=fileio --file-total-size=10G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run > test.io
Результат пишим в файл а то, особенно на VPS результата можно не дождаться, по тайм ауту.

И тест MYSQL
Создаем базу
mysql -u root -p -e "create database sbtest"
Наваливаем в неё строки
sysbench --test=oltp --db-driver=mysql --oltp-table-size=1000000 --mysql-db=sbtest --mysql-user=root --mysql-password=rootpass prepare
И запускаем комманду, смотрим на показатель transaction больше лучше
sysbench --test=oltp --db-driver=mysql --oltp-table-size=1000000 --mysql-db=sbtest --mysql-user=root --mysql-password=rootpass --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=1 run
Ну и уведичваю —num-threads= до 8!

Выводы:

— В тесте CPU явно видна польза от количества ядер
— Xeon дорогой не потому что мощный, а потому что серверный-функционально его можно в кластеры объединять и тп, но один на один с i5 он может и проиграть и сильно!
— Скорость на тарифе SSD-3 меньше чем у HDD, про VPS-3 молчу там какакое-то шаманство!

Прогнал этот HDD тест на настоящем SSD(хоть и кастрированном) SunDisk z400s 128Gb конфигурация такая же как и в таблице Desktop но OS Ubuntu 16.04 64 bit, тестовый файл размер 80Gb — результат 17.362Mb/sec вот это похоже на настоящий SSD

— Mysql обидно есть прирост только при увеличение до двух потоков, потом вообще не заметно, только хуже, почему так то…

Настраиваем
Выбрал CentOS, так как FreeBSD не было! Без всяких гламурных панелек, кто их берет интересно?

Первым делом обновляемся
yum update

ставим редактор vi (ну мне надо, привык)
yum install vi

Далее обычно root не заходит прямо по ssh, сначала заходят юзером и дают ему super права. И этого юзера сильно ограничивают в коммандах ставят ему обрезанный shell
useradd user
passwd user

Ставим тот самый шелл
yum install lshell

по умолчанию настройки устраивают я только выключил логи исправив
vi /etc/lshell.conf
сторку на

loglevel        : 0

и разрешаем только su

[default] 
##  a list of the allowed commands or 'all' to allow all commands in user's PATH 
allowed         : ['su'] 

меняем шелл юзеру на новый
chsh -s /usr/bin/lshell user

даем право этому юзеру заходить по ssh
vi /etc/ssh/sshd_config

добавляем строку

AllowUsers user

и запрешаем заходить рутом

#PermitRootLogin no

Перезапускаем SSH
/etc/init.d/sshd restart

Идем далее, всегда надо от чего то отталкиватся, берем первую ссылку в интернете www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-centos-6 и начинаем настраивать… и хотя фамилия автора скорее всего выдумана Этель Свердлов(Яков Михайлович?) установочный скелет работает, а дальше надо по своим знаниям уже добавить!

Устанавливаем Mysql

нам нужна Mysql 5.5 устанавливать его надо из осбого места
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum --enablerepo=remi install mysql mysql-server

перестартуем MYSQL
/etc/init.d/mysqld restart

меняем рут пароль сделав
/usr/bin/mysqladmin -u root password new-password

есть еще установщик запускаем его и вводим там уже пароль от Mysql который только что сделали, отвечаем по своим нуждам — я закрыл все снаружи и убрал анонимного пользоватлея и тестовый доступ
/usr/bin/mysql_secure_installation

перегружаем
/etc/init.d/mysqld restart

Ставим nginx

yum install nginx
/etc/init.d/nginx start

Конфиг дефолтный, елинственно что выключил логи
меняем
vi /etc/nginx/nginx.conf
доводим до вида

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user              nginx;
worker_processes  2;

error_log  /dev/null crit;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  off;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    # Load config files from the /etc/nginx/conf.d directory
    # The default server is in conf.d/default.conf
    include /etc/nginx/conf.d/*.conf;

}

Устанавливаем php-fpm
yum --enablerepo=remi install php-fpm php-mysql

Все советуют поставить в
vi /etc/php.ini
на

cgi.fix_pathinfo=0

Настраиваем

vi /etc/nginx/nginx.conf

Меняем worker processes цифра должна соответвовать штукам ядра количеств

Доводим до такого вида файл
vi /etc/nginx/conf.d/default.conf
вот до такого

# 
# The default server 
# 
server { 
    listen       80 default_server; 
    server_name 111.11.11.111; 

    #charset koi8-r; 

    #access_log  logs/host.access.log  main; 

    # Load configuration files for the default server block. 
    include /etc/nginx/default.d/*.conf; 

    location / { 
        root   /usr/share/nginx/html; 
        index  index.php index.html index.htm; 
    } 

    error_page  404              /404.html; 
    location = /404.html { 
        root   /usr/share/nginx/html; 
    } 

    # redirect server error pages to the static page /50x.html 
    # 
    error_page   500 502 503 504  /50x.html; 
    location = /50x.html { 
        root   /usr/share/nginx/html; 
    } 

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80 
    # 
    #location ~ \.php$ { 
    #    proxy_pass   http://127.0.0.1; 
    #}
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 
    
    location ~ \.php$ { 
        root           /usr/share/nginx/html; 
        fastcgi_pass   unix:/tmp/php.sock; 
        fastcgi_index  index.php; 
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name; 
        include        fastcgi_params; 
    } 

    # deny access to .htaccess files, if Apache's document root 
    # concurs with nginx's one 
    # 
    location ~ /\.ht { 
        deny  all; 
    } 
} 

в servername пока пишим свой IP

/etc/init.d/nginx restart

в
vi /etc/php-fpm.d/www.conf
меняем на, а то там apache ха

user = nginx
group = nginx

и меняем

listen.owner = nginx 
listen.group = nginx 
listen.mode = 0660 

и меняем

listen = /tmp/php.sock

и

pm = static 
pm.max_children = 5 
pm.start_servers = 1 
pm.min_spare_servers = 1 
pm.max_spare_servers = 2 

также делаем что само не сделалось
mkdir /var/lib/php/session
chown -R nginx: /var/lib/php/session

Рестартуем
/etc/init.d/php-fpm restart

Делаем php страницу
vi /usr/share/nginx/html/info.php
Добавляем

<?php
phpinfo();
?>

Ура заработало

Делаем чтобы грузилось на загрузке
/sbin/chkconfig --levels 235 mysqld on
/sbin/chkconfig --levels 235 nginx on
/sbin/chkconfig --levels 235 php-fpm on

и ребутимся
/sbin/reboot -h now
Заработало

На этом Эдель заканчивается, Эдель спасибо… реально помогла хотя по чужим инструкция никогда слово в слово не работает, но на то он и Linux всгда разный в своих ответвления и временных ипостасиях.

Пошли дальше

Можете меня лошить, но я буду ставить Полуночного полковника
yum install mc
делаю папку для сайтов
mkdir /usr/www
mkdir /usr/www/itcooky.com

Делаем файл настроек сайта, пока все по умолчанию потом уже во время работы если вилы встанут буду грабли искать
vi /etc/nginx/conf.d/itcookycom.conf
Вставляем

server { 
    listen       80; 
    server_name www.itcooky.com itcooky.com; 

    #charset koi8-r; 

    #access_log  logs/host.access.log  main; 

    location / { 
        root   /usr/www/itcooky.com; 
        index  index.php index.html index.htm; 
    } 

    error_page  404              /404.html; 
    location = /404.html { 
        root   /usr/www/itcooky.com; 
    } 

    # redirect server error pages to the static page /50x.html 
    # 
    error_page   500 502 503 504  /50x.html; 
    location = /50x.html { 
        root   /usr/www/itcooky.com; 
    } 

  
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 
    
    location ~ \.php$ { 
        root           /usr/www/itcooky.com; 
        fastcgi_pass   unix:/tmp/php.sock; 
        fastcgi_index  index.php; 
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name; 
        include        fastcgi_params; 
    } 

    # deny access to .htaccess files, if Apache's document root 
    # concurs with nginx's one 
    # 
    location ~ /\.ht { 
        deny  all; 
    } 
} 

Теперь надо сходить на старый сайт и скопировать от туда базу MYSQL и файлы сайта на WordPress
На старом хостинге в папке с папкой сайта делаем
tar -cvf itc.tar ./itcooky.com
и делаем дамп базы
mysqldump --user=root --password=ROOTPASSWORD --host=localhost hearbasename > ./wpita.sql

Тащю все это в папку сайта чтобы было доступно по http
mv ./wpita.sql ./itcooky.com/
mv ./itc.tar ./itcooky.com/

На новом хостинге тащим
wget http://itcooky.com/wpita.sql
wget http://itcooky.com/itc.tar

На новом хостинге распаковываем архив
tar -xvf itc.tar
На счет базы, данные имя пользователь пароль лежат в файле wp-config.php для WordPress берем эт данные для новой базы на новом сервере

А поставимка phpmyadmin
yum install phpmyadmin
идем в папку сайта который открывается по ip, потому что это единсвенное место которое пока отзывается
cd /usr/share/nginx/html
ln -s /usr/share/phpMyAdmin phpMyAdmin

в
vi /etc/phpMyAdmin/config.inc.php
надо исправить строку с extentions там mysqli а надо mysql
и blowfish_secret я писал но оно все равно просит

Заходим в вебинтерфейс phpMyAdmin и добавляем юзера и базу ему сразу и пароль старый
Потом
mysql -u root -pROOTPASSWORD wpit < wpita.sql
Еще все таки надо дать права nginx на файлы сайты, а то php не будет работать
chown -R nginx:nginx /usr/www/

Вот и все! Что удивительно почти все по умолчанию, MYSQL вообще дефолтный, старый фарш настроек my.cnf со старого хостинга не перетаскивал - и летает пока всё!!!