NetBox là một ứng dụng web quản lý cơ sở hạ tầng trung tâm dữ liệu (DCIM) và địa chỉ IP nguồn mở (IPAM) được sử dụng để quản lý và ghi lại các mạng máy tính và địa chỉ IP. Nhóm kỹ thuật mạng tại DigitalOcean ban đầu đã hình thành ý tưởng này. Nó được viết bằng khuôn khổ Django Python và sử dụng cơ sở dữ liệu PostgreSQL để lưu trữ dữ liệu. Nó cũng sử dụng cơ sở dữ liệu Redis để lưu trữ các truy vấn.
Hướng dẫn này sẽ hướng dẫn bạn cách cài đặt công cụ NetBox trên máy chủ Ubuntu 22.04 và Nginx làm máy chủ proxy ngược.
[*]
Một số gói mà hệ thống của bạn cần.
Một số gói này có thể đã được cài đặt trên hệ thống của bạn.
Kiểm tra xem tường lửa có đang chạy không.
Bạn sẽ nhận được kết quả sau.
Cho phép cổng SSH để tường lửa không làm gián đoạn kết nối hiện tại khi bật nó.
Cho phép cả cổng HTTP và HTTPS.
Bật Tường lửa
Kiểm tra lại trạng thái của tường lửa.
Bạn sẽ thấy trạng thái tương tự đầu ra.
Chạy lệnh sau để thêm khóa GPG của PostgreSQL.
Thêm kho lưu trữ APT vào danh sách nguồn của bạn.
Cập nhật hệ thống kho lưu trữ.
Bây giờ, bạn có thể cài đặt PostgreSQL bằng lệnh bên dưới.
Gói
Kiểm tra trạng thái của dịch vụ PostgreSQL.
Bạn có thể thấy dịch vụ được bật và chạy theo mặc định.
Khởi chạy PostgreSQL shell.
Tạo cơ sở dữ liệu NetBox.
Tạo người dùng NetBox và chọn một mật khẩu.
Thay đổi chủ sở hữu cơ sở dữ liệu thành người dùng NetBox.
Thoát khỏi shell.
Xác minh thông tin đăng nhập của bạn hoạt động.
Thoát khỏi shell bằng cách nhập
Nhập khóa Redis GPG chính thức.
Thêm kho lưu trữ APT vào danh sách nguồn của bạn.
Cập nhật kho lưu trữ hệ thống danh sách.
Phát hành lệnh sau để cài đặt máy chủ Redis.
Xác nhận Redis phiên bản.
Chúng ta hãy xác minh kết nối dịch vụ bằng cách sử dụng lệnh sau.
Bạn sẽ được chuyển sang shell Redis.
Bước đầu tiên là đặt mật khẩu cho người dùng mặc định của Redis. Thay thế
Kiểm tra Redis Xác thực.
Ping dịch vụ.
Thoát khỏi dịch vụ bằng cách nhập
Kiểm tra phiên bản Python.
Tạo thư mục cơ sở cho NetBox cài đặt.
Chuyển sang thư mục.
Sao chép nhánh chính của kho lưu trữ GitHub của NetBox vào nhánh hiện tại thư mục.
Cờ
Kiểm tra phiên bản mới nhất của NetBox từ trang phát hành và kiểm tra bằng Git. Tại thời điểm viết hướng dẫn, 3.4.1 là phiên bản mới nhất hiện có.
Trước khi kiểm tra, bạn cần thêm thư mục vào danh sách thư mục an toàn của Git. Đây là tính năng bảo mật mới có trong các phiên bản Git gần đây.
Bước tiếp theo là tạo người dùng và nhóm hệ thống cho NetBox.
Cấp quyền cho người dùng trên thư mục phương tiện của NetBox.
Sao chép tệp cấu hình ví dụ để tạo tệp thực tế.
Trước khi tiến hành cấu hình, chúng ta cần tạo khóa bí mật cho NetBox. Ghi lại khóa vì chúng ta cần khóa này để cấu hình.
Mở tệp cấu hình để chỉnh sửa.
Tìm Biến
Bước tiếp theo là chỉnh sửa thông tin chi tiết về cơ sở dữ liệu. Cấu hình thông tin chi tiết về cơ sở dữ liệu như sau.
Cấu hình Redis như hình minh họa. Nhập mật khẩu Redis mà bạn đã đặt ở bước 3.
Thêm giá trị khóa bí mật vào biến.
Theo mặc định, NetBox sử dụng hệ thống tệp cục bộ để lưu trữ các tệp đã tải lên. Bạn có thể lưu trữ tệp trên hệ thống tệp từ xa bằng cách cài đặt thư viện
Các loại lưu trữ khác cũng được hỗ trợ, bao gồm FTP, SFTP, Dropbox và các nhà cung cấp S3 khác. Để tìm hiểu cách cấu hình chúng, bạn có thể đọc trang trợ giúp
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Script nâng cấp thực hiện các tác vụ sau.
Bước tiếp theo là tạo siêu người dùng để truy cập NetBox. Nhưng trước tiên, hãy chuyển đến thư mục cần thiết.
Tạo siêu người dùng.
Bạn sẽ nhận được thông báo sau output.
NetBox bao gồm lệnh quản lý
Bước cuối cùng là kiểm tra xem ứng dụng NetBox có hoạt động không. Nhưng trước tiên, chúng ta cần mở cổng 8000 để kiểm tra. Tuy nhiên, bạn có thể sử dụng bất kỳ cổng nào.
Bắt đầu phiên bản phát triển của NetBox.
Nếu thành công, bạn sẽ nhận được thông báo sau đầu ra.
Bạn có thể truy cập NetBox qua URL
Nhấp vào nút Đăng nhập để mở trang Đăng nhập và nhập thông tin đăng nhập siêu người dùng đã tạo trước đó.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22515%22%3E%3C/svg%3E
Bạn sẽ được đưa trở lại bảng điều khiển NetBox.
Nhấn phím Ctrl + C để dừng máy chủ. Hủy kích hoạt môi trường ảo Python.
NetBox được cung cấp kèm theo tệp cấu hình Gunicorn mặc định. Tạo một bản sao của nó.
Cấu hình mặc định có thể đáp ứng được mục đích của chúng ta. Tùy thuộc vào nhu cầu của bạn, bạn có thể chỉnh sửa tệp để thay đổi tên máy chủ và số cổng hoặc cải thiện hiệu suất bằng cách thay đổi luồng, công nhân và số lượng yêu cầu.
Bước tiếp theo là sao chép cả tệp dịch vụ NetBox và Gunicorn vào thư mục
Tải lại dịch vụ daemon.
Khởi động và kích hoạt
Kiểm tra trạng thái của WSGI dịch vụ.
Bạn sẽ nhận được kết quả tương tự.
Như bạn thấy, Gunicorn lắng nghe ở cổng 8001 theo mặc định. Thông tin này sẽ hữu ích khi cấu hình Nginx làm máy chủ proxy ngược.
Nhập khóa ký của Nginx.
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Cập nhật hệ thống kho lưu trữ.
Cài đặt Nginx.
Xác minh cài đặt.
Khởi động máy chủ Nginx.
Ubuntu 22.04 đi kèm với Snapd được cài đặt theo mặc định. Chạy các lệnh sau để đảm bảo phiên bản Snapd của bạn được cập nhật. Đảm bảo rằng phiên bản Snapd của bạn được cập nhật.
Cài đặt Certbot.
Sử dụng lệnh sau để đảm bảo rằng lệnh Certbot chạy bằng cách tạo liên kết tượng trưng đến
Chạy lệnh sau để tạo SSL Chứng chỉ.
Lệnh trên sẽ tải chứng chỉ xuống thư mục
Tạo nhóm Diffie-Hellman chứng chỉ.
Để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không, hãy chạy thử quy trình.
Nếu không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.
Thêm dòng sau vào trước dòng
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Tạo và mở tệp
Dán mã sau vào nó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.
Xác minh cú pháp tệp cấu hình Nginx.
Khởi động lại Nginx dịch vụ.
Bây giờ bạn có thể truy cập Bảng điều khiển NetBox qua URL
Chuyển sang thư mục NetBox.
Kiểm tra nhánh chính.
Kéo các cam kết mới nhất từ kho lưu trữ.
Kiểm tra phiên bản mới. Nếu 3.4.2 là phiên bản mới hơn, bạn có thể kiểm tra phiên bản đó.
Chạy tập lệnh nâng cấp.
Đối với quy trình nâng cấp, tập lệnh thực hiện các chức năng sau.
Hướng dẫn này sẽ hướng dẫn bạn cách cài đặt công cụ NetBox trên máy chủ Ubuntu 22.04 và Nginx làm máy chủ proxy ngược.
Điều kiện tiên quyết
-
Máy chủ chạy Ubuntu 22.04.
-
Người dùng không phải root có quyền sudo.
-
Tên miền đủ điều kiện (FQDN) nhưnetbox.example.com
.
-
Đảm bảo mọi thứ đều đã cập nhật.
Mã:
$ sudo apt update
$ sudo apt upgrade
Một số gói mà hệ thống của bạn cần.
Mã:
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Bước 1 - Cấu hình Tường lửa
Bước đầu tiên là cấu hình tường lửa. Ubuntu đi kèm với ufw (Uncomplicated Firewall) theo mặc định.Kiểm tra xem tường lửa có đang chạy không.
Mã:
$ sudo ufw status
Mã:
Status: inactive
Mã:
$ sudo ufw allow OpenSSH
Mã:
$ sudo ufw allow http
$ sudo ufw allow https
Mã:
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Mã:
$ sudo ufw status
Mã:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Bước 2 - Cài đặt và cấu hình PostgreSQL
NetBox hoạt động với PostgreSQL 11 trở lên. Ubuntu 22.04 được cung cấp với PostgreSQL 14 theo mặc định. Chúng tôi sẽ sử dụng PostgreSQL 15 cho hướng dẫn của mình.Chạy lệnh sau để thêm khóa GPG của PostgreSQL.
Mã:
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null
Mã:
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Mã:
$ sudo apt update
Mã:
$ sudo apt install postgresql postgresql-contrib
postgresql-contrib
chứa một số tiện ích bổ sung.Kiểm tra trạng thái của dịch vụ PostgreSQL.
Mã:
$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Tue 2022-11-27 9:10:35 UTC; 5s ago Process: 30544 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 30544 (code=exited, status=0/SUCCESS) CPU: 2ms
Dec 27 9:10:35 netbox systemd[1]: Starting PostgreSQL RDBMS...
Dec 27 9:10:35 netbox systemd[1]: Finished PostgreSQL RDBMS.
Khởi chạy PostgreSQL shell.
Mã:
$ sudo -i -u postgres psql
Mã:
postgres=# CREATE DATABASE netbox;
Mã:
postgres-# CREATE USER netbox WITH PASSWORD 'Your_Password';
Mã:
postgres-# ALTER DATABASE netbox OWNER TO netbox;
Mã:
postgres-# \q
Mã:
$ psql --username netbox --password --host localhost netbox
Password for user netbox:
psql (15.1 (Ubuntu 15.1-1.pgdg22.04+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
netbox=>
\q
.Bước 3 - Cài đặt và cấu hình Redis
Ubuntu được tích hợp sẵn Redis 6.0.16. Đối với hướng dẫn của chúng tôi, chúng tôi sẽ cài đặt phiên bản mới nhất từ kho lưu trữ chính thức.Nhập khóa Redis GPG chính thức.
Mã:
$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
Mã:
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
Mã:
$ sudo apt update
Mã:
$ sudo apt install redis
Mã:
$ redis-server -v
Redis server v=7.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=2260280010e18db8
Mã:
$ redis-cli
Bước đầu tiên là đặt mật khẩu cho người dùng mặc định của Redis. Thay thế
Your_Redis_Password
bằng mật khẩu mạnh mà bạn chọn.
Mã:
127.0.0.1:6379> acl setuser default >Your_Redis_Password
Mã:
127.0.0.1:6379> AUTH Your_Redis_Password
OK
Mã:
127.0.0.1:6379> ping
PONG
exit
.Bước 4 - Tải xuống NetBox
NetBox yêu cầu Python Django để hoạt động. Bước đầu tiên trong quá trình cài đặt NetBox là cài đặt các gói Python cần thiết. Chạy lệnh sau để cài đặt các gói Python cần thiết.
Mã:
$ sudo apt install -y python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev
Mã:
$ python3 -V
Python 3.10.6
Mã:
$ sudo mkdir -p /opt/netbox/
Mã:
$ cd /opt/netbox
Mã:
$ sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .
--depth 1
chỉ truy xuất cam kết gần đây nhất của kho lưu trữ. Nếu bạn muốn tải xuống toàn bộ lịch sử cam kết, bạn có thể bỏ qua cờ.Kiểm tra phiên bản mới nhất của NetBox từ trang phát hành và kiểm tra bằng Git. Tại thời điểm viết hướng dẫn, 3.4.1 là phiên bản mới nhất hiện có.
Mã:
$ git config --global --add safe.directory /opt/netbox
$ sudo git checkout v3.4.1
Bước tiếp theo là tạo người dùng và nhóm hệ thống cho NetBox.
Mã:
$ sudo adduser --system --group netbox
Mã:
$ sudo chown --recursive netbox /opt/netbox/netbox/media/
Bước 5 - Cấu hình NetBox
Chuyển đến thư mục cấu hình NetBox.
Mã:
$ cd /opt/netbox/netbox/netbox/
Mã:
$ sudo cp configuration_example.py configuration.py
Mã:
$ python3 ../generate_secret_key.py
dSSWi$Ar2cVvu1)V!B82sY1tJAQK9r)vzM8ReQRF7@C^+$=1+(
Mã:
$ sudo nano configuration.py
ALLOWED_HOSTS
và đặt giá trị của nó như sau. Biến này chứa danh sách các tên máy chủ và địa chỉ IP hợp lệ mà máy chủ này có thể truy cập được.
Mã:
ALLOWED_HOSTS = ['netbox.example.com', '']
Mã:
DATABASE = { 'NAME': 'netbox', # Database name 'USER': 'netbox', # PostgreSQL username 'PASSWORD': 'Your_Password', # PostgreSQL password 'HOST': 'localhost', # Database server 'PORT': '', # Database port (leave blank for default) 'CONN_MAX_AGE': 300, # Max database connection age
}
Mã:
REDIS = { 'tasks': { 'HOST': 'localhost', 'PORT': 6379, # Comment out `HOST` and `PORT` lines and uncomment the following if using Redis Sentinel # 'SENTINELS': [('mysentinel.redis.example.com', 6379)], # 'SENTINEL_SERVICE': 'netbox', 'PASSWORD': 'Your_Redis_Password', 'DATABASE': 0, 'SSL': False, # Set this to True to skip TLS certificate verification # This can expose the connection to attacks, be careful # 'INSECURE_SKIP_TLS_VERIFY': False, }, 'caching': { 'HOST': 'localhost', 'PORT': 6379, # Comment out `HOST` and `PORT` lines and uncomment the following if using Redis Sentinel # 'SENTINELS': [('mysentinel.redis.example.com', 6379)], # 'SENTINEL_SERVICE': 'netbox', 'PASSWORD': 'Your_Redis_Password', 'DATABASE': 1, 'SSL': False, # Set this to True to skip TLS certificate verification # This can expose the connection to attacks, be careful # 'INSECURE_SKIP_TLS_VERIFY': False, }
}
Mã:
SECRET_KEY = 'dSSWi$Ar2cVvu1)V!B82sY1tJAQK9r)vzM8ReQRF7@C^+$=1+('
django-storages
. Chạy lệnh sau để thêm gói django-storages
vào gói requirements.txt
của NetBox, sau đó sẽ được cài đặt ở bước sau. Chúng ta cũng cần cấu hình các tham số lưu trữ. Bỏ chú thích ở phần lưu trữ của tệp cấu hình và tiến hành như sau.
Mã:
STORAGE_BACKEND = 'storages.backends.s3boto3.S3Boto3Storage'
STORAGE_CONFIG = { 'AWS_ACCESS_KEY_ID': 'Key ID', 'AWS_SECRET_ACCESS_KEY': 'Secret', 'AWS_STORAGE_BUCKET_NAME': 'netbox', 'AWS_S3_REGION_NAME': 'eu-west-1',
}
django-storages
.Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Bước 6 - Cài đặt NetBox
Chạy nâng cấp NetBox script.
Mã:
$ sudo /opt/netbox/upgrade.sh
- Tạo môi trường ảo Python
- Cài đặt tất cả các gói Python cần thiết
- Chạy di chuyển lược đồ cơ sở dữ liệu
- Xây dựng tài liệu cục bộ (để sử dụng ngoại tuyến)
- Tổng hợp các tệp tài nguyên tĩnh trên đĩa
Mã:
$ source /opt/netbox/venv/bin/activate
Mã:
(venv) $ cd /opt/netbox/netbox
Mã:
(venv) $ python3 manage.py createsuperuser
Mã:
Username (leave blank to use 'navjot'):
Email address: [emailprotected]
Password:
Password (again):
Superuser created successfully.
housekeeping
xử lý các tác vụ dọn dẹp định kỳ, chẳng hạn như xóa các phiên cũ và các bản ghi thay đổi đã hết hạn. Bạn có thể chạy lệnh theo cách thủ công hoặc sử dụng cron để chạy lệnh theo các khoảng thời gian đều đặn. NetBox cung cấp một tập lệnh shell để chạy các tác vụ dọn dẹp. Chạy lệnh sau để tạo liên kết mềm cho tập lệnh trong thư mục Cron hàng ngày. Điều này sẽ đảm bảo lệnh sẽ chạy hàng ngày.
Mã:
(venv) $ sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
Mã:
(venv) $ sudo ufw allow 8000
Mã:
(venv) $ python3 manage.py runserver 0.0.0.0:8000 --insecure
Mã:
Performing system checks...
System check identified no issues (0 silenced).
December 27, 2022 - 09:27:37
Django version 4.1.4, using settings 'netbox.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
http://:8000/
. Bạn sẽ nhận được màn hình sau.
Nhấp vào nút Đăng nhập để mở trang Đăng nhập và nhập thông tin đăng nhập siêu người dùng đã tạo trước đó.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22515%22%3E%3C/svg%3E
Bạn sẽ được đưa trở lại bảng điều khiển NetBox.
Nhấn phím Ctrl + C để dừng máy chủ. Hủy kích hoạt môi trường ảo Python.
Mã:
(venv) $ deactivate
Bước 7 - Cấu hình Gunicorn và Tạo Tệp Dịch vụ
NetBox chạy như một ứng dụng WSGI đằng sau máy chủ HTTP. NetBox tự động cài đặt máy chủ Gunicorn. Trong bước này, chúng ta sẽ cấu hình Gunicorn và tạo tệp dịch vụ cho NetBox để có thể chạy ở chế độ nền và trong suốt quá trình khởi động lại hệ thống.NetBox được cung cấp kèm theo tệp cấu hình Gunicorn mặc định. Tạo một bản sao của nó.
Mã:
$ sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
Bước tiếp theo là sao chép cả tệp dịch vụ NetBox và Gunicorn vào thư mục
/etc/systemd/system
.
Mã:
$ sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
Mã:
$ sudo systemctl daemon-reload
netbox
và netbox-rq
dịch vụ.
Mã:
$ sudo systemctl start netbox netbox-rq
$ sudo systemctl enable netbox netbox-rq
Mã:
$ sudo systemctl status netbox
Mã:
? netbox.service - NetBox WSGI Service Loaded: loaded (/etc/systemd/system/netbox.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-12-27 09:28:23 UTC; 17s ago Docs: https://docs.netbox.dev/ Main PID: 4180 (gunicorn) Tasks: 6 (limit: 1030) Memory: 357.9M CPU: 7.747s CGroup: /system.slice/netbox.service ??4180 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi ??4181 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi ??4182 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi ??4183 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi ??4184 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi ??4185 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi
Dec 27 09:28:23 netbox systemd[1]: Started NetBox WSGI Service.
Dec 27 09:28:24 netbox gunicorn[4180]: [2022-12-27 09:28:24 +0000] [4180] [INFO] Starting gunicorn 20.1.0
Dec 27 09:28:24 netbox gunicorn[4180]: [2022-12-27 09:28:24 +0000] [4180] [INFO] Listening at: http://127.0.0.1:8001 (4180)
Dec 27 09:28:24 netbox gunicorn[4180]: [2022-12-27 09:28:24 +0000] [4180] [INFO] Using worker: gthread
Dec 27 09:28:24 netbox gunicorn[4181]: [2022-12-27 09:28:24 +0000] [4181] [INFO] Booting worker with pid: 4181
Dec 27 09:28:24 netbox gunicorn[4182]: [2022-12-27 09:28:24 +0000] [4182] [INFO] Booting worker with pid: 4182
Dec 27 09:28:24 netbox gunicorn[4183]: [2022-12-27 09:28:24 +0000] [4183] [INFO] Booting worker with pid: 4183
Dec 27 09:28:24 netbox gunicorn[4184]: [2022-12-27 09:28:24 +0000] [4184] [INFO] Booting worker with pid: 4184
Dec 27 09:28:24 netbox gunicorn[4185]: [2022-12-27 09:28:24 +0000] [4185] [INFO] Booting worker with pid: 4185
Bước 8 - Cài đặt Nginx
Ubuntu 22.04 đi kèm với phiên bản Nginx cũ hơn. Để cài đặt phiên bản mới nhất, bạn cần tải xuống kho lưu trữ Nginx chính thức.Nhập khóa ký của Nginx.
Mã:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Mã:
$ sudo apt update
Mã:
$ sudo apt install nginx
Mã:
$ nginx -v
nginx version: nginx/1.22.1
Mã:
$ sudo systemctl start nginx
Bước 9 - Cài đặt SSL
Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Bạn có thể cài đặt Certbot bằng kho lưu trữ của Ubuntu hoặc tải phiên bản mới nhất bằng công cụ Snapd. Chúng tôi sẽ sử dụng phiên bản Snapd.Ubuntu 22.04 đi kèm với Snapd được cài đặt theo mặc định. Chạy các lệnh sau để đảm bảo phiên bản Snapd của bạn được cập nhật. Đảm bảo rằng phiên bản Snapd của bạn được cập nhật.
Mã:
$ sudo snap install core
$ sudo snap refresh core
Mã:
$ sudo snap install --classic certbot
/usr/bin
thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d netbox.example.com
/etc/letsencrypt/live/netbox.example.com
trên máy chủ của bạn.Tạo nhóm Diffie-Hellman chứng chỉ.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Mã:
$ sudo certbot renew --dry-run
Bước 10 - Cấu hình Nginx
Mở tệp/etc/nginx/nginx.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;
.
Mã:
server_names_hash_bucket_size 64;
Tạo và mở tệp
/etc/nginx/conf.d/netbox.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/netbox.conf
Mã:
server { # Redirect any http requests to https listen 80; listen [::]:80; server_name netbox.example.com; return 301 https://$host$request_uri;
}
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name netbox.example.com; access_log /var/log/nginx/netbox.access.log; error_log /var/log/nginx/netbox.error.log; # TLS configuration ssl_certificate /etc/letsencrypt/live/netbox.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/netbox.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/netbox.example.com/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; client_max_body_size 25m; # Proxy everything over to the netbox server location /static/ { alias /opt/netbox/netbox/static/; } location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $http_host; proxy_pass http://127.0.0.1:8001; }
}
Xác minh cú pháp tệp cấu hình Nginx.
Mã:
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Mã:
$ sudo systemctl restart nginx
https://netbox.example.com
.Bước 11 - Nâng cấp NetBox
Nâng cấp NetBox khá dễ dàng. Các bước bao gồm kiểm tra nhánh chính của kho lưu trữ Git, kéo các cam kết mới nhất, sau đó kiểm tra phiên bản ổn định mới.Chuyển sang thư mục NetBox.
Mã:
$ cd /opt/netbox
Mã:
$ sudo git checkout master
Mã:
$ sudo git pull origin master
Mã:
$ sudo git checkout v3.4.2
Mã:
$ sudo ./upgrade.sh
- Phá hủy và xây dựng lại môi trường ảo Python
- Cài đặt tất cả các gói Python cần thiết (được liệt kê trong
requirements.txt
) - Cài đặt bất kỳ gói bổ sung nào từ
local_requirements.txt
- Áp dụng bất kỳ bản di chuyển cơ sở dữ liệu nào được bao gồm trong bản phát hành
- Xây dựng tài liệu cục bộ (để sử dụng ngoại tuyến)
- Thu thập tất cả các tệp tĩnh để được phục vụ bởi dịch vụ HTTP
- Xóa các loại nội dung cũ khỏi database
- Xóa tất cả các phiên người dùng đã hết hạn khỏi cơ sở dữ liệu
Mã:
$ sudo systemctl restart netbox netbox-rq