Установка ffmpeg-php на Centos 6
yum -y groupinstall "Development Tools" git clone https://github.com/tony2001/ffmpeg-php.git cd ffmpeg-php phpize ./configure make && make install
30 января 2015, 00:40
yum -y groupinstall "Development Tools" git clone https://github.com/tony2001/ffmpeg-php.git cd ffmpeg-php phpize ./configure make && make install
cd /root
yum install git gcc-c++ pcre-devel zlib-devel make wget openssl-devel libxml2-devel libxslt-devel gd-devel perl-ExtUtils-Embed GeoIP-devel gperftools-develКачаем исходники nginx
wget http://nginx.org/download/nginx-1.6.2.tar.gz tar -xvf nginx-1.6.2.tar.gzТеперь качаем модуль, и не забываем переключить бранч на 2.2
git clone https://github.com/vkholodkov/nginx-upload-module.git cd nginx-upload-module git checkout 2.2 cd ..Теперь нужно сконфигурировать
cd nginx-1.6.2 ./configure --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-pcre --with-ipv6 --with-http_ssl_module --with-http_spdy_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module --with-http_perl_module --with-mail --with-mail_ssl_module --with-pcre --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --with-ld-opt=-Wl,-E --add-module=/root/nginx-upload-moduleТеперь устанавливаем
make installНу и не забываем про инит скрипт /etc/init.d/nginx
#!/bin/sh # # nginx Startup script for nginx # # chkconfig: - 85 15 # processname: nginx # config: /etc/nginx/nginx.conf # config: /etc/sysconfig/nginx # pidfile: /var/run/nginx.pid # description: nginx is an HTTP and reverse proxy server # ### BEGIN INIT INFO # Provides: nginx # Required-Start: $local_fs $remote_fs $network # Required-Stop: $local_fs $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start and stop nginx ### END INIT INFO # Source function library. . /etc/rc.d/init.d/functions if [ -L $0 ]; then initscript=`/bin/readlink -f $0` else initscript=$0 fi sysconfig=`/bin/basename $initscript` if [ -f /etc/sysconfig/$sysconfig ]; then . /etc/sysconfig/$sysconfig fi nginx=${NGINX-/usr/sbin/nginx} prog=`/bin/basename $nginx` conffile=${CONFFILE-/etc/nginx/nginx.conf} lockfile=${LOCKFILE-/var/lock/subsys/nginx} pidfile=${PIDFILE-/var/run/nginx.pid} SLEEPMSEC=${SLEEPMSEC-200000} UPGRADEWAITLOOPS=${UPGRADEWAITLOOPS-5} RETVAL=0 start() { echo -n $"Starting $prog: " daemon --pidfile=${pidfile} ${nginx} -c ${conffile} RETVAL=$? echo [ $RETVAL = 0 ] && touch ${lockfile} return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc -p ${pidfile} ${prog} RETVAL=$? echo [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} } reload() { echo -n $"Reloading $prog: " killproc -p ${pidfile} ${prog} -HUP RETVAL=$? echo } upgrade() { oldbinpidfile=${pidfile}.oldbin configtest -q || return echo -n $"Starting new master $prog: " killproc -p ${pidfile} ${prog} -USR2 echo for i in `/usr/bin/seq $UPGRADEWAITLOOPS`; do /bin/usleep $SLEEPMSEC if [ -f ${oldbinpidfile} -a -f ${pidfile} ]; then echo -n $"Graceful shutdown of old $prog: " killproc -p ${oldbinpidfile} ${prog} -QUIT RETVAL=$? echo return fi done echo $"Upgrade failed!" RETVAL=1 } configtest() { if [ "$#" -ne 0 ] ; then case "$1" in -q) FLAG=$1 ;; *) ;; esac shift fi ${nginx} -t -c ${conffile} $FLAG RETVAL=$? return $RETVAL } rh_status() { status -p ${pidfile} ${nginx} } # See how we were called. case "$1" in start) rh_status >/dev/null 2>&1 && exit 0 start ;; stop) stop ;; status) rh_status RETVAL=$? ;; restart) configtest -q || exit $RETVAL stop start ;; upgrade) rh_status >/dev/null 2>&1 || exit 0 upgrade ;; condrestart|try-restart) if rh_status >/dev/null 2>&1; then stop start fi ;; force-reload|reload) reload ;; configtest) configtest ;; *) echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|upgrade|reload|status|help|configtest}" RETVAL=2 esac exit $RETVAL
mysqldump -u root -pPASSWORD -h localhost --lock-all-tables --disable-keys DBNAME | gzip -c | ssh root@xx.xx.xx.xx "cat > /home/database.core.sql.gz"
service postfix stop postsuper -d ALL service postfix start
mongorestore --dbpath /var/lib/mongo /home/backup/mongoЕсли не срабатывает, потому что версии разные, или еще почему, то придется экспортировать коллекции вручную
mongoexport --db databaseName --collection collectionName --out collectionName.jsonИмпортировать так
mongoimport --collection collectionName --file collectionName.json
#AuthOrder mod_auth_pam.c* mod_auth_unix.cЧтобы удобно дебажить можно запустить его в ручном режиме
proftpd -nd 10
php composer.phar require swiftmailer/swiftmailer @stableпример посылает емаил и аттачит файл
<?php require __DIR__ . '/vendor/autoload.php'; // создаем транспорт $transport = Swift_SmtpTransport::newInstance('smtp.mailgun.org', 587) ->setUsername('postmaster@snippets.pp.ru') ->setPassword('******'); $mailer = Swift_Mailer::newInstance($transport); // создаем сообщение $message = Swift_Message::newInstance('Тема') ->setFrom('mail@snippets.pp.ru') ->setTo('admin@snippets.pp.ru') ->setBody('<span style="color:red">Это текст сообщения</span>', 'text/html') ->attach(Swift_Attachment::fromPath('/home/file.pdf')); // шлем сообщение $result = $mailer->send($message); var_dump($result); ?>
curl -X HEAD -i http://www.google.com
sudo mv ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist /System/Library/LaunchDaemons/homebrew.mxcl.nginx.plist
<?php $cfIpRanges = [ '199.27.128.0/21', '173.245.48.0/20', '103.21.244.0/22', '103.22.200.0/22', '103.31.4.0/22', '141.101.64.0/18', '108.162.192.0/18', '190.93.240.0/20', '188.114.96.0/20', '197.234.240.0/22', '198.41.128.0/17', '162.158.0.0/15', '104.16.0.0/12', ]; $cidr_match = function ($ip, $range) { list ($subnet, $bits) = explode('/', $range); $ip = ip2long($ip); $subnet = ip2long($subnet); $mask = -1 << (32 - $bits); $subnet &= $mask; return ($ip & $mask) == $subnet; }; if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { foreach ($cfIpRanges as $cfIpRange) { if ($cidr_match($_SERVER['REMOTE_ADDR'], $cfIpRange)) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; break; } } } ?>
openssl genrsa -out server.key 2048 openssl req -new -sha256 -key server.key -out server.csrПри генерации будут спрашивать данные, вводим (смотрим подсказки, некоторые поля можно пустыми оставить) Country Name State or Province Name (full name) Locality Name (eg, city) Organization Name (eg, company) Organizational Unit Name (eg, section) Common Name (e.g. server FQDN or YOUR name) Email Address A challenge password An optional company name Затем со сгенеренным CSR идем покупать сертификат. Писать где не буду (чтобы не рекламить). Когда купите сертификат вам дадут CRT файл. Если у вас цепочка сертификатов, то нужно склеить их в один
cat server.crt intermediate.crt > server.crtЗатем добавить в nginx.conf следующее
http { #......всякое....... ssl_certificate server.crt; ssl_certificate_key server.key; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; server { listen 443; server_name example.com; ssl on; keepalive_timeout 70; #......всякое....... } }
PasswordAuthentication no ChallengeResponseAuthentication no
$ youtube-dl 'http://www.youtube.com/watch?v=c9JoHd7xoPA' -F [youtube] c9JoHd7xoPA: Downloading webpage [youtube] c9JoHd7xoPA: Extracting video information [youtube] c9JoHd7xoPA: Downloading DASH manifest [info] Available formats for c9JoHd7xoPA: format code extension resolution note 139 m4a audio only DASH audio 49k , audio@ 48k (22050Hz), 1.28MiB (worst) 140 m4a audio only DASH audio 129k , audio@128k (44100Hz), 3.39MiB 171 webm audio only DASH audio 131k , audio@128k (44100Hz), 3.17MiB 172 webm audio only DASH audio 195k , audio@256k (44100Hz), 4.59MiB 141 m4a audio only DASH audio 255k , audio@256k (44100Hz), 6.74MiB 278 webm 256x144 DASH video 91k , webm container, VP9, 15fps, video only, 1.54MiB 160 mp4 256x144 DASH video 111k , 15fps, video only, 2.79MiB 242 webm 426x240 DASH video 127k , 30fps, video only, 1.73MiB 133 mp4 426x240 DASH video 248k , 30fps, video only, 6.28MiB 243 webm 640x360 DASH video 233k , 30fps, video only, 3.10MiB 134 mp4 640x360 DASH video 603k , 30fps, video only, 8.29MiB 244 webm 854x480 DASH video 390k , 30fps, video only, 5.19MiB 135 mp4 854x480 DASH video 928k , 30fps, video only, 16.02MiB 247 webm 1280x720 DASH video 829k , 30fps, video only, 11.34MiB 136 mp4 1280x720 DASH video 1532k , 30fps, video only, 31.34MiB 248 webm 1920x1080 DASH video 1594k , 30fps, video only, 24.76MiB 137 mp4 1920x1080 DASH video 2785k , 30fps, video only, 55.71MiB 17 3gp 176x144 36 3gp 320x240 5 flv 400x240 43 webm 640x360 18 mp4 640x360 22 mp4 1280x720 (best)Видим что под номером 137 находится 1080p видосик, под номером 141 звуковая дорожка 256 кбит/с Ну чтоже, давайте их и скачаем, для мерджа необходим ffmpeg
$ youtube-dl 'http://www.youtube.com/watch?v=c9JoHd7xoPA' -f 137+141 [youtube] c9JoHd7xoPA: Downloading webpage [youtube] c9JoHd7xoPA: Extracting video information [youtube] c9JoHd7xoPA: Downloading DASH manifest [download] Destination: Flash - Life in the Sky-c9JoHd7xoPA.f137.mp4 [download] 100% of 55.71MiB in 00:10 [download] Destination: Flash - Life in the Sky-c9JoHd7xoPA.f141.m4a [download] 100% of 6.74MiB in 00:01 [ffmpeg] Merging formats into "Flash - Life in the Sky-c9JoHd7xoPA.mp4"
iptables -I INPUT -s 111.111.111.111 -j DROPСмотрим
iptables -L INPUT --line-numbers ------------ Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP all -- 111.111.111.111 anywhereОтменяем брокировку (1 - это номер правила из предыдущей команды)
iptables -D INPUT 1
[mongodb] name=MongoDB Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/ gpgcheck=0 enabled=1Инсталлим
yum install -y mongodb-org chkconfig mongod on service mongod start
setenforce 0А чтобы опять не включилось после ребута vi /etc/selinux/config
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
brew switch php55 5.5.20
<?php $db = new PDO( 'mysql:host=localhost;dbname=test', 'root', 'root', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") ); $q = $db->prepare('select now()'); $q->execute(); $now = $q->fetch(); //без этой строчки соединение с базой не закроется! (смотреть ниже) //кто не верит может закомментить эту строчку и посмотреть process list unset($q); var_dump($now); //допустим, нам нужно закрыть соединение с базой, чтобы произвести какие-то действия $db = null; //собственно действия sleep(100); ?>
yum -y install openssh-server openssh-clients