Архив метки: Linux

Установка на FreeBSD Apache, Mysql и PHP для сайтов

В этом уроке вы узнаете, как установить Apache, MySQL и PHP на FreeBSD. Эта комбинация программ с открытым исходным кодом более известна как стек FAMP, FAMP является акронимом для трех. Стек FAMP — это, по сути, набор программных утилит, которые предоставляют серверу FreeBSD все необходимое для размещения динамических веб-страниц. Если вы когда-либо использовали Linux, вы, вероятно, заметили сходство со стеком LAMP, который служит той же цели в Linux.

Вне зависимости от того, арендуете ли вы виртуальные серверы в Германии или другой стране, это руководство поможет вам превратить только что установленную систему в полноценный веб-сервер и разместить на нём сайты.

Чтобы установить стек FAMP на FreeBSD 12.2, мы будем использовать pkg, менеджер пакетов для FreeBSD.

Шаг 1. Подготовьте вашу систему FreeBSD к установке FAMP

Прежде чем мы начнем установку, лучше убедиться, что наша система обновлена.

Чтобы узнать, какую версию вы используете, введите:

$ freebsd-version

Если версия устарела, введите команду ниже, чтобы обновить ее:

$ freebsd-update fetch install

$ pkg update && pkg upgrade -y

Затем установите поддерживающие зависимости:

$ pkg install -y sudo vim bash curl

Затем добавьте нового пользователя с помощью следующей команды:

$ adduser

Вам будет предложено ввести учетные данные пользователя и информацию об учетной записи.

# Username: younis



# Full name: Younis Said



# Uid (Leave empty for default): 



# Login group [younis]: 



# Login group is younis. Invite younis into other groups? []: wheel



# Login class [default]: 



# Shell (sh csh tcsh nologin) [sh]: bash



# Home directory [/home/younis]: 



# Home directory permissions (Leave empty for default): 



# Use password-based authentication? [yes]: 



# Use an empty password? (yes/no) [no]: 



# Use a random password? (yes/no) [no]: 



# Enter password: your_secure_password



# Enter password again: your_secure_password



# Lock out the account after creation? [no]: 



# OK? (yes/no): yes



# Add another user? (yes/no): no



# Goodbye!

Наконец, выполните команду visudo, как показано ниже, чтобы делегировать командные привилегии администратора всем пользователям группы wheel:

$ visudo

# Uncomment by removing hash (#) sign

# %wheel ALL=(ALL) ALL

Используйте команду su, за которой следует новое имя пользователя, чтобы изменить учетную запись на ту, которую вы только что создали:

$ su - younis

Также обновите часовой пояс:

$ sudo tzsetup

Шаг 2. Установите сервер Apache HTTPS 2.4

Из всех используемых сегодня веб-серверов HTTPS-сервер Apache является самым популярным и используется во всем мире для размещения как статических, так и динамических веб-страниц и приложений.

Pkg, менеджер пакетов FreeBSD по умолчанию, позволяет удобно установить сервер Apache HTTPS из репозитория FreeBSD. Введите команду ниже, чтобы установить Apache с помощью pkg:

$ sudo pkg install -y apache24

Посмотрите, какая версия установлена, с помощью команды ниже:

$ httpd -v

Перед загрузкой Apache необходимо включить его:

$ sudo sysrc apache24_enable=yes

Затем введите команду ниже, чтобы запустить Apache:

$ sudo service apache24 start

Проверьте запуск с помощью следующей команды:

$ sudo service apache24 status

В выводе должно быть четко указано, работает ли он.

Вы также можете убедиться, что все работает правильно, указав свой общедоступный IP-адрес в поле поиска вашего веб-браузера. Если установка прошла гладко и все работает правильно, вы должны быть перенаправлены на веб-страницу, подтверждающую вашу установку.

Шаг 3. Установите MySQL 8.0 с помощью pkg

Когда HTTPS-сервер Apache активен и работает, мы можем перейти к третьему шагу: установке MySQL. MySQL — это сервер базы данных, который поддерживает и регулирует доступ к базам данных, в которых хранится информация, относящаяся к веб-сайту.

Как и в случае с Apache, мы загрузим MySQL из репозитория FreeBSD с помощью pkg.

$ sudo pkg install -y mysql80-client mysql80-server

После выполнения указанной выше команды в вашей системе должна быть установлена ​​последняя версия. Найдите последнюю версию в Интернете, а затем сравните ее с версией, установленной на вашем диске, с помощью следующей команды:

$ mysql --version

Перед запуском MySQL необходимо включить его:

$ sudo sysrc mysql_enable=yes

Введите команду ниже, чтобы запустить базу данных:

$ sudo service mysql-server start

Проверьте запуск, введя следующую команду:

$ sudo service mysql-server status

Чтобы усилить меры безопасности в вашей базе данных, вы должны ввести сценарий безопасности, чтобы удалить некоторые несоответствия с MySQL и ограничить доступ к вашей системе:

$ sudo mysql_secure_installation

Затем установите пароль и ответьте на последующие вопросы. Вы можете выбрать значение по умолчанию для всех вопросов, нажав: key_enter:

Шаг 4: установите PHP 7.4

Последний компонент стека FAMP — это PHP, ведущий язык программирования в области веб-разработки на данный момент. Без PHP динамические веб-сайты, которые вы хотите запускать на своем сервере, не будут полностью функционировать.

Подобно тому, как мы использовали команду pkg раньше, мы также можем установить PHP из репозиториев FreeBSD.

Чтобы установить важные пакеты php74, php74-mysqli и mod_php74, введите команду ниже:

$ sudo pkg install -y php74 php74-mysqli mod_php74

