Đăng bởi Để lại phản hồi

Git – Cài đặt trên Centos

1. Cài Git bằng dnf/yum (Đơn giản nhất)

CentOS 7

sudo yum install git -y

CentOS 8 / CentOS Stream 8 / CentOS Stream 9

sudo dnf install git -y

Kiểm tra:

git --version

Nhược điểm: phiên bản Git thường hơi cũ. Nếu bạn muốn Git mới hơn → xem Cách 2.


2. Cài Git bản mới nhất từ IUS (cho CentOS 7/8/Stream)

(IUS có phiên bản Git mới hơn repo mặc định)

Cài EPEL + IUS

CentOS 7

sudo yum install epel-release -y
sudo yum install https://repo.ius.io/ius-release-el7.rpm -y

CentOS Stream 8

sudo dnf install epel-release -y
sudo dnf install https://repo.ius.io/ius-release-el8.rpm -y

Cài Git mới:

sudo dnf install git236 -y

(hoặc git224, git222 tùy repo hỗ trợ)

Kiểm tra:

git --version

3. Cài Git bản mới nhất từ source (mới nhất trên GitHub)

(Áp dụng khi bạn cần Git 2.x mới nhất)

Cài dependencies:

sudo dnf groupinstall "Development Tools" -y
sudo dnf install wget curl-devel expat-devel gettext-devel openssl-devel zlib-devel -y

Tải bản mới nhất:

wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.45.1.tar.gz
tar -xvf git-2.45.1.tar.gz
cd git-2.45.1

Build:

make prefix=/usr/local all
sudo make prefix=/usr/local install

Kiểm tra:

git --version

4. Cấu hình Git sau khi cài

git config --global user.name "Your Name"
git config --global user.email "you@example.com"

Kiểm tra danh sách config:

git config --list

✅ 5 Cách cấu hình token của github

  1. Tạo Personal Access Token (PAT) trên GitHub
    • Vào GitHub → SettingsDeveloper settingsPersonal access tokens.
    • Tạo token mới → chọn scopes (phạm vi quyền): nếu bạn push code thì cần repo scope
    • Copy token (sao chép một lần vì GitHub sẽ không hiển thị lại).
  2. Sử dụng PAT khi Git hỏi mật khẩu Khi bạn chạy git push / git clone lần nữa:
    • Username: tên GitHub của bạn.
    • Password: dán token vừa tạo, không dùng mật khẩu tài khoản GitHub.
  3. Dùng store (lưu vĩnh viễn lên đĩa)
    • git config –global credential.helper ‘store –file /path/to/my-credentials’
  4. (Tùy chọn) Lưu token để không nhập lại
    • git config –global credential.helper store
Đăng bởi Để lại phản hồi

Build và chạy một ứng dụng Web .NET Core (.NET 6/7/8) trên CentOS

4️⃣ Chạy ứng dụng trên CentOS

Chạy trực tiếp

dotnet run
  • Mặc định ứng dụng sẽ chạy trên http://localhost:5000https://localhost:5001.
  • Bạn có thể mở firewall để truy cập từ bên ngoài:
sudo firewall-cmd --add-port=5000/tcp --permanent
sudo firewall-cmd --reload

Chạy ở chế độ production

dotnet publish -c Release -o /var/www/mywebapp
cd /var/www/mywebapp
dotnet MyWebApp.dll

5️⃣ Cài đặt dịch vụ systemd để chạy tự động

Tạo file dịch vụ:

sudo nano /etc/systemd/system/mywebapp.service

Nội dung ví dụ:

[Unit]
Description=My .NET WebApp

[Service]
WorkingDirectory=/var/www/mywebapp
ExecStart=/usr/bin/dotnet /var/www/mywebapp/MyWebApp.dll --urls "http://0.0.0.0:5000"
Restart=always
RestartSec=10
SyslogIdentifier=dotnet-mywebapp
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

Sau đó kích hoạt:

sudo systemctl daemon-reload
sudo systemctl enable mywebapp.service
sudo systemctl start mywebapp.service
sudo systemctl status mywebapp.service

Ứng dụng của bạn bây giờ sẽ chạy như một service, tự khởi động cùng máy chủ.

Reload và restart service nếu cần:

sudo systemctl daemon-reload
sudo systemctl restart mywebapp.service

