久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

用樹莓派打造便攜式 PyPI 服務(wù)器

 風(fēng)聲之家 2022-12-06 發(fā)布于江蘇

創(chuàng)建自己的PyPI鏡像有很多方法,我的方法現(xiàn)在可能對(duì)所有人都適用,。我對(duì)這個(gè)項(xiàng)目的目標(biāo)是:

  • 做這個(gè)項(xiàng)目的硬件必須是可負(fù)擔(dān)得起的(<=100美元),。

  • 在客戶端電腦上必須有很少或沒有設(shè)置要求。

我決定使用Raspberry Pi 4,,用200Gb的SD卡進(jìn)行存儲(chǔ),。用 minirepo來克隆PyPI, pypiserver來提供軟件包,, nginx來創(chuàng)建反向代理,。

創(chuàng)建本地PyPI服務(wù)器有四個(gè)步驟:

1、下載并安裝操作系統(tǒng)和系統(tǒng)工具 2,、配置Raspberry Pi作為一個(gè)WiFi熱點(diǎn),、DHCP和DNS服務(wù)器 3、克隆/下載PyPI軟件包 4,、配置一個(gè)網(wǎng)絡(luò)服務(wù)器,,將下載的軟件包提供給連接的客戶。

下面我將詳細(xì)解釋上述步驟,。

一,、下載并安裝操作系統(tǒng)和系統(tǒng)實(shí)用程序

Raspberry Pi是一種小型信用卡大小的計(jì)算機(jī),售價(jià)至少為35美元,。在這個(gè)項(xiàng)目中,,我使用了Raspberry Pi 4,但其他型號(hào)也應(yīng)該可以使用,。Raspberry Pi 3和4型號(hào)有內(nèi)置的WiFi適配器,,這使得將Raspberry Pi設(shè)置為WiFi熱點(diǎn)或接入點(diǎn)的工作比使用外部無線適配器時(shí)更簡單。

要開始使用,,請(qǐng)下載并安裝Raspbian,。Raspbian是一個(gè)基于Debian的輕量級(jí)操作系統(tǒng),為Raspberry Pi進(jìn)行了優(yōu)化,。為了作為接入點(diǎn)工作,,Raspberry Pi將需要安裝接入點(diǎn)軟件,以及為連接設(shè)備提供網(wǎng)絡(luò)地址的DHCP服務(wù)器軟件,。

接下來,,在配置Raspberry Pi之前,,下載所有你需要的實(shí)用程序和軟件包。

你需要以下軟件包:

dnsmasq - DNS和DHCP服務(wù)器軟件 hostapd - 接入點(diǎn)軟件 minirepo - 用于克隆PyPI,,供離線使用,。pypiserver - 從克隆的PyPI包中創(chuàng)建一個(gè)索引 nginx - 一個(gè)網(wǎng)絡(luò)服務(wù)器

要安裝這些軟件包,請(qǐng)運(yùn)行這兩條命令:

$ sudo apt install dnsmasq hostapd nginx$ pip install minirepo pypiserver

二,、配置Raspberry Pi的WiFi熱點(diǎn),、DHCP和DNS

這一步的目標(biāo)是配置一個(gè)獨(dú)立的網(wǎng)絡(luò)作為服務(wù)器,所以Raspberry Pi需要有一個(gè)分配給無線端口的靜態(tài)IP地址,。為了配置靜態(tài)IP,,編輯dhcpcd配置文件。

$ sudo nano/etc/dhcpcd.conf

添加以下內(nèi)容:

配置DHCP

dnsmasq設(shè)置中的很多默認(rèn)設(shè)置都是不必要的,。創(chuàng)建一個(gè)新的配置文件:

$ sudo mv/etc/dnsmasq.conf/etc/dnsmasq.conf.orig$ sudo nano/etc/dnsmasq.conf

添加以下配置:

這為通過無線接口 wlan0連接的客戶設(shè)置了DHCP,。第二行告訴DHCP服務(wù)器(dnsmasq)監(jiān)聽來自你在上一步設(shè)置的靜態(tài)IP的連接。下一行告訴DHCP提供IP地址 192.168.4.2192.168.4.30,,租用時(shí)間為24小時(shí),。

創(chuàng)建一個(gè)接入點(diǎn)

接下來,配置接入點(diǎn)軟件(hostapd):

$ sudo nano/etc/hostapd/hostapd.conf

添加以下內(nèi)容:

在寫有 sssidwpa_passphrase的地方添加你自己的網(wǎng)絡(luò)名稱和網(wǎng)絡(luò)密碼,。