Смотрите установленную версию:

$ php --version

Если установленная версия актуальна, перейдите к репликации образца файла конфигурации PHP, выполнив команду, как показано ниже:

$ sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Чтобы запустить PHP, введите:

$ sudo sysrc php_fpm_enable=yes

$ sudo service php-fpm start

Чтобы проверить, запущен ли PHP, введите:

$ sudo service php-fpm status

Чтобы добавить что-то еще к только что установленному пакету PHP, попробуйте несколько вспомогательных модулей. Найдите пакеты, написанные с помощью модулей PHP:

$ php -m

Затем используйте команду ниже для поиска любых доступных модулей PHP:

$ pkg search ^php74-*

Вы должны увидеть несколько модулей PHP. Вы можете установить любой из них, который хотите попробовать, с помощью команды pkg.

Шаг 5. Настройте Apache для загрузки модулей PHP

Стек FAMP может работать только тогда, когда Apache настроен для работы с PHP.

Выполните команду ниже, войдите в файл конфигурации:

$ sudo nano /usr/local/etc/apache24/modules.d/001_mod-php.conf

Затем добавьте в файл следующие записи:

<IfModule dir_module>

DirectoryIndex index.php index.html

<FilesMatch ".php$">

SetHandler application/x-httpd-php

</FilesMatch>

<FilesMatch ".phps$">

SetHandler application/x-httpd-php-source

</FilesMatch>

</IfModule>

Чтобы применить изменения, сохраните и выйдите из файла.

Протестируйте конфигурацию Apache с помощью следующей команды:

$ sudo apachectl configtest

Чтобы применить настроенные изменения, перезапустите Apache с помощью следующей команды:

$ sudo apachectl restart

Шаг 5: Тестирование обработки PHP

Прежде чем приступить к работе со стеком FAMP, рекомендуется проверить, нет ли проблем с PHP. Настройка PHP может облегчить для нас эту ситуацию.

Вы можете легко выполнить настройку с помощью простого скрипта PHP. Используйте команду ниже:

$ sudo nano /usr/local/www/apache24/data/info.php

Скопируйте строку ниже и вставьте ее в файл конфигурации:

<?php phpinfo(); ?>

Перейдите по адресу http://your_server_IP/info.php, и вы будете перенаправлены на эту страницу:

Сделайте детали сервера приватными, удалив файл info.php.

$ sudo rm /usr/local/www/apache24/data/info.php

В итоге

В этом руководстве показано, как установить стек FAMP в системе FreeBSD 12.2. Теперь вы можете размещать динамический веб-контент в своей системе и использовать его как полнофункциональный веб-сервер. Будь то динамический веб-сайт или крупномасштабное веб-приложение, потенциал вашего сервера не имеет границ. Однако не забудьте ознакомиться с дополнительными руководствами по FreeBSD на нашем веб-сайте, прежде чем начать. На нашем веб-сайте много контента, и вы обязательно найдете то, что поможет вам начать работу.

Кстати! Вот видео по установке операционной системы FreeBSD, которое будет полезно посмотреть перед выполнением рекомендаций, описанных в статье.



2020-12-16T16:12:22
Вопросы читателей

Какой программой можно открыть PDF на Linux?

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

Evince

Evince — это приложение для просмотра документов по умолчанию, поставляемое с дистрибутивами Linux на основе GNOME Shell, такими как Ubuntu и Fedora. Он поддерживает несколько форматов файлов, включая формат файла PDF. Другие основные функции Evince включают ночной режим, режим автоматической прокрутки, двойной режим, режим непрерывной прокрутки, режим слайд-шоу, режим справа налево и полноэкранный режим.

Evince можно загрузить напрямую из репозиториев Ubuntu, используя команду, указанную ниже:

$ sudo apt install evince

Вы можете установить Evince прямо из диспетчера пакетов в других дистрибутивах Linux. Его также можно установить из магазина Flathub.

MuPDF

MuPDF — это минималистичный и легкий просмотрщик документов для Linux. Он может просматривать PDF, EPUB, XPS и различные другие форматы файлов документов. Это в первую очередь приложение командной строки, которое включает в себя базовое редактирование, аннотации и поддержку преобразования. По умолчанию MuPDF использует оптимизированные настройки для максимально точного отображения документов, имитирующих настоящие книги или настоящую бумагу.

MuPDF можно напрямую загрузить из репозиториев Ubuntu, используя команду, указанную ниже:

$ sudo apt install mupdf

Вы можете установить MuPDF прямо из диспетчера пакетов в других дистрибутивах Linux. Его также можно скачать с официального сайта.

Чтобы просмотреть файл PDF с помощью MuPDF, используйте команду в следующем формате:

$ mupdf $HOME/Downloads/file.pdf

Чтобы просмотреть руководство MuPDF, используйте команду ниже:

$ man mupdf

Atril

Atril — это приложение для просмотра документов по умолчанию, включенное в среду рабочего стола MATE. Его можно установить в других средах рабочего стола без установки всего интерфейса рабочего стола MATE. Его основные функции включают поддержку PDF, DJVU, PS и других форматов файлов, текстовый поиск, полноэкранный режим, непрерывный режим, двухстраничный режим, режим инвертированных цветов, режим автоподбора, закладки, режим презентации и так далее.

Atril можно напрямую загрузить из репозиториев Ubuntu, используя команду, указанную ниже:

$ sudo apt install atril

Вы можете установить Atril прямо из диспетчера пакетов в других дистрибутивах Linux. Его также можно скомпилировать из исходного кода.

Qpdfview

