Shlink là một trình rút gọn URL mã nguồn mở và tự lưu trữ được viết bằng PHP. Nó được sử dụng để tạo và quản lý các URL ngắn từ dòng lệnh. Nó cho phép bạn theo dõi tất cả các lượt truy cập vào các URL ngắn của mình bao gồm vị trí, trình duyệt hoặc người giới thiệu. Nó có thể được tích hợp với các công cụ của bên thứ ba bằng API Shlink. Nó cung cấp giao diện dòng lệnh để rút gọn URL.
Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt Shlink trên Ubuntu 20.04.
Sau khi tất cả các gói được cập nhật, bạn có thể tiến hành bước tiếp theo.
Sau khi tất cả các gói được cài đặt, bạn có thể tiến hành bước tiếp theo.
Sau khi kết nối, hãy tạo một cơ sở dữ liệu và người dùng bằng lệnh sau:
Tiếp theo, xóa các đặc quyền và thoát khỏi MariaDB bằng lệnh sau:
Sau khi tải xuống hoàn tất, hãy giải nén tệp đã tải xuống bằng lệnh sau:
Tiếp theo, di chuyển thư mục đã giải nén đến thư mục gốc web Nginx:
Tiếp theo, hãy thiết lập quyền và quyền sở hữu phù hợp bằng lệnh sau:
Bạn sẽ được yêu cầu chọn cơ sở dữ liệu như hiển thị bên dưới:
Chọn bất kỳ tùy chọn nào và nhấn Enter. Bạn sẽ được yêu cầu cung cấp tên cơ sở dữ liệu như hiển thị bên dưới:
Cung cấp tên cơ sở dữ liệu của bạn hoặc nhấn Enter để chọn mặc định. Bạn sẽ được yêu cầu cung cấp máy chủ cơ sở dữ liệu:
Cung cấp máy chủ cơ sở dữ liệu của bạn hoặc nhấn Enter để chọn mặc định. Bạn sẽ được yêu cầu cung cấp cổng cơ sở dữ liệu:
Cung cấp cổng cơ sở dữ liệu của bạn hoặc nhấn Enter để chọn mặc định. Bạn sẽ được yêu cầu cung cấp tên người dùng cơ sở dữ liệu của mình:
Cung cấp tên người dùng cơ sở dữ liệu của bạn và nhấn Enter. Bạn sẽ được yêu cầu cung cấp mật khẩu người dùng cơ sở dữ liệu của mình:
Cung cấp mật khẩu người dùng cơ sở dữ liệu của bạn và nhấn Enter. Bạn sẽ được yêu cầu cung cấp socket Unix.
Để trống và nhấn Enter. Bạn sẽ được yêu cầu cung cấp tên miền:
Cung cấp tên miền của bạn và nhấn Enter. Bạn sẽ được yêu cầu chọn Schema:
Chọn một tùy chọn và nhấn Enter. Bạn sẽ được yêu cầu xác thực các URL dài:
Chọn tùy chọn mặc định và nhấn Enter. Bạn sẽ được yêu cầu cung cấp độ dài của các mã ngắn được tạo:
Chọn giá trị mặc định và nhấn Enter. Bạn sẽ thấy đầu ra sau:
Chọn câu trả lời mặc định và nhấn Enter. Bạn sẽ thấy đầu ra sau:
Để trống và nhấn Enter. Bạn sẽ thấy đầu ra sau:
Chọn bất kỳ tùy chọn nào và nhấn Enter. Bạn sẽ thấy đầu ra sau:
Chọn các giá trị mặc định và nhấn Enter. Bạn sẽ thấy đầu ra sau:
Chọn tùy chọn mặc định và nhấn Enter. Bạn sẽ thấy kết quả đầu ra sau:
Chỉ cần nhấn Enter. Bạn sẽ thấy kết quả đầu ra sau:
Chọn tùy chọn mặc định và nhấn Enter. Bạn sẽ thấy kết quả đầu ra sau:
Chọn tùy chọn mặc định và nhấn Enter. Bạn sẽ thấy kết quả đầu ra sau:
Chọn tùy chọn mặc định và nhấn Enter. Bạn sẽ thấy kết quả đầu ra sau:
Chọn tùy chọn mặc định và nhấn Enter. Bạn sẽ thấy kết quả đầu ra sau:
Chọn tùy chọn mặc định và nhấn Enter. Bạn sẽ thấy kết quả đầu ra sau:
Cung cấp tên miền của bạn và nhấn Enter. Bạn sẽ thấy đầu ra sau:
Cung cấp tên miền của bạn và nhấn Enter. Bạn sẽ thấy đầu ra sau:
Cung cấp tên miền của bạn và nhấn Enter. Bạn sẽ thấy đầu ra sau:
Chọn tùy chọn mặc định và nhấn Enter. Bạn sẽ thấy kết quả đầu ra sau:
Chọn tùy chọn mặc định và nhấn Enter. Bạn sẽ thấy kết quả đầu ra sau:
Chọn tùy chọn mặc định và nhấn Enter. Bạn sẽ thấy kết quả đầu ra sau:
Thêm các dòng sau:
Lưu và đóng tệp, sau đó xác minh Nginx xem có lỗi nào không bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Tiếp theo, khởi động lại dịch vụ Nginx để áp dụng các thay đổi:
Bạn cũng có thể xác minh trạng thái của Nginx bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Bây giờ bạn có thể cài đặt máy khách Shlink để rút gọn URL.
Bạn cũng có thể tạo URL rút gọn trên máy chủ của mình từ dòng lệnh:
Để liệt kê tất cả các URL rút gọn, hãy chạy lệnh sau:
Để hiển thị bất kỳ thông tin trợ giúp nào, hãy chạy lệnh sau lệnh:
Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt Shlink trên Ubuntu 20.04.
Điều kiện tiên quyết
- Máy chủ chạy Ubuntu 20.04.
- Tên miền hợp lệ được trỏ bằng IP máy chủ của bạn.
- Mật khẩu gốc được cấu hình trên máy chủ.
Bắt đầu
Trước tiên, hãy cập nhật các gói hệ thống lên phiên bản đã cập nhật bằng cách chạy lệnh sau:
Mã:
apt-get update -y
Cài đặt LEMP Server
Trước tiên, hãy cài đặt Nginx, PHP, MariaDB và các gói cần thiết khác bằng lệnh sau:
Mã:
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
Tạo cơ sở dữ liệu Shlink
Shlink sử dụng MariaDB làm cơ sở dữ liệu phụ trợ. Vì vậy, bạn sẽ cần tạo một cơ sở dữ liệu và người dùng cho Shlink. Trước tiên, hãy kết nối với MariaDB bằng lệnh sau:
Mã:
mysql
Mã:
MariaDB [(none)]> CREATE DATABASE shlink;
MariaDB [(none)]> GRANT ALL ON shlink.* TO 'shlink'@'localhost' IDENTIFIED BY 'password';
Mã:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Tải xuống Shlink
Trước tiên, hãy tải xuống phiên bản Shlink mới nhất từ trang tải xuống chính thức của họ:
Mã:
wget https://github.com/shlinkio/shlink/releases/download/v2.7.1/shlink2.7.1_php7.4_dist.zip
Mã:
unzip shlink2.7.1_php7.4_dist.zip
Mã:
mv shlink2.7.1_php7.4_dist /var/www/html/shlink
Mã:
chown -R www-data:www-data /var/www/html/shlink/
chmod -R 755 /var/www/html/shlink/
Cài đặt Shlink
Tiếp theo, chạy lệnh sau để bắt đầu cài đặt:
Mã:
sudo -u www-data php7.4 /var/www/html/shlink/bin/install
Mã:
Chào mừng đến với Shlink!! Công cụ này sẽ hướng dẫn bạn trong suốt quá trình cài đặt.CƠ SỞ DỮ LIỆU======= Chọn loại cơ sở dữ liệu [MySQL]: [0] MySQL [1] MariaDB [2] PostgreSQL [3] MicrosoftSQL [4] SQLite > 1
Mã:
Tên cơ sở dữ liệu [shlink]: >
Mã:
Máy chủ cơ sở dữ liệu [localhost]: >
Mã:
Cổng cơ sở dữ liệu [3306]: >
Mã:
Tên người dùng cơ sở dữ liệu: > shlink
Mã:
Mật khẩu cơ sở dữ liệu: > mật khẩu
Mã:
Socket Unix (để trống để không sử dụng socket): >
Mã:
URL SHORTENER============= Tên miền mặc định cho các URL ngắn được tạo: > shlink.linuxbuz.com
Mã:
Chọn schema cho các URL ngắn được tạo [http]: [0] http [1] https > 0
Mã:
Bạn có muốn xác thực các URL dài bằng mã trạng thái HTTP 200 khi phản hồi không? (có/không) [có]: >
Mã:
Độ dài mặc định bạn muốn mã ngắn được tạo ra là bao nhiêu? (Bạn vẫn có thể ghi đè giá trị này trên mọi URL ngắn đã tạo) [5]: >
Mã:
Bạn có muốn Shlink giải quyết tiêu đề URL ngắn dựa trên thẻ tiêu đề của URL dài (nếu có) không? Nếu không, tiêu đề sẽ được để trống trừ khi được cung cấp rõ ràng. (có/không) [không]: >
Mã:
Cung cấp khóa cấp phép GeoLite2. (Để trống để sử dụng khóa mặc định, nhưng bạn nên lấy khóa riêng. Truy cập https://shlink.io/documentation/geolite-license-key để biết cách lấy khóa): >
Mã:
Bạn muốn URL ngắn của mình có loại chuyển hướng nào? [Tất cả các lượt truy cập sẽ luôn được theo dõi. Không tốt cho SEO.]: [302] Tất cả các lượt truy cập sẽ luôn được theo dõi. Không tốt cho SEO. [301] Tùy chọn tốt nhất cho SEO. Chuyển hướng sẽ được lưu trong bộ nhớ đệm trong một khoảng thời gian ngắn, khiến một số lượt truy cập không được theo dõi. > 301
Mã:
Bạn muốn khách truy cập lưu các lượt chuyển hướng của mình trong bộ nhớ đệm trong bao lâu (tính bằng giây)? [30]: >
Mã:
THEO DÕI======== Bạn có muốn theo dõi các lượt truy cập mồ côi không? (lượt truy cập đến URL cơ sở, URL ngắn không hợp lệ hoặc các URL "không tìm thấy" khác) (có/không) [có]: >
Mã:
Cung cấp tên tham số mà bạn có thể sử dụng để tắt theo dõi theo yêu cầu cụ thể đối với URL ngắn (để trống và tính năng này sẽ không được bật): >
Mã:
Bạn có muốn tắt hoàn toàn theo dõi lượt truy cập không? (có/không) [không]: >
Mã:
Bạn có muốn tắt theo dõi địa chỉ IP của khách truy cập không? (có/không) [không]: >
Mã:
Bạn có muốn ẩn danh địa chỉ IP từ xa của khách truy cập trước khi lưu vào cơ sở dữ liệu không? (có/không) [có]: >
Mã:
Bạn có muốn tắt theo dõi "User Agents" của khách truy cập không? (có/không) [không]: >
Mã:
Bạn có muốn tắt theo dõi "Referrers" của khách truy cập không? (có/không) [không]: >
Mã:
REDIRECTS========= URL tùy chỉnh để chuyển hướng đến khi người dùng truy cập URL cơ sở của Shlink (Nếu không cung cấp giá trị nào, người dùng sẽ thấy trang "404 not found" mặc định): > http://shlink.linuxbuz.com
Mã:
URL tùy chỉnh để chuyển hướng đến khi người dùng truy cập vào URL ngắn không hợp lệ (Nếu không cung cấp giá trị, người dùng sẽ thấy trang "404 not found" mặc định): > http://shlink.linuxbuz.com
Mã:
URL tùy chỉnh để chuyển hướng đến khi người dùng truy cập vào URL không tìm thấy khác với URL ngắn không hợp lệ (Nếu không cung cấp giá trị, người dùng sẽ thấy trang "404 not found" mặc định): > http://shlink.linuxbuz.com
Mã:
ỨNG DỤNG=========== Bạn có muốn bật kiểm tra an toàn để không cho phép xóa URL ngắn sau khi nhận được một lượng truy cập cụ thể không? (có/không) [có]: >
Mã:
Số lượt truy cập mà hệ thống không cho phép xóa URL ngắn là bao nhiêu? [15]: >
Mã:
Đường dẫn nào sẽ phục vụ shlink? (Để trống nếu bạn định phục vụ shlink từ gốc của tên miền) []: >
Mã:
TÍCH HỢP============ Cung cấp danh sách các URI máy chủ redis được phân tách bằng dấu phẩy sẽ được sử dụng cho mục đích lưu trữ đệm chia sẻ trong bối cảnh nhiều phiên bản shlink (Để trống nếu bạn không muốn sử dụng bộ đệm redis): > Cấu hình tùy chỉnh được tạo đúng cách!Đang khởi tạo cơ sở dữ liệu... Thành công!Đang cập nhật cơ sở dữ liệu... Thành công!Đang tạo proxy... Thành công!Đang tải xuống tệp db GeoLite2... Thành công! [OK] Cài đặt hoàn tất!
Cấu hình Nginx cho Shlink
Tiếp theo, bạn sẽ cần tạo tệp máy chủ ảo Nginx cho Shlink. Bạn có thể tạo tệp này bằng lệnh sau:
Mã:
nano /etc/nginx/conf.d/shlink.conf
Mã:
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 / { # thử phục vụ tệp trực tiếp, chuyển sang app.php try_files $uri /index.php$is_args$args; } # chuyển hướng toàn bộ một số thư mục 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; }}
Mã:
nginx -t
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: thử nghiệm tệp cấu hình /etc/nginx/nginx.conf thành công
Mã:
systemctl restart nginx
Mã:
systemctl status nginx
Mã:
? nginx.service - Máy chủ web hiệu suất cao và máy chủ proxy ngược Đã tải: đã tải (/lib/systemd/system/nginx.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ 4, 2021-06-02 05:28:30 UTC; 4 giây trước Tài liệu: man:nginx(8) Quy trình: 25639 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Quy trình: 25653 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) PID chính: 25655 (nginx) Nhiệm vụ: 2 (giới hạn: 2353) Bộ nhớ: 2,6M CGroup: /system.slice/nginx.service ??25655 nginx: tiến trình chính /usr/sbin/nginx -g daemon on; master_process on; ??25656 nginx: tiến trình công nhân02/06 05:28:29 ubuntu2004 systemd[1]: Đang khởi động Một máy chủ web hiệu suất cao và một máy chủ proxy ngược...02/06 05:28:30 ubuntu2004 systemd[1]: Đã khởi động Một máy chủ web hiệu suất cao và một máy chủ proxy ngược.
Bạn cũng có thể tạo URL rút gọn trên máy chủ của mình từ dòng lệnh:
Mã:
sudo -u www-data php7.4 /var/www/html/shlink/bin/cli short-url:generate
Mã:
sudo -u www-data php7.4 /var/www/html/shlink/bin/cli short-url:list
Mã:
sudo -u www-data php7.4 /var/www/html/shlink/bin/cli