告訴系統(tǒng)在哪里可以找到這個(gè)文件,,打開 hostapd的配置文件。

sudo nano/etc/default/hostapd

找到帶有 #DAEMON_CONF的那一行,,并把它替換成這樣:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

添加路由和偽裝

編輯 /etc/sysctl.conf并取消對(duì)這一行的注釋,。

net.ipv4.ip_forward=1

eth0的出站流量添加一個(gè)掩碼。sudo iptables-t nat-A POSTROUTING-o eth0-j MASQUERADE

保存新的規(guī)則: sudo sh-c"iptables-save > /etc/iptables.ipv4.nat"

編輯 /etc/rc.local,,在 "exit 0 "上面添加以下內(nèi)容,,以便在啟動(dòng)時(shí)安裝這些規(guī)則。

iptables-restore</etc/iptables.ipv4.nat

如果你決定以后共享互聯(lián)網(wǎng)連接或在Raspberry Pi上設(shè)置一個(gè)網(wǎng)橋,,這一點(diǎn)很重要,。

Raspberry Pi應(yīng)該已經(jīng)準(zhǔn)備好作為一個(gè)接入點(diǎn)工作了。如果你直接連接到它,,現(xiàn)在是啟用SSH的好時(shí)機(jī),。重新啟動(dòng)Raspberry Pi,測(cè)試是否一切正常,。

使用一個(gè)不同的支持WiFi的設(shè)備,,如手機(jī)或筆記本電腦,掃描新的無線網(wǎng)絡(luò),。如果一切都很順利,,你應(yīng)該看到你上面創(chuàng)建的WiFi網(wǎng)絡(luò)。嘗試連接到它。

三,、克隆PyPI

在本節(jié)中,,你將看到如何克隆PyPI并配置以下軟件包。

minirepo pypiserver nginx

Minirepo

Minirepo是一個(gè)命令行程序,,從PyPI.org下載軟件包,這樣你就可以在沒有互聯(lián)網(wǎng)的情況下使用pip,。安裝它的最簡單方法是使用pip,。

$ pip install minirepo

第一次執(zhí)行時(shí), minirepo會(huì)問你本地倉庫的路徑(它應(yīng)該把下載的軟件包保存到哪里),,在Linux中默認(rèn)為 ~/minirepo,。一個(gè) JSON 配置文件被創(chuàng)建并保存為 ~/.minirepo,你可以根據(jù)自己的喜好進(jìn)行編輯,。

有許多克隆PyPI的替代方案,,但我使用了minirepo,因?yàn)樗试S你有選擇地下載一個(gè)鏡像,,例如,,只下載Python 3的所有源代碼。在寫這篇文章的時(shí)候,,整個(gè)PyPI資源庫大約有1TB,,但通過使用選擇性下載,我能夠把它降低到120GB左右,。以下是我在這個(gè)項(xiàng)目中使用的配置,。

上面的配置下載了Python 3的源代碼,并將包的類型限制為 sdist,、 bdist_wheelbdist_egg包,。使用這種方法的缺點(diǎn)是,一些不符合過濾條件的軟件包將不會(huì)被下載,。

克隆PyPI需要很長的時(shí)間,,所以你要讓它在后臺(tái)運(yùn)行。

Pypiserver

在這一點(diǎn)上,,你應(yīng)該把PyPI鏡像到你的電腦上,。我的本地PyPI鏡像有200000多個(gè)軟件包。在我們進(jìn)行下一步之前,,有必要了解什么是 pip以及它是如何工作的。

Pip是最流行的安裝Python軟件包的工具,,也是現(xiàn)代版本的Python所包含的工具。它提供了從PyPI和其他Python軟件包索引中查找,、下載和安裝軟件包的基本核心功能,,并且可以通過其命令行接口(CLI)納入廣泛的開發(fā)工作流程。

Pip支持從以下地方安裝軟件包,。

  • 使用需求指定器從PyPI(和其他索引)安裝軟件包,。

  • VCS項(xiàng)目的URL,。

  • 本地項(xiàng)目目錄

  • 本地或遠(yuǎn)程源文件

由于你已經(jīng)克隆了PyPi軟件包到本地倉庫,,pip可以直接從你剛剛下載的本地PyPI鏡像中安裝這些軟件包,。不過這不是本文的目的,。這里的目標(biāo)是允許遠(yuǎn)程客戶端連接到Raspberry Pi并通過網(wǎng)絡(luò)下載軟件包。這就是pypiserver的作用,。

