Как установить Shlink URL Shortener с Nginx на Ubuntu 20.04
На этой странице
- Предпосылки
- Начало работы
- Установить сервер LEMP
- Создать базу данных Shlink
- Скачать Шлинк
- Установить Шлинк
- Настройка Nginx для Shlink
- Заключение
Shlink — это самостоятельный сокращатель URL-адресов с открытым исходным кодом, написанный на PHP. Он используется для создания и управления короткими URL-адресами из командной строки. Это позволяет отслеживать все посещения ваших коротких URL-адресов, включая местоположение, браузер или реферер. Его можно интегрировать со сторонними инструментами с помощью API Shlink. Он предоставляет интерфейс командной строки для сокращения URL-адресов.
В этом уроке я покажу вам, как установить Shlink на Ubuntu 20.04.
Предпосылки
- Сервер под управлением Ubuntu 20.04.
- Действительное доменное имя, указанное с IP-адресом вашего сервера.
- На сервере настроен пароль root.
Начиная
Сначала обновите системные пакеты до обновленной версии, выполнив следующую команду:
apt-get update -y
Как только все пакеты будут обновлены, вы можете перейти к следующему шагу.
Установить LEMP-сервер
Сначала установите Nginx, PHP, MariaDB и другие необходимые пакеты с помощью следующей команды:
apt-get install nginx mariadb-server php-apcu php7.4 php7.4-fpm php7.4-mysql php7.4-gd php7.4-common php7.4-curl php7.4-intl php7.4-gmp php7.4-xml php-dev php-pear unzip -y
После установки всех пакетов можно переходить к следующему шагу.
Создать базу данных Shlink
Shlink использует MariaDB в качестве базы данных. Итак, вам нужно будет создать базу данных и пользователя для Shlink. Сначала подключитесь к MariaDB с помощью следующей команды:
mysql
После подключения создайте базу данных и пользователя с помощью следующей команды:
MariaDB [(none)]> CREATE DATABASE shlink;
MariaDB [(none)]> GRANT ALL ON shlink.* TO 'shlink'@'localhost' IDENTIFIED BY 'password';
Затем сбросьте привилегии и выйдите из MariaDB с помощью следующей команды:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Скачать Шлинк
Сначала загрузите последнюю версию Shlink с официальной страницы загрузки:
wget https://github.com/shlinkio/shlink/releases/download/v2.7.1/shlink2.7.1_php7.4_dist.zip
После завершения загрузки разархивируйте загруженный файл с помощью следующей команды:
unzip shlink2.7.1_php7.4_dist.zip
Затем переместите извлеченный каталог в корневой веб-каталог Nginx:
mv shlink2.7.1_php7.4_dist /var/www/html/shlink
Затем установите правильное разрешение и право собственности с помощью следующей команды:
chown -R www-data:www-data /var/www/html/shlink/
chmod -R 755 /var/www/html/shlink/
Установить Шлинк
Затем выполните следующую команду, чтобы начать установку:
sudo -u www-data php7.4 /var/www/html/shlink/bin/install
Вам будет предложено выбрать базу данных, как показано ниже:
Welcome to Shlink!! This tool will guide you through the installation process. DATABASE ======== Select database type [MySQL]: [0] MySQL [1] MariaDB [2] PostgreSQL [3] MicrosoftSQL [4] SQLite > 1
Выберите любой вариант и нажмите Enter. Вам будет предложено указать имя базы данных, как показано ниже:
Database name [shlink]: >
Укажите имя вашей базы данных или нажмите Enter, чтобы выбрать значение по умолчанию. Вам будет предложено указать хост базы данных:
Database host [localhost]: >
Укажите хост вашей базы данных или нажмите Enter, чтобы выбрать значение по умолчанию. Вам будет предложено указать порт базы данных:
Database port [3306]: >
Укажите порт базы данных или нажмите Enter, чтобы выбрать порт по умолчанию. Вам будет предложено указать имя пользователя базы данных:
Database username: > shlink
Укажите имя пользователя базы данных и нажмите Enter. Вам будет предложено ввести пароль пользователя базы данных:
Database password: > password
Введите пароль пользователя базы данных и нажмите Enter. Вас попросят указать сокет Unix.
Unix socket (leave empty to not use a socket): >
Оставьте его пустым и нажмите Enter. Вас попросят указать доменное имя:
URL SHORTENER ============= Default domain for generated short URLs: > shlink.linuxbuz.com
Укажите свое доменное имя и нажмите Enter. Вам будет предложено выбрать схему:
Select schema for generated short URLs [http]: [0] http [1] https > 0
Выберите вариант и нажмите Enter. Вам будет предложено проверить длинные URL-адреса:
Do you want to validate long urls by 200 HTTP status code on response? (yes/no) [yes]: >
Выберите вариант по умолчанию и нажмите Enter. Вам будет предложено указать длину сгенерированных шорткодов:
What is the default length you want generated short codes to have? (You will still be able to override this on every created short URL) [5]: >
Выберите значение по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:
Do you want Shlink to resolve the short URL title based on the long URL 's title tag (if any)? Otherwise, it will be kept empty unless explicitly provided. (yes/no) [no]: >
Выберите ответ по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:
Provide a GeoLite2 license key. (Leave empty to use default one, but it is strongly recommended to get your own. Go to https://shlink.io/documentation/geolite-license-key to know how to get it): >
Оставьте его пустым и нажмите Enter. Вы должны увидеть следующий вывод:
What kind of redirect do you want your short URLs to have? [All visits will always be tracked. Not that good for SEO.]: [302] All visits will always be tracked. Not that good for SEO. [301] Best option for SEO. Redirect will be cached for a short period of time, making some visits not to be tracked. > 301
Выберите любой вариант и нажмите Enter. Вы должны увидеть следующий вывод:
How long (in seconds) do you want your redirects to be cached by visitors? [30]: >
Выберите значения по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:
TRACKING ======== Do you want track orphan visits? (visits to the base URL, invalid short URLs or other "not found" URLs) (yes/no) [yes]: >
Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:
Provide a parameter name that you will be able to use to disable tracking on specific request to short URLs (leave empty and this feature won't be enabled): >
Просто нажмите Enter. Вы должны увидеть следующий вывод:
Do you want to completely disable visits tracking? (yes/no) [no]: >
Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:
Do you want to disable tracking of visitors' IP addresses? (yes/no) [no]: >
Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:
Do you want visitors' remote IP addresses to be anonymized before persisting them to the database? (yes/no) [yes]: >
Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:
Do you want to disable tracking of visitors' "User Agents"? (yes/no) [no]: >
Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:
Do you want to disable tracking of visitors' "Referrers"? (yes/no) [no]: >
Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:
REDIRECTS ========= Custom URL to redirect to when a user hits Shlink's base URL (If no value is provided, the user will see a default "404 not found" page): > http://shlink.linuxbuz.com
Укажите свое доменное имя и нажмите Enter. Вы должны увидеть следующий вывод:
Custom URL to redirect to when a user hits an invalid short URL (If no value is provided, the user will see a default "404 not found" page): > http://shlink.linuxbuz.com
Укажите свое доменное имя и нажмите Enter. Вы должны увидеть следующий вывод:
Custom URL to redirect to when a user hits a not found URL other than an invalid short URL (If no value is provided, the user will see a default "404 not found" page): > http://shlink.linuxbuz.com
Укажите свое доменное имя и нажмите Enter. Вы должны увидеть следующий вывод:
APPLICATION =========== Do you want to enable a safety check which will not allow short URLs to be deleted after receiving a specific amount of visits? (yes/no) [yes]: >
Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:
What is the amount of visits from which the system will not allow short URLs to be deleted? [15]: >
Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:
What is the path from which shlink is going to be served? (Leave empty if you plan to serve shlink from the root of the domain) []: >
Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:
INTEGRATIONS ============ Provide a comma-separated list of redis server URIs which will be used for shared caching purposes under shlink multi-instance contexts (Leave empty if you don't want to use redis cache): > Custom configuration properly generated! Initializing database... Success! Updating database... Success! Generating proxies... Success! Downloading GeoLite2 db file... Success! [OK] Installation complete!
Настройте Nginx для Shlink
Далее вам нужно будет создать файл виртуального хоста Nginx для Shlink. Вы можете создать его с помощью следующей команды:
nano /etc/nginx/conf.d/shlink.conf
Добавьте следующие строки:
server { listen 80; server_name shlink.example.com; root /var/www/html/shlink/public; error_log /var/log/nginx/shlink.error; access_log /var/log/nginx/shlink.access; index index.php index.html index.htm index.nginx-debian.html; location / { # try to serve file directly, fallback to app.php try_files $uri /index.php$is_args$args; } # redirect some entire folders rewrite ^/(vendor|translations|build)/.* /index.php break; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Сохраните и закройте файл, затем проверьте Nginx на наличие ошибок с помощью следующей команды:
nginx -t
Вы должны получить следующий результат:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Затем перезапустите службу Nginx, чтобы применить изменения:
systemctl restart nginx
Вы также можете проверить статус Nginx с помощью следующей команды:
systemctl status nginx
Вы должны получить следующий результат:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2021-06-02 05:28:30 UTC; 4s ago Docs: man:nginx(8) Process: 25639 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 25653 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 25655 (nginx) Tasks: 2 (limit: 2353) Memory: 2.6M CGroup: /system.slice/nginx.service ??25655 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??25656 nginx: worker process Jun 02 05:28:29 ubunt4 systemd[1]: Starting A high performance web server and a reverse proxy server... Jun 02 05:28:30 ubunt4 systemd[1]: Started A high performance web server and a reverse proxy server.
Теперь вы можете установить настроенный клиент Shlink, чтобы сократить URL-адрес.
Вы также можете сгенерировать короткий URL-адрес на своем сервере из командной строки:
sudo -u www-data php7.4 /var/www/html/shlink/bin/cli short-url:generate
Чтобы просмотреть все короткие URL-адреса, выполните следующую команду:
sudo -u www-data php7.4 /var/www/html/shlink/bin/cli short-url:list
Чтобы отобразить любую справочную информацию, выполните следующую команду:
sudo -u www-data php7.4 /var/www/html/shlink/bin/cli
Заключение
Поздравляем! вы успешно установили сокращатель URL-адресов Shlink на Ubuntu 20.04. Теперь вы можете сократить URL-адрес с помощью интерфейса командной строки или веб-клиента.