PHP部署調優 伺服器初始化配置

2022-09-12 01:06:30 字數 4175 閱讀 4737

主機

php 應用開發好了之後,還需要部署到遠端主機上,才能讓使用者訪問我們提供的服務。一般來說,目前市場上提供的主機有四種:共享伺服器、虛擬私有伺服器(vps)、專用伺服器和 paas。每種主機適用場景不同,相應的**差距也很大。

共享伺服器

這種最便宜,一般來說這種適用於非開發者部署**,比如非程式設計師出生的站長,部署 wordpress、discuz 之類的 cms **,不需要懂**,也不需要配置伺服器環境,只需通過 web 介面操作即可,這種型別的主機資源由很多人共享,存放在不同類目,從安全和效能上來說都很差,而且不允許使用者遠端登入,支援的軟體和擴充套件有限,不建議開發者使用這種型別的主機。市面上常見的香港主機、美國主機就屬於這種伺服器。

虛擬私有伺服器

虛擬私有伺服器就是我們常說的 vps,這種型別的主機不是物理上的獨立主機,而是邏輯上的獨立主機,由一些列系統資源組成,分布在多台伺服器中,但是擁有自己獨立的檔案系統、根使用者、系統程序和 ip 位址,記憶體、cpu和頻寬是固定的,所以感覺上就是一**立的主機。我們可以 ssh 遠端登入,安裝自己需要的軟體,對伺服器配置進行調優和修改,所以擁有更多的自主性,當然**也要貴一些。典型代表有 linode 等。

專用伺服器

專用伺服器是機架式裝置,由主機商代你安裝、執行和維護,我們可以根據自己制定的規格配置專用伺服器。專用伺服器是真實的物理裝置,安裝、配置和維護成本較高,但是能提供更好的效能,一般大公司如 bat 都會部署這種型別主機。

paas

使用雲計算提供的平台即服務(paas)能快速發布 php 應用,與虛擬私有伺服器和專用伺服器不同,我們無需管理 paas,只需登入 paas 提供商的控制面板,點選按鈕即可。常見的 paas 如下:

使用雲計算提供的平台即服務(paas)能快速發布 php 應用,與虛擬私有伺服器和專用伺服器不同,我們無需管理 paas,只需登入 paas 提供商的控制面板,點選按鈕即可。常見的 paas 如下:

各個雲計算提供商的**有所不同,但基本和 vps 持平。

選擇主機方案

我們要根據自己的需求選擇合適的主機方案,對於中小型 php 應用,使用 vps 或 paas 是最佳選擇,目前來說,雲計算服務越來越發達,提供的功能越來越豐富,paas 是最佳選擇。國內的話就阿里雲 ecs 了。

設定伺服器

首次登入

首先,我們需要登入新買的伺服器,在本地裝置中開啟終端,執行ssh命令,登入伺服器:

ssh root@your_server_ip_address
這個命令可能會讓你確認新伺服器的可靠性,輸入yes並回車即可。

接下來需要輸入根使用者的密碼,一般購買伺服器後伺服器提供商會給你根使用者的密碼,輸入該密碼登入即可。

登入之後,我們可以公升級下作業系統的軟體:

# ubuntu

apt-get update;

apt-get upgrade;

# centos

yum update

新增使用者

我們要建立乙個非根使用者執行以後的日常操作以提高系統安全性,由於根使用者擁有一切許可權,所以我們應該盡量避免登入該使用者。

下面我們以 ubuntu 系統為例,演示如何建立新使用者deploy

# 建立使用者

adduser deploy

# 讓使用者擁有sudo許可權

usermod -a -g sudo deploy

# 設定使用者密碼

passwd deploy

對於 centos 使用者對應操作如下:

# 建立使用者

adduser deploy

# 讓使用者擁有sudo許可權

usermod -a -g wheel deploy

# 設定使用者密碼

passwd deploy

ssh 金鑰對認證

建立完新使用者後,在本地裝置以如下方式登入伺服器:

ssh deploy@your_server_ip_address
這個命令需要輸入該使用者密碼後才能登入,我們可以禁用密碼登入,以提高系統安全性,密碼認證有漏洞,會遭受暴力攻擊。對此,我們的解決方案就是使用金鑰對認證。