6. Xem log dịch vụ (rất quan trọng khi debug)

sudo journalctl -fu mywebapp.service

7. Các lệnh quản lý dịch vụ khác

Dừng dịch vụ:

sudo systemctl stop mywebapp.service

Khởi động lại:

sudo systemctl restart mywebapp.service

Xóa tự chạy:

sudo systemctl disable mywebapp.service

6️⃣ (Tuỳ chọn) Dùng Nginx làm reverse proxy

  • Cài Nginx:
sudo dnf install nginx -y
sudo systemctl enable --now nginx
  • Cấu hình reverse proxy cho .NET:
server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass         http://127.0.0.1:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  • Reload Nginx:
sudo nginx -s reload

Đăng bởi Để lại phản hồi

Cài .NET 8 trên CentOS Stream 9

✅I. Kiểm tra danh sách tất cả các repo đang bật

Nếu bạn đang sử dụng một môi trường desktop (GUI) như GNOME, bạn có thể mở Terminal dễ dàng qua các cách sau:

Phương pháp 1: Sử dụng Menu Ứng Dụng

  1. Nhấn vào “Activities” hoặc “Applications” (ở góc trên cùng bên trái của màn hình, tùy vào phiên bản CentOS của bạn).
  2. Tìm kiếm “Terminal” trong ô tìm kiếm.
  3. Nhấp vào Terminal để mở.

Phương pháp 2: Sử dụng phím tắt

  • Phím tắt mặc định: Bạn có thể nhấn Ctrl + Alt + T để mở Terminal.

II .Kiểm tra version kho lưu trữ trên máy chủ centos

✅II.1. Kiểm tra danh sách tất cả các repo đang bật

sudo dnf repolist

Hoặc chi tiết hơn:

sudo dnf repolist all

✅II.2. Kiểm tra thông tin chi tiết về một repo cụ thể

Ví dụ kiểm tra repo của Microsoft (sau khi bạn cài để dùng .NET):

sudo dnf repoquery -a --info microsoft-*

Hoặc:

sudo dnf config-manager --dump | grep -i microsoft -A 5

✅ II.3. Kiểm tra file cấu hình repo trong thư mục /etc/yum.repos.d/

Danh sách file repo:

ls -l /etc/yum.repos.d/

Xem nội dung file repo cụ thể, ví dụ:

cat /etc/yum.repos.d/microsoft-prod.repo

✅ II.4. Kiểm tra phiên bản repo bằng dnf info

Ví dụ kiểm tra phiên bản repo GNU:

dnf info epel-release

II.5. Nếu bạn cần kiểm tra repo nào chứa gói .NET 8, dùng:

dnf repoquery dotnet-sdk-8.0 --repoid="*"

✅ III Cài .NET 8 trên CentOS Stream 9

CÁCH 1 — Cài .NET 8 bằng Microsoft RPM repo (Cách chuẩn, hỗ trợ CentOS Stream 9)

1. Cài đặt các gói phụ thuộc

sudo dnf install -y wget tar libicu zlib

2. Thêm kho Microsoft cho CentOS 9

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/9/prod.repo

CentOS 9 dùng chung repo RHEL 9, nên repo này hoạt động tốt.

3. Cài .NET SDK 8.0

sudo dnf install -y dotnet-sdk-8.0

4. Kiểm tra phiên bản

dotnet --version

Kết quả sẽ là:

8.0.x

CÁCH 2 — Cài đặt từ binary (nếu repo bị lỗi)

Thích hợp khi bạn không muốn dùng repo hoặc gặp lỗi dependency.

1. Tải SDK .NET 8

wget https://download.visualstudio.microsoft.com/download/pr/622ab06a-c3bc-4d57-b9b8-314b5a6403d7/0b86d37ba909eb56d32f45f8719c5e66/dotnet-sdk-8.0.100-linux-x64.tar.gz

2. Tạo thư mục cài đặt

sudo mkdir -p /usr/share/dotnet

3. Giải nén .NET vào thư mục

sudo tar -xzf dotnet-sdk-8.0.100-linux-x64.tar.gz -C /usr/share/dotnet/

4. Thêm lệnh dotnet vào PATH

sudo ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
Đăng bởi Để lại phản hồi