Qpdfview — это программа для просмотра PDF-файлов с открытым исходным кодом, написанная на Qt. Он основан на популярной библиотеке Poppler, которая в основном используется для работы с PDF-документами. Помимо документов PDF, Qpdfview также поддерживает форматы файлов DJVU и PS через плагины. Основные функции Qpdfview включают полноэкранный режим, режим презентации, инструменты преобразования, многостраничный режим, режим непрерывной прокрутки, аннотации и другие базовые инструменты редактирования, текстовый поиск и так далее.

Qpdfview можно напрямую загрузить из репозиториев Ubuntu, используя команду, указанную ниже:

$ sudo apt install qpdfview

Вы можете установить Qpdfview прямо из диспетчера пакетов в других дистрибутивах Linux. Его также можно скомпилировать из исходного кода.

Okular

Okular — это программа просмотра документов, поставляемая по умолчанию в большинстве дистрибутивов Linux на основе KDE, и она является частью официального стека приложений KDE. Он поддерживает множество форматов файлов, гораздо больше, чем любой другой просмотрщик PDF, перечисленный в этой статье. Другие функции Okular включают поддержку закладок, просмотр эскизов, инструменты аннотации, полнотекстовый поиск, режим презентации, полноэкранный режим и так далее.

Okular можно напрямую загрузить из репозиториев Ubuntu, используя команду, указанную ниже:

$ sudo apt install okular

Вы можете установить Okular прямо из диспетчера пакетов в других дистрибутивах Linux. Его также можно скачать с официального сайта.

Zathura

Zathura — это минималистичный и легкий просмотрщик документов для Linux. В нем нет никаких элементов пользовательского интерфейса, кроме окна, в котором отображается документ PDF. Он имеет «похожие на vim» команды и сочетания клавиш. Вы также можете расширить его, используя плагины для улучшения поддержки других форматов файлов. Подобно Qpdfview, поддержка Zathura PDF также основана на библиотеке Poppler. Другие основные функции Zathura включают настраиваемые закладки, текстовый поиск и поддержку гиперссылок.

Zathura можно загрузить напрямую из репозиториев Ubuntu, используя команду, указанную ниже:

$ sudo apt install zathura

Вы можете установить Zathura прямо из диспетчера пакетов в других дистрибутивах Linux. Его также можно скачать с официального сайта.

Чтобы просмотреть файл PDF с помощью Zathura, используйте команду в следующем формате:

$ zathura $HOME/Downloads/file.pdf

Чтобы просмотреть руководство Затуры, используйте команду ниже:

$ man zathura

Firefox, Chrome и Chromium

Сегодня все основные веб-браузеры имеют встроенную поддержку просмотра файлов PDF. Вы можете загрузить Firefox и Chromium из диспетчера пакетов вашего дистрибутива Linux. Chrome можно скачать и установить с официального сайта. После установки этих браузеров в вашей системе вы можете использовать любую из этих трех команд для просмотра файлов PDF. Вы также можете нажать <CTRL + O>, чтобы открывать файлы PDF из пользовательского интерфейса браузера, даже когда вы не в сети.

$ firefox -private --new-window  ~/path/to/file.pdf

$ chromium-browser --incognito --new-window ~/path/to/file.pdf

$ google-chrome --incognito --new-window ~/path/to/file.pdf

Заключение

Указанные выше программы просмотра PDF-файлов разрабатывались в течение многих лет. Они включают в себя все основные функции, которые вы ожидаете от средства просмотра PDF, а также некоторые дополнительные функции, такие как темный режим и поддержку просмотра других форматов файлов, таких как EPUB, CBZ и DJVU.



2020-12-16T12:37:00
Вопросы читателей

🐧 Как установить права на все каталоги 755 и все файлы 644

Безопасность всегда на первом месте. В системах Linux / Unix прежде всего рекомендуется обеспечить безопасность ваших файлов в ваших системах.

Многие из новичков устанавливают права доступа к файлам в значение 777 на производственных серверах, чтобы избежать каких-либо проблем с разрешениями.

Но они делают большие ошибки, устанавливая разрешения на запись в открытых серверах. Читать

Выборочная маршрутизация сети или разделенное туннелирование через VPN

Все работают из дома, а для многих это удаленная работа на серверах. Мы можем подключиться к ним только через VPN, но это замедляет мой просмотр и видеоконференции.

Мы пытались найти способ использовать VPN специально для сервера и позволить другому трафику двигаться нормально. Вот тогда-то мы и наткнулись на это решение. В этом блоге мы объясним решение шаг за шагом.

ps.: В конце этого блога вы сможете выбрать, какой веб-сайт или IP-адреса вы хотите маршрутизировать через VPN.

Требования:

 

  • Ubuntu (должен работать и на других дистрибутивах Linux)
  • Если вы используете windows, Этот метод работает с подсистемой Windows для Linux. Убедитесь, что у вас есть WSL2, прежде чем продолжить.
  • Openfortivpn
  • Убедитесь, что вы можете подключиться к VPN, используя его.

Шаги для выборочной маршрутизации

1. конфигурационный файл VPN

Этот файл сообщает нашему VPN-клиенту конфигурацию нашего VPN.

Сохраните приведенный ниже конфигурационный файл как vpn-config. conf в любом месте вашего компьютера

host = vpn.iiitd.edu.in

port = 10443

username = <your username>

password = <your pass>

set-routes = 0

set-dns = 0

pppd-use-peerdns = 0

set-routes = 0 указывает, чтобы не делать никаких маршрутов через VPN, теперь мы будем белый список веб-сайтов, чтобы использовать через VPN.

2. Настройка скрипта PPP

Что такое ППС?: PPP-это протокол точка-точка. Linux использует этот протокол для связи по протоколу TCP/IP с вашим интернет-провайдером.

