在Linux系統的日常管理和服務器運維中,掌握手動命令安裝軟件以及搭建基礎服務環境是核心技能之一。與圖形界面或包管理器(如apt、yum)相比,手動安裝提供了更高的靈活性和對軟件版本、配置的深度控制。本講將系統性地介紹從源碼編譯安裝軟件的通用流程,并演示如何搭建一個包含Web服務、數據庫和運行環境的基本服務器。
一、手動從源碼編譯安裝軟件
手動安裝通常指獲取軟件的源代碼(Source Code),在本地編譯(Compile)并安裝(Install)。這種方式適用于獲取最新版本、特定版本或進行自定義配置。
通用步驟(以安裝Nginx為例):
1. 準備編譯環境:安裝編譯器(如gcc)和依賴庫。
`bash
# 對于基于Debian/Ubuntu的系統
sudo apt update
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev -y
對于基于RHEL/CentOS的系統
sudo yum groupinstall "Development Tools"
sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
`
2. 獲取源代碼:從官方網站或鏡像下載源碼壓縮包。
`bash
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
`
3. 配置(Configure):運行configure腳本檢查系統環境并生成編譯規則(Makefile)。可以在此指定安裝路徑、啟用或禁用模塊。
`bash
./configure --prefix=/usr/local/nginx \
--with-httpsslmodule \
--with-httpv2module
`
--prefix參數定義了軟件的安裝根目錄。
4. 編譯(Make):根據生成的Makefile將源代碼編譯成可執行二進制文件。
`bash
make
`
5. 安裝(Make Install):將編譯好的文件復制到--prefix指定的系統目錄中。
`bash
sudo make install
`
6. 驗證與配置:
`bash
# 啟動Nginx
sudo /usr/local/nginx/sbin/nginx
# 檢查進程和端口
ps aux | grep nginx
ss -tlnp | grep :80
`
優勢與注意事項:
- 優勢:版本控制靈活,優化編譯參數,深度定制功能模塊。
- 注意事項:依賴管理需手動解決;更新和卸載不如包管理器方便;通常需要手動配置服務管理(如Systemd)。
二、服務器基本環境搭建實踐
一個典型的Web應用服務器基礎環境通常被稱為“LAMP”或“LNMP”棧。這里我們以“LNMP”(Linux, Nginx, MySQL, PHP)為例,結合手動與包管理安裝。
環境目標:在全新Linux服務器上,搭建支持動態網站的LNMP環境。
步驟簡述:
- 操作系統:確保使用CentOS 8+或Ubuntu 20.04+等現代發行版。
2. 安裝Nginx(作為Web服務器):
- 可以采用上述源碼編譯方式安裝,或使用包管理器快速安裝:
`bash
# Ubuntu/Debian
sudo apt install nginx -y
# CentOS/RHEL (需先啟用EPEL倉庫)
sudo yum install nginx -y
`
- 啟動并設置開機自啟:
`bash
sudo systemctl start nginx
sudo systemctl enable nginx
`
- 防火墻放行HTTP/HTTPS端口:
`bash
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
# 或使用ufw (Ubuntu): sudo ufw allow 'Nginx Full'
`
3. 安裝MySQL(作為數據庫服務器):
- 推薦使用官方倉庫或發行版倉庫安裝。
`bash
# Ubuntu/Debian
sudo apt install mysql-server -y
# CentOS/RHEL
sudo yum install mysql-server -y
`
- 啟動服務,運行安全初始化腳本:
`bash
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo mysqlsecureinstallation
# 根據提示設置root密碼、移除匿名用戶、禁止遠程root登錄等。
`
4. 安裝PHP(作為動態腳本處理引擎):
- 安裝PHP核心及與Nginx、MySQL通信所需的擴展。
`bash
# Ubuntu/Debian
sudo apt install php-fpm php-mysql php-cli php-curl php-gd php-mbstring -y
# CentOS/RHEL (可能需要啟用EPEL和Remi倉庫)
sudo yum install php-fpm php-mysqlnd php-opcache php-gd php-xml php-mbstring -y
`
- 啟動PHP-FPM服務:
`bash
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
`
5. 配置Nginx與PHP-FPM協同工作:
- 編輯Nginx的站點配置文件(如/etc/nginx/conf.d/default.conf或新建一個),確保對.php文件的請求被轉發給PHP-FPM處理。
`nginx
server {
listen 80;
servername yourserveripor_domain;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgipass unix:/run/php/php-fpm.sock; # 或 127.0.0.1:9000
fastcgiindex index.php;
fastcgiparam SCRIPTFILENAME $documentroot$fastcgiscriptname;
include fastcgiparams;
}
}
`
- 測試配置并重載Nginx:
`bash
sudo nginx -t
sudo systemctl reload nginx
`
6. 環境驗證:
- 在Web根目錄(如/var/www/html)創建測試文件info.php:
`php
`
- 瀏覽器訪問
http://your<em>server</em>ip/info.php,應顯示PHP信息頁面。
- 創建測試MySQL連接的PHP腳本,驗證數據庫訪問是否正常。
三、基礎服務管理要點
- 服務管理:熟練使用
systemctl(start, stop, restart, status, enable, disable)管理服務生命周期。 - 日志查看:使用
journalctl -u service_name或查看/var/log/下的日志文件(如nginx的/var/log/nginx/)進行故障排查。 - 權限與安全:確保服務進程以非root用戶運行;正確設置Web目錄(如
/var/www/html)的文件所有權和權限(如755/644)。 - 防火墻與SELinux:理解并配置好防火墻規則;在生產環境中,需正確處理SELinux上下文或將其置于寬容模式進行測試。
###
通過手動編譯安裝,你能夠深入理解軟件與操作系統的交互細節,并在需要時進行精準定制。而結合包管理器快速部署基礎服務棧(如LNMP),則能高效構建穩定可靠的服務器環境。將兩種方式結合運用,并根據實際場景選擇最合適的方案,是成為一名高效Linux系統管理員或DevOps工程師的關鍵。后續可以進一步探索配置負載均衡、緩存、容器化部署等更高級的主題。