Cài đặt rpm

1. Kiểm tra xem rpm đã cài chưa

which rpm

Nếu không có kết quả → chưa cài.


2. Cài gói rpm trên CentOS

sudo yum install rpm

Lưu ý: CentOS 8 có thể dùng dnf thay vì yum:

sudo dnf install rpm

3. Sau khi cài xong

Bạn có thể dùng:

rpm -ivh tên-gói.rpm

hoặc dùng dnf install tên-gói.rpm cho tiện, vì dnf sẽ tự cài các dependency.

Đăng bởi Để lại phản hồi

Hướng dẫn mở port trên CentOS, bao gồm firewall và SELinux

1️⃣ Mở port 5000 trên firewall

# Mở tạm thời (mất sau reboot)
sudo firewall-cmd --zone=public --add-port=5000/tcp

# Mở vĩnh viễn
sudo firewall-cmd --zone=public --add-port=5000/tcp --permanent
sudo firewall-cmd --reload

# Kiểm tra
sudo firewall-cmd --list-ports
  • Kết quả sẽ hiển thị 5000/tcp nếu mở thành công.

2️⃣Thêm port vào SELinux cho dịch vụ tùy chỉnh

SELinux cần biết port 5000 được phép sử dụng:

  1. Tạo type port mới (ví dụ myapp_port_t):
sudo semanage port -a -t myapp_port_t -p tcp 5000
  1. Kiểm tra port đã được SELinux ghi nhận chưa:
sudo semanage port -l | grep 5000
  • Kết quả ví dụ:
myapp_port_t  tcp  5000

Lưu ý: Nếu semanage chưa có, cài bằng:

sudo yum install policycoreutils-python-utils

3️⃣ Kiểm tra port từ ngoài mạng

Từ máy khác (hoặc máy ngoài Internet) chạy:

telnet <public-ip> 5000

hoặc

nc -vz <public-ip> 5000
  • Nếu kết nối thành công → port đã public ra Internet.

4️⃣ Lưu ý bảo mật

  • Chỉ mở port cần thiết.
  • Nếu dịch vụ nhạy cảm, cân nhắc VPN hoặc firewall nâng cao.
  • SELinux vẫn nên bật để bảo vệ server.

Script hoàn chỉnh

#!/bin/bash

# 1️⃣ Hiển thị IP nội bộ
IP_NOI_BO=$(ip -4 addr show | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | grep -v '^127')
echo "IP nội bộ: $IP_NOI_BO"

# 2️⃣ Hiển thị IP công cộng
IP_CONG_CONG=$(curl -s ifconfig.me)
echo "IP công cộng: $IP_CONG_CONG"

# 3️⃣ Mở port 5000 trên firewall
echo "Mở port 5000 trên firewall..."
sudo firewall-cmd --zone=public --add-port=5000/tcp
sudo firewall-cmd --zone=public --add-port=5000/tcp --permanent
sudo firewall-cmd --reload
echo "Port 5000 đã mở trên firewall."

# 4️⃣ Thêm port 5000 vào SELinux cho dịch vụ tùy chỉnh
echo "Thêm port 5000 vào SELinux..."
# Kiểm tra nếu semanage chưa cài, sẽ cài
if ! command -v semanage &> /dev/null
then
    echo "Cài semanage..."
    sudo yum install -y policycoreutils-python-utils
fi

# Thêm port mới nếu chưa tồn tại
if ! semanage port -l | grep -q 5000; then
    sudo semanage port -a -t myapp_port_t -p tcp 5000
    echo "Port 5000 đã thêm vào SELinux."
else
    echo "Port 5000 đã tồn tại trong SELinux."
fi

echo "Hoàn tất! Bạn có thể kiểm tra kết nối từ bên ngoài bằng:"
echo "telnet $IP_CONG_CONG 5000  hoặc nc -vz $IP_CONG_CONG 5000"

✅ Cách sử dụng

  1. Tạo file, ví dụ setup_port5000.sh
nano setup_port5000.sh
  1. Dán nội dung script vào, lưu lại.
  2. Cho phép chạy:
chmod +x setup_port5000.sh
  1. Chạy script:
./setup_port5000.sh
  • Script sẽ in ra IP nội bộ, IP công cộng, mở port 5000 và thêm vào SELinux.