Сейчас мы напишем скрипт, который внесет в белый список определенные домены для прохождения через VPN.

Для создания сценария используйте следующие команды

sudo touch /etc/ppp/ip-up.d/fortivpn

sudo chmod a+x /etc/ppp/ip-up.d/fortivpn

Что такое pppd? Демон PPP (pppd) — это свободно доступная реализация протокола Point-to-Point Protocol (PPP), который работает во многих системах Unix. читайте дальше

Что такое ip-up? /etc/ppp/ip-up-это shell — скрипт, выполняемый pppd при появлении ссылки/интернета. Читать далее

Отредактируйте приведенный выше скрипт с помощью вашего любимого редактора, он будет выглядеть следующим образом:

#!/bin/bash

#

# Whitelist here all domains that need to go through openfortivpn

# Domains and IPs are separated by a space

#

ips='192.168.2.217 192.168.29.151'

domains='example.com example.fr'



let resolved

for domain in $domains; do

  resolved=`dig +short $domain | tail -n1`

  ips="$ips $resolved"

done



for ip in $ips; do

  route add $ip dev ppp0

done

Теперь добавьте IP-адреса и домены, к которым вы хотите получить доступ через VPN.

3. запустите VPN

Следующая команда должна подключить вас к вашему VPN прямо сейчас.

sudo openfortivpn -c vpn-config.conf

Ниже вы можете увидеть маршруты, добавленные для ip-адресов. ppp0-это vpn-интерфейс, а enp2s0-ethernet.

andreyex@andreyex ~> route                                                                  (base)

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

default         _gateway        0.0.0.0         UG    100    0        0 enp2s0

one.one.one.one 0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

103.25.231.4    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

link-local      0.0.0.0         255.255.0.0     U     1000   0        0 enp2s0

192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 enp2s0

192.168.2.217   0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

192.168.29.151  0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

Вот и все! Теперь вы можете работать на своем сервере и наслаждаться быстрым интернетом вместе с ним 🙂

Бонус: автоматический запуск VPN при загрузке

Это довольно раздражает, чтобы войти в VPN каждый раз, прежде чем начать работу. Поэтому мы создали системный сервис для автоматического подключения к VPN при загрузке. Отказ от ответственности: это не будет работать с WSL2

Выполните эти команды для настройки службы

sudo touch /etc/systemd/system/openfortivpn.service

Откройте его с помощью вашего любимого редактора и введите эту конфигурацию.

[Unit]

Description = OpenFortiVPN

After=network-online.target

Documentation=man:openfortivpn(1)



[Service]

Type=idle

ExecStart = /usr/bin/openfortivpn -c <path to your config file>

StandardOutput=file:<any-place-where you want to save your logs>

Restart=always

RestartSec=10



[Install]

WantedBy=multi-user.target

 

Чтобы запустить эту службу, просто запустите ее

sudo systemctl enable openfortivpn

sudo systemctl start openfortivpn

Чтобы проверить, работает ли он

andreyex@andreyex ~> sudo systemctl status openfortivpn

● openfortivpn.service - OpenFortiVPN

   Loaded: loaded (/etc/systemd/system/openfortivpn.service; enabled; vendor preset: enabled)

   Active: active (running) since Sat 2020-04-25 13:22:26 IST; 3h 43min ago

     Docs: man:openfortivpn(1)

 Main PID: 1851 (openfortivpn)

    Tasks: 6 (limit: 4915)

   CGroup: /system.slice/openfortivpn.service

           ├─1851 /usr/bin/openfortivpn -c /home/andreyex/Documents/vpn-configs/iiitd.conf

           └─1852 /usr/sbin/pppd 38400 :1.1.1.1 noipdefault noaccomp noauth default-asyncmap nopcomp



Apr 25 13:22:26 andreyex systemd[1]: Started OpenFortiVPN.

Apr 25 13:22:26 andreyex pppd[1852]: pppd 2.4.7 started by root, uid 0

Apr 25 13:22:26 andreyex pppd[1852]: Using interface ppp0

Apr 25 13:22:26 andreyex pppd[1852]: Connect: ppp0 <--> /dev/pts/0

Apr 25 13:22:27 andreyex pppd[1852]: local  IP address 10.212.134.101

Apr 25 13:22:27 andreyex pppd[1852]: remote IP address 1.1.1.1

 

Спасибо за чтение 🙂 Если это действительно помогло вам, не стесняйтесь ставить лайки, комментировать и делиться этим блогом.

Как показать список всех баз данных в MySQL

При администрировании серверов баз данных MySQL одна из наиболее распространенных задач, которые вам нужно будет выполнить, — это познакомиться со средой. Сюда входят такие задачи, как перечисление баз данных, находящихся на сервере, отображение таблиц конкретной базы данных или получение информации об учетных записях пользователей и их привилегиях.

В этом руководстве объясняется, как отобразить все базы данных на сервере MySQL или MariaDB через командную строку.

Читать

Что Такое Curl. Как работает команда Curl: определение и примеры



























Rate this post

Что такое curl?

На самом деле, curl – это больше чем просто утилита командной строки для Linux или Windows. Это набор библиотек, в которых реализуются базовые возможности работы с URL страницами и передачи файлов. Библиотека поддерживает работу с протоколами: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, а также POP3, IMAP и SMTP. Она отлично подходит для имитации действий пользователя на страницах и других операций с URL адресами.

Поддержка библиотеки curl была добавлена в множество различных языков программирования и платформ. Утилита curl – это независимая обвертка для этой библиотеки. Именно на этой утилите мы и остановимся в этой статье.

Команда curl