金鑰對認證是個複雜的話題,簡單來說,我們在本地裝置中建立一對「金鑰」,其中乙個是私鑰(儲存在本地),另乙個是公鑰(傳到遠端伺服器),之所以叫金鑰對,是因為使用公鑰加密的資訊只能使用私鑰解密。

使用 ssh 金鑰對認證方式登入遠端伺服器時,遠端伺服器會隨機建立乙個訊息,使用公鑰加密,然後把密文傳送給本地裝置,本地裝置收到密文後使用私鑰解密,然後把解密後的訊息傳送給遠端伺服器,遠端伺服器驗證解密訊息後,再授予訪問遠端伺服器的許可權。

需要指出的是,如果是多台電腦需要登入遠端伺服器,這或許不是最好的方式,因為需要在每台電腦中生成 ssh 金鑰對,然後再把每個金鑰對中的公鑰複製到遠端伺服器中。這種情況下,最好還是使用安全的密碼進行登入。不過,如果只有一台本地電腦訪問遠端伺服器,ssh 金鑰對認證是最好的方式。

生成 ssh 金鑰對的方式是使用以下指令:

ssh-keygen
然後按照螢幕上顯示的內容,按照提示輸入所需要的資訊。這個命令會在本地建立兩個檔案:~/.ssh/id_rsa.pub(公鑰)和~/.ssh/id_rsa(私鑰)。私鑰應該儲存在本地電腦中,而且要保密,公鑰必須複製到伺服器中,我們可以使用scp(安全複製)命令複製公鑰:

scp ~/.ssh/id_rsa.pub deploy@your_server_ip_address:
注:一定要在末尾加上:符號,這會把公鑰複製到遠端伺服器中 deploy 使用者的家目錄。

接下來,以deploy使用者的身份登入遠端伺服器,登入後,確認~/.ssh目錄是否存在,如果不存在,需要執行下面的命令手動建立:

mkdir ~/.ssh
然後執行下面的命令建立~/.ssh/authorized_keys檔案:

touch ~/.ssh/authorized_keys
這個檔案的內容是一系列允許登入這台遠端伺服器的公鑰。執行下面的命令,把剛上傳的公鑰新增到~/.ssh/authorized_keys檔案中:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
最後,我們需要修改幾個目錄和檔案的許可權,只讓deploy使用者訪問~/.ssh目錄和~/.ssh/authorized_keys檔案:

chown -r deploy:deploy ~/.ssh

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

至此,所有工作完成,你可以在本地通過 ssh 金鑰對認證登入到這條遠端伺服器了。

禁用密碼,禁止根使用者登入

下面我們要禁止所有使用者通過密碼登入,還要禁止根使用者登入。

登入到遠端伺服器後,開啟 ssh 配置檔案/etc/ssh/sshd_config,找到passwordauthentication設定,將其改為 no;然後,找到permitrootlogin設定,將其改為no,之後儲存改動,執行下面的命令重啟 ssh 服務,讓改動生效:

# ubuntu

sudo service ssh restart

# centos

sudo systemctl restart sshd.service

伺服器的安全是長久任務,需要長期關注,除了以上配置外,還建議安裝防火牆。ubuntu 使用者可以使用ufw,centos 使用者可以使用iptables

Linux伺服器初始化調優及安全加固

一,開啟iptables 僅開放必要的ssh埠和監控埠 示例 ssh tcp 22 snmpd udp 161 nrpe tcp 5666 本人公網ip全埠開放 二,除非特別熟悉selinux配置,否則請關閉selinux 檢視是否開啟 getenforce如果為強制和允許則關閉 vim etc s...

seetaface初始化引數調優

這個引數調整,主要是針對人臉檢測模組初始化引數做的修改,修改後的效果是人臉距離攝像頭的檢測距離變短,人臉識別,特徵提取,相似度計算的計算速度提公升.具體修改如下 seeta facedetection detector seeta fd frontal v1.0.bin detector.setmi...

Nginx Nginx伺服器配置調優

1 nginx伺服器配置調優 5 設定nginx全域性引數 vi usr local nginx conf nginx.conf 編輯 worker processes 2 工作程序數,為cpu的核心數或者兩倍 events 以下 在http 部分增加與修改 server names hash bu...