pypiserver,,將提供本地軟件包索引,允許pip通過網(wǎng)絡(luò)找到你的軟件倉庫中的軟件包,。

首先,,測(cè)試一下它是否有效。

$ pypi-server-p8080~/minirepo&# Will listen to all IPs.

注意,,在運(yùn)行時(shí),運(yùn)行它的命令是 pypi-server而不是 pypyserver,。

在這里,,你要啟動(dòng) pypiserver并在 8080 端口運(yùn)行它。它將找到 minirepo文件夾中的軟件包,。這個(gè)進(jìn)程將一直在后臺(tái)運(yùn)行,,直到你殺死它或關(guān)閉Raspberry Pi,。我稍后會(huì)告訴你如何啟動(dòng)它。

如果你在瀏覽器中訪問你為Raspberry Pi設(shè)置的8080端口的靜態(tài)IP,,你應(yīng)該看到一個(gè)與下面類似的信息,。

你現(xiàn)在可以從本地軟件庫安裝。

pip install--index-url http://localhost:8080/simple/

或者,,從客戶電腦上安裝。

pip install--index-url http://192.168.4.1:8080/

如果你在一個(gè)沒有HTTPS的遠(yuǎn)程URL上安裝了 pypiserver,,你會(huì)收到pip發(fā)出的 "不受信任 "的警告,敦促你添加--受信任的主機(jī)選項(xiàng),。

pip--trusted-host192.168.4.1install--index-url http://192.168.4.1:8080/

還有一個(gè)更短的方法。pip--trusted-host192.168.4.1install-i http://192.168.4.1:8080/

總是在命令行上指定本地的pypi URL和受信任的主機(jī)標(biāo)志會(huì)很麻煩。如果你想總是從你自己的鏡像中安裝軟件包,,在你的主目錄或虛擬環(huán)境中創(chuàng)建這個(gè) pip配置文件。

主目錄:

  • 在Unix和macOS上,主目錄文件是: $HOME/.pip/pip.conf

  • 在Windows中,該文件是: %HOME%\pip\pip.ini

在虛擬環(huán)境中:

  • 在Unix和macOS中,,文件是 $VIRTUAL_ENV/pip.conf

  • 在Windows上,該文件是: %VIRTUAL_ENV%\pip.ini

我建議把這個(gè)配置文件放在虛擬環(huán)境中,。

四,、設(shè)置一個(gè)網(wǎng)絡(luò)服務(wù)器來傳遞包裹

默認(rèn)情況下,, pypiserver在每次傳入的HTTP請(qǐng)求發(fā)生時(shí)都會(huì)掃描整個(gè)軟件包目錄,。當(dāng)像我們?cè)谶@個(gè)例子中提供大量的軟件包時(shí),,這可能會(huì)導(dǎo)致顯著的速度下降,。

一個(gè)更快地提供文件的方法是把 pypiserver放在一個(gè)反向代理后面,,并啟用你的網(wǎng)絡(luò)服務(wù)器的內(nèi)置緩存功能,。在這篇文章中,,我將使用nginx,,但你可以自由地使用任何你喜歡的網(wǎng)絡(luò)服務(wù)器,。

在nginx中設(shè)置一個(gè)新的虛擬主機(jī)

創(chuàng)建一個(gè)文件 /etc/nginx/sites-available/cheeshop.com,。為了本文的目的,,我將新的虛擬主機(jī)稱為cheeshop.com。

運(yùn)行 $ sudo nano/etc/nginx/sites-available/cheeshop.com并添加以下內(nèi)容,。

配置的第一部分指示 nginx 創(chuàng)建一個(gè) 10GB 的緩存,,該緩存將保持活動(dòng)狀態(tài) 2 小時(shí),。上游 pypi 部分負(fù)責(zé)從運(yùn)行在端口 8080 上的 pypiserver提供內(nèi)容,。CheeseShop 是 Python Package Index 的秘密代號(hào),,這就是我將服務(wù)器命名為那個(gè)的原因,。您可以使用任何您喜歡的名稱或 IP 地址。

服務(wù)器部分指定端口 80 將用于傳入的 HTTP 連接,,并將這些請(qǐng)求轉(zhuǎn)發(fā)到 pypi 服務(wù)器,。

我不擁有 cheeseshop.com 域名,,但我可以使用它,因?yàn)槲覀冋趧?chuàng)建一個(gè)無法訪問 Internet 的獨(dú)立網(wǎng)絡(luò),。為了讓客戶端計(jì)算機(jī)能夠連接到 cheeseshop.com,您需要告訴 DNS 服務(wù)器如何解析它,。稍后會(huì)詳細(xì)介紹,。