Перед тем как перейти к описанию того как может использоваться команда curl linux, давайте разберем саму утилиту и ее основные опции, которые нам понадобятся. Синтаксис утилиты очень прост:

$ curlопции ссылка

Теперь рассмотрим основные опции:

  • -# – отображать простой прогресс-бар во время загрузки;
  • -0 – использовать протокол http 1.0;
  • -1 – использовать протокол шифрования tlsv1;
  • -2 – использовать sslv2;
  • -3 – использовать sslv3;
  • -4 – использовать ipv4;
  • -6 – использовать ipv6;
  • -A – указать свой USER_AGENT;
  • -b – сохранить Cookie в файл;
  • -c – отправить Cookie на сервер из файла;
  • -C – продолжить загрузку файла с места разрыва или указанного смещения;
  • -m – максимальное время ожидания ответа от сервера;
  • -d – отправить данные методом POST;
  • -D – сохранить заголовки, возвращенные сервером в файл;
  • -e – задать поле Referer-uri, указывает с какого сайта пришел пользователь;
  • -E – использовать внешний сертификат SSL;
  • -f – не выводить сообщения об ошибках;
  • -F – отправить данные в виде формы;
  • -G – если эта опция включена, то все данные, указанные в опции -d будут передаваться методом GET;
  • -H – передать заголовки на сервер;
  • -I – получать только HTTP заголовок, а все содержимое страницы игнорировать;
  • -j – прочитать и отправить cookie из файла;
  • -J – удалить заголовок из запроса;
  • -L – принимать и обрабатывать перенаправления;
  • -s – максимальное количество перенаправлений с помощью Location;
  • -o – выводить контент страницы в файл;
  • -O – сохранять контент в файл с именем страницы или файла на сервере;
  • -p – использовать прокси;
  • –proto – указать протокол, который нужно использовать;
  • -R –  сохранять время последнего изменения удаленного файла;
  • -s – выводить минимум информации об ошибках;
  • -S – выводить сообщения об ошибках;
  • -T – загрузить файл на сервер;
  • -v – максимально подробный вывод;
  • -y – минимальная скорость загрузки;
  • -Y – максимальная скорость загрузки;
  • -z – скачать файл, только если он был модифицирован позже указанного времени;
  • -V – вывести версию.

Это далеко не все параметры curl linux, но здесь перечислено все основное, что вам придется использовать.

Команда Curl для Работы с Файлами

Команды Curl могут загружать файлы из удалённой локации. Есть два способа это сделать:

  • -O сохранит файл в текущем рабочем каталоге с тем же именем, что и у удалённого;
  • -o позволяет указать другое имя файла или местоположение.

Вот пример:

curl -O http://testdomain.com/testfile.tar.gz

Приведённая выше команда сохранит файл как testfile.tar.gz.

curl -o newtestfile.tar.gz http://testdomain.com/testfile.tar.gz

А эта команда сохранит его как newtestfile.tar.gz.

Если по какой-либо причине загрузка будет прервана, вы можете возобновить её с помощью следующей команды:

curl -C – -O  http://testdomain.com/testfile.tar.gz

Curl также позволяет загрузить несколько файлов одновременно. Пример:

curl -O http://testdomain.com/testfile.tar.gz -O http://mydomain.com/myfile.tar.gz

Если вы хотите загрузить несколько файлов с нескольких URL, перечислите их все в файле. Команды Curl могут быть объединены с xargs для загрузки различных URL-адресов.

Например, если у нас есть файл allUrls.txt, который содержит список всех URL-адресов для загрузки, то приведённый ниже пример выполнит загрузку всех файлов с этих URL.

xargs –n 1 curl -O < allUrls.txt

Команды Curl для HTTP

Curl также можно использовать c прокси-сервером. Если вы находитесь за прокси-сервером, прослушивающим порт 8090 на sampleproxy.com, загрузите файлы, как показано ниже:

curl -x  sampleproxy.com:8090 -U username:password -O http:// testdomain.com/testfile.tar.gz

В приведённом выше примере вы можете выбросить -U username:password, если прокси-сервер не требует метода аутентификации.

Типичный HTTP-запрос всегда содержит заголовок. Заголовок HTTP отправляет дополнительную информацию об удалённом веб-сервере вместе с фактическим запросом. С помощью инструментов разработчика в браузере вы можете посмотреть сведения о заголовке, а проверить их можно с помощью команды curl.

Пример ниже демонстрирует, как получить информацию о заголовке с веб-сайта.

curl -I www.testdomain.com

Используя curl, вы можете сделать запрос GET и POST. Запрос GET будет выглядеть следующим образом:

curl http://mydomain.com

А вот пример запроса POST:

curl –data “text=Hello” https://myDomain.com/firstPage.jsp

Здесь text=Hello — это параметр запроса POST. Такое поведение похоже на HTML-формы.

Вы также можете указать несколько методов HTTP в одной команде curl. Сделайте это, используя опцию –next, например:

curl –data “text=Hello” https://myDomain.com/firstPage.jsp –next https://myDomain.com/displayResult.jsp

Команда содержит запрос POST, за которым следует запрос GET.

Каждый HTTP-запрос содержит агент пользователя, который отправляется как часть запроса. Он указывает информацию о браузере клиента. По умолчанию запрос содержит curl и номер версии в качестве информации об агенте пользователя. Пример вывода показан ниже:

“GET / HTTP/1.1” 200 “_” ”curl/7/29/0”

Вы можете изменить дефолтную информацию об агенте пользователя, используя следующую команду:

curl -I http://mydomain.com –-user-agent “My new Browser”

Теперь вывод будет выглядеть так:

“GET / HTTP/1.1” 200 “_” ”My new Browser”

Команда Curl и Cookies

Утилиту можно использовать для проверки того, какие файлы cookie загружаются по URL. Допустим вы зашли на https://www.samplewebsite.com, вы можете вывести и сохранить файлы cookie в файл, а затем получить к ним доступ, используя команду cat или редактор Vim.

Вот пример такой команды:

curl –cookie-jar Mycookies.txt https://www.samplewebsite.com /index.html -O

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

curl –cookie Mycookies.txt https://www. samplewebsite.com

Curl и FTP

Утилита поддерживает FTP! Вы можете использовать её для загрузки файлов с удалённого сервера.

curl -u username:password -O ftp://sampleftpserver/testfile.tar.gz

В приведённой выше команде ftp://sampleftpserver — это FTP-сервер, который принимает соединения. Вы можете не указывать имя пользователя и пароль для анонимных FTP-соединений. Введите команду и посмотрите, как заполняется индикатор выполнения.

Вы также можете загружать файлы с помощью этой команды:

curl -u username:password -T testfile.tar.gz ftp://sampleftpserver

Опять же таки, мы можем пропустить имя пользователя и пароль для анонимных FTP-соединений.

Ограничение Скорости Скачивания

Скачивая или загружая данные с помощью Curl, вы не можете знать, насколько большим будет вывод. Вы можете ограничить скорость скачивания, чтобы убедиться, что Curl не ограничивает пропускную способность канала. 

Команда ниже ограничивает скорость скачивания до 100К:

curl –limit-rate 100K http://testdomain.com/samplefile.tar.gz -O

Основной Синтаксис Команды Curl

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

curl [OPTIONS] [URL]

Самый простой пример использования Curl — для отображения содержимого страницы. Приведённая ниже команда отобразит домашнюю страницу testdomain.com.

curl testdomain.com

Эта команда отобразит полный исходный код домашней страницы домена. Если протокол не указан, Curl интерпретирует его как HTTP.

Как пользоваться curl?

Мы рассмотрели все, что касается теории работы с утилитой curl, теперь пришло время перейти к практике, и рассмотреть примеры команды curl.

Загрузка файлов

Самая частая задача – это загрузка файлов linux. Скачать файл очень просто. Для этого достаточно передать утилите в параметрах имя файла или html страницы:

curl https://raw.githubusercontent.com/curl/curl/master/README.md


Но тут вас ждет одна неожиданность, все содержимое файла будет отправлено на стандартный вывод. Чтобы записать его в какой-либо файл используйте:

curl -o readme.txt https://raw.githubusercontent.com/curl/curl/master/README.md


А если вы хотите, чтобы полученный файл назывался так же, как и файл на сервере, используйте опцию -O:

curl -O https://raw.githubusercontent.com/curl/curl/master/README.md


Если загрузка была неожиданно прервана, вы можете ее возобновить:

curl -# -C – -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz


Если нужно, одной командой можно скачать несколько файлов:

curl -O https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README


Еще одна вещь, которая может быть полезной администратору – это загрузка файла, только если он был изменен:

curl -z 21-Dec-17 https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README

Данная команда скачает файл, только если он был изменен после 21 декабря 2017.

Ограничение скорости

Вы можете ограничить скорость загрузки до необходимого предела, чтобы не перегружать сеть с помощью опции -Y:

curl –limit-rate 50K -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz


Здесь нужно указать количество килобайт в секунду, которые можно загружать. Также вы можете разорвать соединение если скорости недостаточно, для этого используйте опцию -Y:

curl -Y 100 -O https://raw.githubusercontent.com/curl/curl/master/README.md

Передача файлов

Загрузка файлов, это достаточно просто, но утилита позволяет выполнять и другие действия, например, отправку файлов на ftp сервер. Для этого существует опция -T:

curl -T login.txt ftp://speedtest.tele2.net/upload/


Или проверим отправку файла по HTTP, для этого существует специальный сервис:

curl -T ~/login.txt http://posttestserver.com/post.php


В ответе утилита сообщит где вы можете найти загруженный файл.

Отправка данных POST

Вы можете отправлять не только файлы, но и любые данные методом POST. Напомню, что этот метод используется для отправки данных различных форм. Для отправки такого запроса используйте опцию -d. Для тестирования будем пользоваться тем же сервисом:

curl -d “field1=val&fileld2=val1″http://posttestserver.com/post.php


Если вас не устраивает такой вариант отправки, вы можете сделать вид, что отправили форму. Для этого есть опция -F:

curl -F “password=@pass;type=text/plain” http://posttestserver.com/post.php


Здесь мы передаем формой поле password, с типом обычный текст, точно так же вы можете передать несколько параметров.

Передача и прием куки

Куки или Cookie используются сайтами для хранения некой информации на стороне пользователя. Это может быть необходимо, например, для аутентификации. Вы можете принимать и передавать Cookie с помощью curl. Чтобы сохранить полученные Cookie в файл используйте опцию -c:

curl -c cookie.txt http://posttestserver.com/post.php

Затем можно отправить cookie curl обратно:

curl -b cookie.txt http://posttestserver.com/post.php

Передача и анализ заголовков

Не всегда нам обязательно нужно содержимое страницы. Иногда могут быть интересны только заголовки. Чтобы вывести только их есть опция -I:

curl -I https://losst.ru


А опция -H позволяет отправить нужный заголовок или несколько на сервер, например, можно передать заголовок If-Modified-Since чтобы страница возвращалась только если она была изменена:

curl -I –хедер ‘If-Modified-Since: Mon, 26 Dec 2016 18:13:12 GMT’ https://losst.ru


