Тут увидел у своего хостера HC.RU новый тариф на 50 рублей дороже но на 30Gb больше — прикупил, перенес, протестировал!
Начну сразу с тестирования, VPS тестировался без веб нагрузки, Orange PI и типичный Desktop представлены для сравнения!
Тестирование меня смутило, старый тариф показывал невозможные фантастические цифры в тестах HDD, но приэтом ужасно тормозил как это теперь видно на фоне нового тарифа. Вот результаты:
Нам надо установить бэнчмарк
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
вот до такого, где 111.10.1.111 ваш IP
# # The default server # server { listen 111.10.1.111:80; server_name 111.10.1.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:nginx /var/lib/php/session
Рестартуем
/etc/init.d/php-fpm restart
Смотрим слушает ли nginx на нужном порту
netstat -tulpn | grep :80
Смотрим процессы, тут и php-fpm будет
ps aux | grep nginx
Делаем php страницу
vi /usr/share/nginx/html/info.php
Добавляем
<?php phpinfo(); ?>
Права на доступ к этому файлу и всем делаем
chmod -R 755 /usr/share/nginx/html/
ВАЖНО:А так же внимание очень важно
В CentOS есть система повышенной безопасноти SELinux на VPS оно отключено, а вот если ставить самому CentOS 6 minimal она по умолчанию включена.Если вам на сайте нужна папка куда надо писать, например в phpBB3 есть три папки для писания, туда просят поставить права 777. И их ставишь и ничего неработает, говорит нет прав — это немного сводит ума.
А надо исполнить вот еще что, для папки cache ну и для store и file
sudo chcon -t httpd_sys_rw_content_t -Rv /usr/share/nginx/html/forum/php/cache
sudo chcon -t httpd_sys_rw_content_t -Rv /usr/share/nginx/html/forum/php/files
sudo chcon -t httpd_sys_rw_content_t -Rv /usr/share/nginx/html/forum/php/store
Это сурпрец!!!
Переходим на
http://111.10.1.111/info.php
Ура заработало
ЕСЛИ НЕ ЗАРАБОТАЛО: У меня СentOS с настройками от хостера нестандратными. Если вы установили CentOS 6 minimal тон адо еще подправить iptables
Сюда
vi /etc/sysconfig/iptables
добавляем запись, ВАЖНО чтобы она была выше всех такихже записей-A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPTи перезапускаем его
service iptables restart
ЕСЛИ НАДО: Сразу обновим php до 7.2(по умолчанию ставит старую 5-ку) делается это хитро
yum install yum-utils
yum-config-manager --enable remi-php7.2
yum install php
Все есть семерка
Делаем чтобы грузилось на загрузке
/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
или
yum --enablerepo=remi 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…
Если ругается на session_start(): open(SESSION_FILE, O_RDWR) failed: делаем
chmod 777 /var/lib/php/session/
Потом заходим в mysql
mysql -u root -p
делаем юзера со старым имянем и паролем чи базу со старым названием, чтобы подстроится под те настройки чтобыли
CREATE DATABASE wpit;
GRANT ALL PRIVILEGES ON wpit.* TO 'wpit'@'localhost' IDENTIFIED BY 'pAs$VV0rd';
выходим
exit
делаем
mysql -u root -pROOTPASSWORD wpit < wpita.sql
Вот и все! Что удивительно почти все по умолчанию, MYSQL вообще дефолтный, старый фарш настроек my.cnf со старого хостинга не перетаскивал - и летает пока всё!!!
UPD SSL через Let’s Encrypt is a free, automated, and open Certificate Authority
Разочаровался в CloudFlare в бесплатном(читай доступном) варианте не рабочий сервис из-за Роскомпозора. Один IP на сотни сайтов, из них обычно один уже заблокирован в России, администрация CloudFlare нереагирует на обращения, сменить IP никак только за деньги... а вот от спамеров хорошо защищал, после отключения на форум сроазу прорвались уроды, и SSL включался одной кнопкой!
Однако, после угроз Google помечать все сайты без SSL, SSL становится обязательным, наезд чисто конкртено реальный, в поиске например от itcooky мало что найдешь и ваше не индексируется. Единственный нормальный(принимающий всеми браузерами) сертификат SSL дает Let’s Encrypt is a free, automated, and open Certificate Authority на этот сайт можно не заходить, регистрироваться не надо, просто дает и все, донаты принимает(прям хотел занясти 5 доллоров, но сказали нет братан миним 10, хотел не писать свое имя и почту, но сказали нет братан надо, итит).
Как ставить на CentOS 6 много советов, у меня сработал сборник из оных
делаем папочку любую и там исполняем
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto --nginx
у меня потянуло куча всего выдало ошибку в конце, но не важно
Далее обновляем nginx должен быть свежий
yum update nginx
И собственно вся, для каждого своего сайта делаем
./certbot-auto certonly --webroot --agree-tos --email meganus@itcooky.com -w /usr/www/itcooky.com -d itcooky.com -d www.itcooky.com
В старом конфиге меняю голову, добовляю вот это
server { listen 111.10.1.111:443 ssl; server_name www.shakira.ru shakira.ru; ssl_certificate /etc/letsencrypt/live/itcooky.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/itcooky.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/itcooky.com/chain.pem; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8; add_header Strict-Transport-Security "max-age=31536000"; add_header Content-Security-Policy "img-src https: data:; upgrade-insecure-requests";
Еще создаю один файл для перенаправления http на https назову его ssl.conf
server { listen 111.10.1.111:80; server_name itcooky.com www.itcooky.com ; return 301 https://itcooky.com$request_uri; }
А так же если в DNS для ващего домена резолвится еще и IP6 надо обязательно и для него конфиг прописать, потому что Let’s Encrypt по умолчанию берет сначала его, и если ошибка это может помешать обновлению
ВНИМАНИЕ: Вот так писать нельзя, ни в коем случае. Везде надо прописывать ip4 или ip6
listen 443 ssl;
Это все лежит в /etc/nginx/conf.d/
Далее перегружаем(на reload не реагирует кстати) Nginx конфиг
/sbin/service nginx restart
И бац все работает, все браузеры показывают замки, сайт стал надежным!!!
Сертификат надо обновлять каждые 90 дней, делается это автоматически, в крон вставляю
45 */12 * * * /lc/certbot-auto renew --quiet
Кто-то еще делает после этого reload nginx, а кто-то нет... посмотрим через 90 дней надо ли!
ПОМНИТЕ: Если у вас что-то неожиданно на CentOS не работает то это скорее всего из-за системы безопасности SELinux - не хотите заморачиваться отключити её совсем, Хостеры так и делают 🙂
Реальный пример тут Ставим на форум phpBB3 супер быстрый поиск Sphinx!в конце
Добавить комментарий