要啟用這個(gè)新的虛擬主機(jī),您需要?jiǎng)?chuàng)建一個(gè)指向您剛剛在 /etc/nginx/sites-enabled/文件夾中創(chuàng)建的配置文件的符號(hào)鏈接:

$ sudo ln-s/etc/nginx/sites-available/cheeseshop.com/etc/nginx-sites-enabled/

這樣做將啟用新的虛擬主機(jī)。通過運(yùn)行檢查一切正常 sudo nginx-t.如果一切順利,,那就太好了!接下來,,要對(duì) DNS 進(jìn)行小的更改以將 cheeseshop.com 域映射到 IP 地址。

打開 /etc/hosts并為新創(chuàng)建的 cheeseshop.com 域添加一個(gè)條目:

主機(jī)文件包含域到 IP 地址的映射,,可幫助計(jì)算機(jī)為您提供正確的內(nèi)容,。Dnsmasq 將在啟動(dòng)時(shí)檢查此文件,因此最好重新啟動(dòng)它:

sudo service dnsmasq restart

也重新啟動(dòng) nginx 以取得良好的效果:

sudo service nginx restart

假設(shè)一切順利,您應(yīng)該能夠使用主機(jī)名從客戶端計(jì)算機(jī)安裝 Python 包,,而不是現(xiàn)在使用 IP。

使用服務(wù)器

要對(duì)此進(jìn)行測(cè)試,,請(qǐng)連接到 Raspberry Pi 的 WiFi 網(wǎng)絡(luò)并在客戶端計(jì)算機(jī)上創(chuàng)建一個(gè)新的虛擬環(huán)境并在虛擬環(huán)境中運(yùn)行以下命令:

pip--trusted-host cheeseshop.com安裝-i http://cheeseshop.com django

運(yùn)行該命令會(huì)產(chǎn)生以下輸出:

啟動(dòng)時(shí)啟動(dòng) pypiserver(可選)

為確保pypiserver 軟件在開機(jī)時(shí)自動(dòng)啟動(dòng),創(chuàng)建一個(gè)新的Linux 服務(wù)并使用 systemd對(duì)其進(jìn)行管理,。

1、創(chuàng)建服務(wù)將管理的啟動(dòng)腳本,,將其命名為 start-pypi-server.sh。向其中添加以下內(nèi)容:

2,、將腳本復(fù)制到/usr/bin 并使其可執(zhí)行:sudo cp start-pypi-server.sh/usr/bin/start-pypi-server.shsudo chmod+x/usr/bin/start-pypi-server.sh

3,、創(chuàng)建一個(gè)單元文件來定義一個(gè)systemd服務(wù)。將其命名為 pypiserver.service

這定義了一個(gè)基本服務(wù)。ExecStart指令指定將運(yùn)行以啟動(dòng)服務(wù)的命令,。

4,、將單元文件復(fù)制到 /etc/systemd/system并賦予權(quán)限:sudo cp pypiserver.service/etc/systemd/system/pypiserver.service

sudo chmod644/etc/systemd/system/pypiserver.service

啟動(dòng)并啟用服務(wù)

1、創(chuàng)建單元文件后,,您可以測(cè)試服務(wù):

sudo systemctl start pypiserver

2,、查看pypiserver服務(wù)狀態(tài):

sudo systemctl status pypiserver

這將產(chǎn)生類似這樣的輸出:

3,、停止或重啟服務(wù):sudo systemctl stop pypiserversudo systemctl restart pypiserver

4、最后,,使用 enable命令確保服務(wù)在系統(tǒng)啟動(dòng)時(shí)啟動(dòng):

sudo systemctl enable pypiserver

結(jié)論

我們已經(jīng)了解了如何在 Raspberry Pi 上創(chuàng)建自己的本地 PyPI 克隆,。你學(xué)會(huì)了如何

  • 將 Raspberry Pi 設(shè)置為接入點(diǎn)

  • 將 Raspberry Pi 設(shè)置為 DHCP 和 DNS 服務(wù)器

  • 克隆 PyPi

  • 使用網(wǎng)絡(luò)服務(wù)器提供克隆的包,。

我這樣做是為了證明可以離線運(yùn)行類似 PyPI 的概念,。我確信有更好或更有效的方法可以做到這一點(diǎn),。如有任何建議或批評(píng),請(qǐng)?jiān)谙路桨l(fā)表評(píng)論,。謝謝閱讀。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多