Публикации

Как победить Permission denied у nginx?

Добрый день.
много раз уже ставил nginx проблем не было… а тут внезапно при изменении директории сайта начинает сыпаться 403 ошибка и в логах
2015/03/25 10:34:40 [error] 8068#0: *1 open() "/srv/r/index.html" failed (13: Permission denied), client: 210.30.41.30, server: 185.16.104.16, request: «GET /index.html HTTP/1.1», host: «185.16.104.16»
2015/03/25 10:34:43 [error] 8068#0: *1 "/srv/redstar/index.html" is forbidden (13: Permission denied), client: 210.30.41.30, server: 185.16.104.16, request: «GET / HTTP/1.1», host: «185.16.104.16»

Конфиги
server { listen 80; server_name 185.16.104.16; location / { root /srv/r; index index.html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /srv/r; } }
user apache; worker_processes 1; error_log /var/log/nginx/error.log notice; 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 /var/log/nginx/access.log; proxy_read_timeout 800; proxy_connect_timeout 800; proxy_send_timeout 800; client_max_body_size 50m; client_body_buffer_size 128k; client_header_buffer_size 32k; large_client_header_buffers 2 2k; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; server_names_hash_bucket_size 1024; include /etc/nginx/conf.d/*.conf; }
Права доступа на директорию
[root@ttt2 ]# cd /srv/r [root@ttt2 r]# ls -lsah total 48K 4.0K drwxrwxrwx. 2 apache apache 4.0K Mar 25 10:24. 4.0K drwxr-xr-x. 3 apache apache 4.0K Mar 25 09:25… 20K -rwxrwxrwx. 1 apache apache 17K Jan 21 12:30 50x.html 20K -rwxrwxrwx. 1 apache apache 19K May 14 2012 index.html
Подскажите, в чем может быть проблема…

Как сделать бэкап дампа на удаленный сервер?

Имеется скрипт, который должен создавать дамп базы, сжимать его и копировать на удаленный сервер.

#!/bin/bash MUSER="" #root пользователь MySQL MPASS="" #пароль пользователя root MySQL #Указываем директорию и имя файла куда будем выводить дамп значения #%H-час %M-минута %d-день %m-месяц %y-год DPATCH="/var/backups/db/backup.$(date +%H-%M_%d.%m.%y).sql" #Указываем имя и местоположения нашего архива с дампом DBGZIP="/var/backups/db/backup.$(date +%H-%M_%d.%m.%y).tar.gz" FTPU="" #Имя пользователя FTP FTPP="" #Пароль пользователя FTP FTPS="" #Сервер FTP например ftp.example.com FTPF="/home/user" #Директория FTP например /home/backup #эта команда создает дамп от имени пользователя root ключ -A обозначает, #что в дамп выводятся все базы данных, если вам нужна только определенная, #просто вместо ключа укажите вашу БД mysqldump --single-transaction=1 --lock-tables=false -u$MUSER -p$MPASS -A > $DPATCH # сжимаем наш дамп tar czfP $DBGZIP $DPATCH # удаляем дамп с расширением SQL rm -rf $DPATCH # Загружаем архив на удаленный FTP сервер ncftpput -m -u$FTPU -p$FTPP $FTPS $FTPF $DBGZIP

Скрипт выполняет без ошибок
— Dump completed on 2015-03-19 23:40:12

Архив с дампом на локальном хосте появляется, на удаленный не копируется.

Что может быть не так?

Не работает logrotate debian?

На debian установлен logrotate

В файле /etc/logrotate.d/apache2 прописал конфиг
/home/user1/site/logs/*.log
{
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 root user1 www-data
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi; \
endscript
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
}
Но логи все равно бесконечно пишутся в один файл. Что не так?

Медленный UPDATE по Primary Key MySQL/MariaDB?

Запрос:
UPDATE `cart` SET `user_id` = NULL, `completed` = 0 WHERE `id` = 6948; Query OK, 0 rows affected (1.21 sec) Rows matched: 1 Changed: 0 Warnings: 0
Видно, что затронуто 0 строк, тем не менее 1210 мс — это шикарно. SELECT этой строки всегда за 0мс.
Размер таблицы (6,354 rows).

describe cart; +-----------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | user_id | int(11) | YES | MUL | NULL | | | completed | tinyint(1) | NO | | 0 | | +-----------+------------+------+-----+---------+----------------+ 3 rows in set (0.01 sec) show index from cart; +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | cart | 0 | PRIMARY | 1 | id | A | 6386 | NULL | NULL | | BTREE | | | | cart | 1 | user_id | 1 | user_id | A | 2128 | NULL | NULL | YES | BTREE | | | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

Вот кусок профилирования этого запроса который виновен:
| Status | Duration | CPU_user | CPU_system | Context_voluntary | Context_involuntary | Block_ops_in | Block_ops_out | Messages_sent | Messages_received | Page_faults_major | Page_faults_minor | Swaps | Source_function | Source_file | Source_line | | query end | 2.502555 | 0.003000 | 0.000000 | 88 | 8 | 0| 136 | 0 | 0 | 0 | 0 | 0 | mysql_execute_command | sql_parse.cc | 5093 |
Server version: 10.0.17-MariaDB-1~wheezy

502 Bad Gataway, как исправить?

Здравствуйте, сразу отмечу. что пытался найти ответы в поиске как в рунете, так и на зарубежных ресурсах, но увы ничего дельного не нашел.
uptime:
10:33:18 up 1 day, 11:24, 1 user, load average: 0.00, 0.00, 0.00
в top-е мелькает процесс fail2ban-server, как я понял это средство защиты от лишнего трафика.
apache2/error.log/:
eAccelerator: Unable to change cache directory /var/cache/eaccelerator permissions
nginx/error.log:
2015/03/14 10:35:10 [error] 1607#0: *185591 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: *.*.*.*, server: site.ru, request: «GET /favicon.ico HTTP/1.1», upstream: «127.0.0.1:8080/favicon.ico», host: «www.site.ru», referrer: «www.site.ru/folder/1344» 2015/03/14 10:35:55 [error] 1607#0: *185807 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: *.*.*.*, server: subdomain.site.ru, request: «GET /.../.../cron_mailer.php HTTP/1.1», upstream: «127.0.0.1:8080/.../.../cron_mailer.php», host: «subdomain.site.ru»
nginx/access.log:
*.*.*.*- — [14/Mar/2015:10:38:47 +0300] «GET /folder/10754.html HTTP/1.1» 499 0 «subdomain.site.ru/folder/10754.html» «URLGrabber» *.*.*.*- — [14/Mar/2015:10:38:52 +0300] «GET /folder/script.php?query HTTP/1.0» 499 0 "-" "-"
Дело не в «URLGrabber» ли?
Буду рад помощи, а также если поделитесь опытом как вы справляетесь с подобными явлениями

Как ipfw (FreeBSD 10) назначить правила?

Всем здрасте.
Вот я чето не могу разобраться как заставить ipfw применять правила.
cat /etc/rc.conf hostname=«gate.corp10.un» ifconfig_em0=«DHCP» ifconfig_em1=«10.10.10.1/24» gateway_enable=«YES» sshd_enable=«YES» moused_enable=«YES» ntpd_enable=«YES» # Set dumpdev to «AUTO» to enable crash dumps, «NO» to disable dumpdev=«NO» #keymap=«ru.koi8-r.kbd» scrnmap=«koi8-r.shift» font8x16=«cp866b-8x16» font8x14=«cp866-8x14» font8x8=«cp866-8x8» firewall_enable=«YES» #firewall_nat_enable=«YES» firewall_type="/etc/ipfw.conf" #firewall_logging=«YES» natd_enable=«YES» natd_interface=«em0» natd_flags=""

cat /etc/ipfw.conf #!/bin/sh FwCMD=`which ipfw` #####Config##### LanOut=«em0» LanIn=«em1» NetMask=«24» NetIn=«10.10.10.0» #####\Config##### IpOut=`ifconfig ${LanOut} | grep inet | cut -d " " -f 2` IpIn=`ifconfig ${LanIn} | grep inet | cut -d " " -f 2` ${FwCMD} -f flush ${FwCMD} add check-state ###LAN### ${FwCMD} add allow tcp from any to any via ${LanIn} ${FwCMD} add allow udp from any to any via ${LanIn} ${FwCMD} add allow icmp from any to any via ${LanIn} ###LAN### ${FwCMD} add allow tcp from any to any via ${LanOut} ${FwCMD} add allow udp from any to any via ${LanOut} ${FwCMD} add allow icmp from any to any via ${LanOut} ##deny all packages ## ${FwCMD} add allow ip from any to any

Если запускаю руками #sh /etc/ipfw.conf все OK.
а если система сама загружается то отваливается ssh (все порты закрыты).

Почему не запускается mysql?

Не запускается mysql. Уже по форумам лазил ответа не нашел, горит.
OS: Ubuntu

~# /etc/init.d/mysql start
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start mysql
start: Job failed to start

~# mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)

Логи почему-то не доступен, файл сокета есть, удалил новый создал, не помогает

dmesg | grep mysql
Читать дальше

Очень большой пинг в клиент-серверном приложении в Windows Server 2012. Как уменьшить?

Я создал облачный сервер на Windows Server 2012 R2. При выполнении команды ping со своего компьютера на этот сервер пинг в среднем 60ms. Я написал простое клиент-серверное приложение на C#.

Клиент:
TcpClient client = new TcpClient(); client.Connect(IPAddress.Parse(«адрес»), 10000); NetworkStream stream = client.GetStream(); BinaryReader reader = new BinaryReader(stream); BinaryWriter writer = new BinaryWriter(stream); Stopwatch sw = new Stopwatch(); List pings = new List(); DateTime startTime = DateTime.Now; Random random = new Random(); while(true) { byte[] packet = Enumerable.Repeat(100, random.Next(50, 100)).ToArray(); sw.Start(); writer.Write(packet.Length); writer.Write(packet); packet = reader.ReadBytes(reader.ReadInt32()); sw.Stop(); pings.Add((float)sw.Elapsed.TotalMilliseconds); sw.Reset(); DateTime now = DateTime.Now; if(now — startTime > TimeSpan.FromSeconds(1)) { startTime = now; Console.WriteLine(pings.Average()); pings.Clear(); } }
Сервер:
TcpListener listener = new TcpListener(IPAddress.Any, 10000); listener.Start(); TcpClient client = listener.AcceptTcpClient(); NetworkStream stream = client.GetStream(); BinaryReader reader = new BinaryReader(stream); BinaryWriter writer = new BinaryWriter(stream); while (true) { byte[] packet = reader.ReadBytes(reader.ReadInt32()); writer.Write(packet.Length); writer.Write(packet); }
При запуске сервера на Windows Server, а клиента у себя я получаю результаты пинга в среднем 200ms.
На мой взгляд проблема кроется в настройках Windows Server`а. Подскажите, кто знает.

Невозможно обработать запрос в yii, как исправить?

залил сайт на хостинг и вот что за ошибка выходит когда захожу туда

Невозможно обработать запрос «mygallery».
Error 404
захожу в protected/runtime/application.log
2015/02/15 14:44:24 [error] [exception.CHttpException.404] exception 'CHttpException' with message 'Невозможно обработать запрос «mygallery».' in /home/u667774057/public_html/framework/web/CWebApplication.php:286
Stack trace:
#0 /home/u667774057/public_html/framework/web/CWebApplication.php(141): CWebApplication->runController('mygallery')
#1 /home/u667774057/public_html/framework/base/CApplication.php(184): CWebApplication->processRequest()
#2 /home/u667774057/public_html/index.php(13): CApplication->run()
#3 {main}
REQUEST_URI=/mygallery
HTTP_REFERER=http://my_site.tk/

2015/02/15 14:51:00 [error] [exception.CHttpException.404] exception 'CHttpException' with message 'Невозможно обработать запрос «mygallery».' in /home/u667774057/public_html/framework/web/CWebApplication.php:286
Stack trace:
#0 /home/u667774057/public_html/framework/web/CWebApplication.php(141): CWebApplication->runController('mygallery')
#1 /home/u667774057/public_html/framework/base/CApplication.php(184): CWebApplication->processRequest()
#2 /home/u667774057/public_html/index.php(13): CApplication->run()
#3 {main}
REQUEST_URI=/mygallery
HTTP_REFERER=http://my_site.tk/

как исправлять такие ошибки?
хостинг hostinger.ru

Как сделать NAT между openvpn и iptunnel?

Ситуация такая:
openvpnclient(10.8.0.6)(10.8.0.1)linux-router(192.168.9.105)(192.168.9.106)mikrotik(192.168.11.1){192.168.11.0/29}
на mikrotik прописан роут на 192.168.0.0/16 через 192.168.9.105
Не получается сделать NAT для openvpn клиентов.
ifconfig tun4 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255 tun30 Link encap:IPIP Tunnel HWaddr inet addr:192.168.9.105 P-t-P:192.168.9.106 Mask:255.255.255.252 UP POINTOPOINT RUNNING NOARP MTU:1480 Metric:1
ip r 10.8.0.0/24 via 10.8.0.2 dev tun4 192.168.11.0/29 via 192.168.9.106 dev tun30
router:/# ping 192.168.11.1 PING 192.168.11.1 (192.168.11.1) 56(84) bytes of data. 64 bytes from 192.168.11.1: icmp_req=1 ttl=64 time=7.75 ms
tcpdump -i tun30 -n 14:03:49.380280 IP 192.168.9.105 > 192.168.11.1: ICMP echo request, id 17531, seq 2, length 64 14:03:49.388094 IP 192.168.11.1 > 192.168.9.105: ICMP echo reply, id 17531, seq 2, length 64
iptables -A POSTROUTING -t nat -s 10.8.0.0/24 -d 192.168.11.0/29 -j SNAT --to-source 192.168.9.105
c:\openvpnclient>ping 192.168.11.1 Обмен пакетами с 192.168.11.1 по с 32 байтами данных: Превышен интервал ожидания для запроса.
tcpdump -i tun30 -n 14:18:25.587304 IP 10.8.0.6 > 192.168.11.1: ICMP echo request, id 1280, seq 64262, length 40 14:18:31.087791 IP 10.8.0.6 > 192.168.11.1: ICMP echo request, id 1280, seq 64518, length 40 14:18:36.587831 IP 10.8.0.6 > 192.168.11.1: ICMP echo request, id 1280, seq 64774, length 40
Читать дальше
,