- Ставим letsencrypt:
$ sudo apt-get install letsencrypt
- Получаем сертификат и ключи:
$ sudo letsencrypt certonly --manual -d domain1 -d domain2
- Следуем инструкции. Для каждого домена нужно иметь на сервере файл по адресу типа http://domain1/.well-known/acme-challenge/Ce0jP4l5BJ4vqBZTGLVGn2o0genuzkvV3nUSjgw2a-8 с нужным содержимым (необходимо для подтверждения домена) - создаём этот файл
- Сгенерированные сертификат и приватный ключ лежат здесь:
/etc/letsencrypt/live/domain1/fullchain.pem
/etc/letsencrypt/live/domain1/privkey.pem
- Настраиваем nginx для работы со сгенеренным сертификатом
$ sudo vim /etc/nginx/sites-enabled/sitename
# добавляем 443 порт для https и прописываем путь к сертификату/ключу
server {
listen 80;
listen 443 ssl;
servername domain1 domain2;
ssl_certificate /etc/letsencrypt/live/domain1/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain1/privkey.pem;
.... # остальное без изменений
}
- Перезапускаем сервер
$ sudo /etc/init.d/nginx restart- ???????
- PROFIT!
- Перезапускаем сервер
вторник, 6 сентября 2016 г.
Установка SSL сертификата Let's Encrypt на nginx вручную
четверг, 28 августа 2014 г.
How can I distribute Catalyst Apps?
How can I distribute Catalyst Apps?
The default (and recommended) packaging method is to use Module::Install.
To pack up an application, use 'make manifest' and then 'make dist' to create a redistributable tar of the application directory.
In your application base directory:
edit prereqs in Makefile.PL
perl Makefile.PL
make manifest (edit MANIFEST.SKIP and run make manifest again if you'd like to exclude certain file patterns)
make dist
copy YourApp?-version.tar.gz to the destination system, unpack and run it..
The default (and recommended) packaging method is to use Module::Install.
To pack up an application, use 'make manifest' and then 'make dist' to create a redistributable tar of the application directory.
In your application base directory:
edit prereqs in Makefile.PL
perl Makefile.PL
make manifest (edit MANIFEST.SKIP and run make manifest again if you'd like to exclude certain file patterns)
make dist
copy YourApp?-version.tar.gz to the destination system, unpack and run it..
пятница, 22 августа 2014 г.
iptables сохранение и автовосстановление правил
Сохранение текущих правил в файл:
Примерное содержимое /etc/firewall.conf:
Редактируем /etc/network/if-up.d/00-iptables:
Всё. Теперь при перезагрузке мы не потеряем настройки файрволла
$ sudo iptables-save > /etc/firewall.conf
Примерное содержимое /etc/firewall.conf:
*filter
:INPUT ACCEPT [8765:8446525]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [7694:474292]
-A INPUT -s 5.101.101.64/32 -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 188.226.202.7/32 -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j REJECT --reject-with icmp-port-unreachable
COMMIT
:INPUT ACCEPT [8765:8446525]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [7694:474292]
-A INPUT -s 5.101.101.64/32 -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 188.226.202.7/32 -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j REJECT --reject-with icmp-port-unreachable
COMMIT
Редактируем /etc/network/if-up.d/00-iptables:
#!/bin/sh
iptables-restore < /etc/firewall.conf
iptables-restore < /etc/firewall.conf
Всё. Теперь при перезагрузке мы не потеряем настройки файрволла
пятница, 25 июля 2014 г.
iptables открыть доступ к MySQL с определённого хоста
$ sudo /sbin/iptables -A INPUT -i eth0 -s xx.xx.xx.xx -p tcp --destination-port 3306 -j ACCEPT
$ sudo /sbin/iptables -A INPUT -i eth0 -s 0.0.0.0/0 -p tcp --destination-port 3306 -j REJECT
Затем включить привязку к интерфейсу в my.cnf:
$ sudo /sbin/iptables -A INPUT -i eth0 -s 0.0.0.0/0 -p tcp --destination-port 3306 -j REJECT
[mysqld]
bind-address = 0.0.0.0
# skip-networking
При наличии строки с параметром skip-networking убрать её или закомментировать
bind-address = 0.0.0.0
# skip-networking
И после этого перезапустить сервер:
$ sudo /etc/init.d/mysql restart
понедельник, 21 июля 2014 г.
vimdiff cheats
Запуск:
ctrl+w ctrl+w - switch windows
do - diff obtain
dp - diff put
[c - previous difference
]c - next difference
:diffupdate - diff update ;)
:syntax off - syntax off
zo - open folded text
zc - close folded text
$ vimdiff file1 file2Команды:
ctrl+w ctrl+w - switch windows
do - diff obtain
dp - diff put
[c - previous difference
]c - next difference
:diffupdate - diff update ;)
:syntax off - syntax off
zo - open folded text
zc - close folded text
четверг, 17 апреля 2014 г.
Кросс-доменный AJAX-запрос при помощи CORS
Стандарт CORS (Cross-Origin Resource Sharing) позволяет легко и непринуждённо осуществлять кросс-доменные AJAX-запросы и иметь полный контроль над тем, кому и как позволено это делать.
Всё это работает при помощи добавления новых HTTP-заголовков в ответ сервера, разрешающих тем или иным способом XHR с определённых доменов, IP адресов либо с определённой авторизацией (Cookie, HTTPAuth)
В http-заголовке ответа сервера можно явно указать, каким внешним доменам разрешено выполнять AJAX-запрос к нашему серверу:
Например, страница из домена my.name осуществляет XMLHttpRequest к серверу. В запросе необходимо указать заголовок Origin:
Если указанный Origin устраивает сервер, то он разрешает браузеру завершить запрос и получить ответ, добавляя в свой заголовок:
А также можно разрешить кастомные заголовки в запросах (Например, так пришлось сделать для работы библиотеки prototype):
Остальное тут.
Работает в большинстве современных браузеров (IE8+, FF3.5+, Chrome 6+ и Safari 4+)
Всё это работает при помощи добавления новых HTTP-заголовков в ответ сервера, разрешающих тем или иным способом XHR с определённых доменов, IP адресов либо с определённой авторизацией (Cookie, HTTPAuth)
В http-заголовке ответа сервера можно явно указать, каким внешним доменам разрешено выполнять AJAX-запрос к нашему серверу:
Например, страница из домена my.name осуществляет XMLHttpRequest к серверу. В запросе необходимо указать заголовок Origin:
Origin: http://my.name
Если указанный Origin устраивает сервер, то он разрешает браузеру завершить запрос и получить ответ, добавляя в свой заголовок:
Access-Control-Allow-Origin: http://my.name
А также можно разрешить кастомные заголовки в запросах (Например, так пришлось сделать для работы библиотеки prototype):
Access-Control-Allow-Headers: content-type,x-prototype-version,x-requested-with
Остальное тут.
Работает в большинстве современных браузеров (IE8+, FF3.5+, Chrome 6+ и Safari 4+)
вторник, 15 апреля 2014 г.
Подписаться на:
Сообщения (Atom)