Аутентификация curl

Если на сервере требуется аутентификация одного из распространенных типов, например, HTTP Basic или FTP, то curl очень просто может справиться с такой задачей. Для указания данных аутентификации просто укажите их через двоеточие в опции -u:

curl -u ftpuser:ftppass -T – ftp://ftp.testserver.com/myfile_1.txt

Точно так же будет выполняться аутентификация на серверах HTTP.

Использование прокси

Если вам нужно использовать прокси сервер для загрузки файлов, то это тоже очень просто. Достаточно задать адрес прокси сервера в опции -x:

curl -x proxysever.test.com:3128 http://google.co.in

Примеры использования cURL в PHP

GET запрос

$ch = curl_init(‘https://vk.com’);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

$html = curl_exec($ch);

curl_close($ch);

echo $html; // Выведет код страницы vk.comPHP

или

echo file_get_contents(‘https://vk.com’);PHP2

POST запрос

$array = array(

‘login’ => ‘admin’,

‘password’ => ‘1234’

);

$ch = curl_init(‘https://vk.com’);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $array);

// Или предать массив строкой:

// curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($array, ”, ‘&’));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

$html = curl_exec($ch);

curl_close($ch);

echo $html;PHP

file_get_contents() так же умеет отправлять POST запросы:

$хедерs = stream_context_create(array(

‘http’ => array(

‘method’ => ‘POST’,

‘хедер’ => ‘Content-Type: application/x-www-form-urlencoded’ . PHP_EOL,

‘content’ => ‘login=admin&password=1234’,

),

));

echo file_get_contents(‘https://vk.com’, false, $хедерs);PHP3

PUT запрос

$ch = curl_init(‘https://cloud-api.yandex.net/v1/disk/’);

curl_setopt($ch, CURLOPT_PUT, true);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

$html = curl_exec($ch);

curl_close($ch);

echo $html;PHP4

DELETE запрос

HTTP-метод DELETE используется в REST API для удаления объектов.

$ch = curl_init(‘http://site.com/delete/999’);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ‘DELETE’);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_exec($ch);

curl_close($ch);PHP5

Скачивание файлов

Curl позволяет сохранить результат сразу в файл, указав указатель на открытый файл в параметре CURLOPT_FILE.

$file_name = __DIR__ . ‘/file.html’;

$file = @fopen($file_name, ‘w’);

$ch = curl_init(‘http://yandex.ru’);

curl_setopt($ch, CURLOPT_FILE, $file);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_exec($ch);

curl_close($ch);

fclose($file);PHP

Второй вариант:

$ch = curl_init(‘http://yandex.ru’);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

$html = curl_exec($ch);

curl_close($ch);

file_put_contents(__DIR__ . ‘/file.html’, $html);PHP7

Отправка файлов на другой сервер

Отправка файлов осуществляется методом POST:

$ch = curl_init(‘https://vk.com’);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, array(‘photo’ => ‘@’ . __DIR__ . ‘/image.png’);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

$html = curl_exec($ch);

curl_close($ch);PHP

С PHP 5.5 такой метод загрузки файлов вызывает ошибку, поэтому следует применять CURLFile.

$curl_file = curl_file_create(__DIR__ . ‘/image.png’, ‘mimetype’ , ‘image.png’);

$ch = curl_init(‘https://vk.com’);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, array(‘photo’ => $curl_file));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

$res = curl_exec($ch);

curl_close($ch); PHP

Также через curl можно отправить сразу несколько файлов:

$curl_files = array(

‘photo[0]’ => curl_file_create(__DIR__ . ‘/image.png’, ‘mimetype’ , ‘image.png’),

‘photo[1]’ => curl_file_create(__DIR__ . ‘/image-2.png’, ‘mimetype’ , ‘image-2.png’)

);

$ch = curl_init(‘https://vk.com’);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $curl_files);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

$res = curl_exec($ch);

curl_close($ch);PHP

Еще файлы можно отправить методом PUT, например так загружаются файлы в REST API Яндекс Диска.

$file = __DIR__ . ‘/image.jpg’;

$fp = fopen($file, ‘r’);

$ch = curl_init(‘https://cloud-api.yandex.net/v1/disk/’);

curl_setopt($ch, CURLOPT_PUT, true);

curl_setopt($ch, CURLOPT_UPLOAD, true);

curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file));

curl_setopt($ch, CURLOPT_INFILE, $fp);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_exec($ch);

curl_close($ch);PHP6

8 примеров использования cURL вместе с PHP

1. Проверяем доступность определённого веб сайта

Как узнать, доступен ли определённый веб сайт? cURL поможет ответить на данный вопрос. Данный скрипт можно использовать совместно с планировщиком для мониторинга сайта.

Замените URL в строке 3 на тот, который вам нужен.  Скопируйте код на свою страницу, и станет известно, доступен ли указанный сайт.

2. Замена cURL для функции file_get_contents()

Функция file_get_contents() очень полезная, но на многих хостингах она отключена. С помощью cURL можно написать функцию, которая будет работать в точности как file_get_contents().

function file_get_contents_curl($url) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Устанавливаем параметр, чтобы curl возвращал данные, вместо того, чтобы выводить их в браузер.

curl_setopt($ch, CURLOPT_URL, $url);

$data = curl_exec($ch);

curl_close($ch);

return $data;

}

3. Получаем последний статус Twitter

С помощью PHP и cURL очень просто получить статус определённого пользователя. Данную информацию можно выводить в блоге.

function get_status($twitter_id, $hyperlinks = true) { $c = curl_init(); curl_setopt($c, CURLOPT_URL, “http://twitter.com/statuses/user_timeline/$twitter_id.xml?count=1”); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); $src = curl_exec($c); curl_close($c); preg_match(‘/(.*)</text>/’, $src, $m); $status = htmlentities($m[1]); if( $hyperlinks ) $status = ereg_replace(“[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]”, ‘’, $status); return($status); }

Использовать функцию очень просто:

echo get_status(‘catswhocode’);

4. Twitter: проверяем отношения между двумя пользователями

Если вам нужно узнать, читает ли ваши твиты определенный пользователь, то можно задействовать API Twitter. Данный скрипт выводит true, если два пользователя, указанные на строчках 17 и 18, находятся в дружеских отношениях на Twitter. В противном случае возвращается false.

function make_request($url) {

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

$result = curl_exec($ch);

curl_close($ch);

return $result;

}

/* Получаем соответствие */

function get_match($regex,$content) {

preg_match($regex,$content,$matches);

return $matches[1];

}

/* Персоны для проверки */

$person1 = ‘phpsnippets’;

$person2 = ‘catswhocode’;

/* Отправляем запрос на twitter */

$url = ‘https://api.twitter.com/1/friendships/exist’;

$format = ‘xml’;

/* Проверка */

$persons12 = make_request($url.’.’.$format.’?user_a=’.$person1.’&user_b=’.$person2);

$result = get_match(‘/(.*)/isU’,$persons12);

echo $result; // Возвращаем “true” или “false”

5. Загружаем и сохраняем изображения со страницы с помощью cURL

Данная функция может быть очень полезна: задаем ей URL страницы и она сохраняет все изображения с нее на вашем сервере.

function getImages($html) {

$matches = array();

$regex = ‘~http://somedomain.com/images/(.*?).jpg~i’;

preg_match_all($regex, $html, $matches);

foreach ($matches[1] as $img) {

saveImg($img);

}

}

function saveImg($name) {

$url = ‘http://somedomain.com/images/’.$name.’.jpg’;

$data = get_data($url);

file_put_contents(‘photos/’.$name.’.jpg’, $data);

}

$i = 1;

$l = 101;

while ($i 6. Конвертируем валюту с помощью cURl и Google

Пересчет валюты достаточно простое дело, но курсы достаточно часто изменяются, поэтому приходится использовать сервисы, подобные Google, для получения текущих значений курса пересчета. Функция currency() получает 3 параметра: исходная валюта, целевая валюта и сумма.

function currency($from_Currency,$to_Currency,$amount) {

$amount = urlencode($amount);

$from_Currency = urlencode($from_Currency);

$to_Currency = urlencode($to_Currency);

$url = “http://www.google.com/ig/calculator?hl=en&q=$amount$from_Currency=?$to_Currency”;

$ch = curl_init();

$timeout = 0;

curl_setopt ($ch, CURLOPT_URL, $url);

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_USERAGENT , “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)”);

curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$rawdata = curl_exec($ch);

curl_close($ch);

$data = explode(‘”‘, $rawdata);

$data = explode(‘ ‘, $data[‘3’]);

$var = $data[‘0’];

return round($var,2);

}

7. Получаем информацию о размере файла с помощью cURL

Как определить размер определенного файла, расположенного на другом сервере? Поможет следующая функция. Она получает 3 параметра: URL файла, и (если требуется) имя пользователя и пароль.

function remote_filesize($url, $user = “”, $pw = “”){

ob_start();

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_HEADER, 1);

curl_setopt($ch, CURLOPT_NOBODY, 1);

if(!empty($user) && !empty($pw))

{

$хедерs = array(‘Authorization: Basic ‘ . base64_encode(“$user:$pw”));

curl_setopt($ch, CURLOPT_HTTPHEADER, $хедерs);

}

$ok = curl_exec($ch);

curl_close($ch);

$head = ob_get_contents();

ob_end_clean();

$regex = ‘/Content-Length:s([0-9].+?)s/’;

$count = preg_match($regex, $head, $matches);

return isset($matches[1]) ? $matches[1] : “unknown”;

}

8. Загрузка через FTP с помощью cURL

PHP имеет библиотеку FTP library, но также можно использовать cURL для загрузки файлов на FTP сервер. Вот рабочий пример:

// Открываем файл

$file = fopen(“/path/to/file”, “r”);

// URL содержит большую часть нужной информации

$url = “ftp://username:password@mydomain.com:21/path/to/new/file”;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// Устанавливаем опции

curl_setopt($ch, CURLOPT_UPLOAD, 1);

curl_setopt($ch, CURLOPT_INFILE, $fp);

curl_setopt($ch, CURLOPT_INFILESIZE, filesize(“/path/to/file”));

// Устанавливаем режим ASCII (то есть – файл текстовой)

curl_setopt($ch, CURLOPT_FTPASCII, 1);

$output = curl_exec($ch);

curl_close($ch);

Данный урок подготовлен для вас командой сайта ruseller.com

Источник урока: http://www.catswhocode.com/blog/amazing-things-to-do-with-php-and-curl

Перевел: Сергей Фастунов

Урок создан: 14 Февраля 2012

Просмотров: 124011

Правила перепечатки

5 последних уроков рубрики “PHP”

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

  • Подборка PHP песочниц

    Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

    Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии, оценивать уроки и сохранять их в личном кабинете


    • 14 Февраля 2012 12:26


    [spoiler title=”Источники”]

    • https://losst.ru/kak-polzovatsya-curl
    • https://www.hostinger.ru/rukovodstva/chto-takoe-curl/
    • https://snipp.ru/php/curl
    • https://ruseller.com/lessons.php?id=1370&rub=37


    [/spoiler]


    2020-12-15T15:03:46
    Linux