Linux 建立網站流程
(一) 更新系統
更新系統軟件包
在開始任何事情之前,確保你的系統是最新的。
- Debian / Ubuntu 系統:使用
apt
- Red Hat 系統(CentOS、Rocky Linux、Fedora):使用
dnf
(二) 安裝必要套件
安裝 EPEL 存儲庫
安裝常用工具
安裝 NGINX
info.php 測試 PHP 是否正常執行
mysql.php 測試資料庫連線
開啟防火牆對應 Port(80, 443, 3306)
安裝 MariaDB
安裝 PHP 與 php-fpm
安裝 Remi 儲存庫
啟用 PHP 模組
安裝 PHP 及必要模組
啟動 php-fpm 並設為開機啟動
修改 php-fpm 設定為 nginx 用戶
編輯設定檔:
找到並修改以下內容:
儲存後重新加載服務:
確認 PHP 版本
安裝 Composer
安裝 SSL 憑證 (Let's Encrypt)
安裝 Laravel 專案
安裝 Node.js
安裝 phpMyAdmin
安裝 PHPMyAdmin 所需模組
安裝 phpMyAdmin(建議手動下載)
- 下載最新版:https://www.phpmyadmin.net/
- 解壓縮:
- 移至適當位置:
- Apache 路徑:
/var/www/html/phpmyadmin
- Nginx 路徑:
/usr/share/nginx/html/phpmyadmin
- 設定
config.inc.php
修改內容:
建立並賦予權限:
開啟:
(三) Nginx 設定
建立網站存放目錄與首頁
建立網站設定檔
設定檔內容範例(支援 PHP):
重新載入 Nginx 並測試設定
SELinux 與權限設定(403 錯誤排除)
強制使用 HTTPS 的 Nginx 設定範例
(四) Apache 安裝與設定
安裝 Apache(httpd)
設定防火牆開放 http
網站預設首頁位置
提供多站台(VirtualHost)
建立設定檔
修改範例如下:
| 參數 |
說明 |
ServerName |
網站主機名稱 |
DocumentRoot |
網頁根目錄 |
ErrorLog |
錯誤日誌儲存位置 |
CustomLog |
存取日誌儲存位置 |
範例:設定
web1.domainX.linux.class
編輯內容如下:
建立目錄並新增首頁:
重新啟動 Apache:
使用 curl 測試:
(五) 使用 SFTP 上傳與下載檔案
本地端指令(sftp 模式下)
| 指令 |
功能 |
lcd |
切換本地目錄 |
lls |
列出本地檔案 |
lpwd |
顯示本地目錄 |
Linux 建立網站流程
(一) 更新系統
更新系統軟件包
在開始任何事情之前,確保你的系統是最新的。
aptdnf(二) 安裝必要套件
安裝 EPEL 存儲庫
安裝常用工具
安裝 NGINX
# 安裝 NGINX sudo dnf install -y nginx # 啟動與開機自動啟動 NGINX sudo systemctl enable nginx sudo systemctl start nginx # 查看 nginx 狀態 sudo systemctl status nginx # 檢查是否監聽 TCP/80 ss -ntulp | grep nginx # 查看版本 nginx -v # 預設網站根目錄: /usr/share/nginx/html # 可建立 info.php 檔案測試 PHPinfo.php 測試 PHP 是否正常執行
<?php phpinfo(); ?>mysql.php 測試資料庫連線
<?php $host = 'localhost'; $dbname = 'your_database_name'; $username = 'your_username'; $password = 'your_password'; try { $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "成功連接到數據庫"; } catch(PDOException $e) { echo "連接數據庫失敗: " . $e->getMessage(); } ?>開啟防火牆對應 Port(80, 443, 3306)
安裝 MariaDB
# 安裝 MariaDB sudo dnf install -y mariadb-server mariadb # 啟動 MariaDB 並設為開機啟動 sudo systemctl enable --now mariadb sudo systemctl status mariadb # MariaDB 安全初始化 sudo mysql_secure_installation # 登入資料庫 sudo mysql -u root -p # 查看資料庫 SHOW DATABASES; exit安裝 PHP 與 php-fpm
安裝 Remi 儲存庫
啟用 PHP 模組
sudo dnf module reset php sudo dnf module enable php:remi-8.0安裝 PHP 及必要模組
啟動 php-fpm 並設為開機啟動
sudo systemctl enable --now php-fpm sudo systemctl status php-fpm修改 php-fpm 設定為 nginx 用戶
編輯設定檔:
找到並修改以下內容:
儲存後重新加載服務:
確認 PHP 版本
安裝 Composer
# 下載安裝器 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" # 安裝 Composer 至全域路徑 sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer # 驗證安裝 composer --version安裝 SSL 憑證 (Let's Encrypt)
# 安裝 Certbot sudo dnf install -y certbot python3-certbot-nginx # 建立憑證 sudo certbot --nginx -d your_domain.com # 檢查憑證狀態 sudo certbot certificates安裝 Laravel 專案
# 建議安裝位置 cd /var/www/html/projectName # 建立 Laravel 專案 composer create-project --prefer-dist laravel/laravel . # 建立應用程式金鑰 php artisan key:generate # 調整 storage 權限 sudo chmod -R 775 storage sudo chmod -R ugo+rw storage # 建立符號連結 php artisan storage:link安裝 Node.js
sudo dnf module install nodejs sudo dnf install -y nodejs # 檢查版本 node -v npm -v安裝 phpMyAdmin
安裝 PHPMyAdmin 所需模組
安裝 phpMyAdmin(建議手動下載)
tar -zxf phpMyAdmin-x.x.x-all-languages.tar.gz mv phpMyAdmin-x.x.x-all-languages phpmyadmin/var/www/html/phpmyadmin/usr/share/nginx/html/phpmyadminconfig.inc.phpcp config.sample.inc.php config.inc.php # 生成隨機密鑰 openssl rand -base64 32修改內容:
$cfg['blowfish_secret'] = '生成的隨機字串'; $cfg['TempDir'] = '/usr/share/nginx/html/phpmyadmin/tmp';建立並賦予權限:
mkdir /usr/share/nginx/html/phpmyadmin/tmp chmod 777 /usr/share/nginx/html/phpmyadmin/tmp開啟:
(三) Nginx 設定
建立網站存放目錄與首頁
# 預設網頁路徑 cd /usr/share/nginx/html/ echo Hello > index.html # 建立網站目錄 mkdir -p /var/www/html/projectName建立網站設定檔
cd /etc/nginx/conf.d/ touch projectName.conf設定檔內容範例(支援 PHP):
server { listen 80; server_name MyWeb.com.tw www.MyWeb.com.tw; root /var/www/html/projectName; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include fastcgi.conf; fastcgi_pass unix:/run/php-fpm/www.sock; } location ~ /\.ht { deny all; } }重新載入 Nginx 並測試設定
# 測試設定是否正確 sudo nginx -t # 重啟或重新載入 Nginx sudo systemctl restart nginx # 或 sudo nginx -s reload sudo systemctl reload nginxSELinux 與權限設定(403 錯誤排除)
# 查看 SELinux 權限標籤 ls -Z /var/www/html/projectName # 臨時關閉 SELinux(僅限測試) sudo setenforce 0 # 若關閉後可正常顯示,再永久授權資料夾 sudo chcon -Rv --type=httpd_sys_content_t /var/www/html/projectName強制使用 HTTPS 的 Nginx 設定範例
server { if ($host = localhost) { return 301 https://$host$request_uri; } listen 80; server_name localhost; return 404; }(四) Apache 安裝與設定
安裝 Apache(httpd)
sudo dnf install httpd sudo systemctl enable httpd sudo systemctl start httpd sudo systemctl status httpd設定防火牆開放 http
網站預設首頁位置
cd /var/www/html/ echo "Apache 預設首頁" > index.html提供多站台(VirtualHost)
建立設定檔
cd /etc/httpd/conf.d/ cp /usr/share/doc/httpd/httpd-vhosts.conf www.my-example.com.conf修改範例如下:
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/var/www/html/dummy-host.example.com" ServerName dummy-host.example.com ServerAlias www.dummy-host.example.com ErrorLog "/var/log/httpd/dummy-host.example.com-error_log" CustomLog "/var/log/httpd/dummy-host.example.com-access_log" common </VirtualHost>ServerNameDocumentRootErrorLogCustomLog範例:設定
web1.domainX.linux.classcd /etc/httpd/conf.d/ cp /usr/share/doc/httpd/httpd-vhosts.conf web1.domainX.linux.class.conf編輯內容如下:
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/var/www/html/web1.domainX.linux.class" ServerName web1.domainX.linux.class ErrorLog "/var/log/httpd/web1.domainX.linux.class-error_log" CustomLog "/var/log/httpd/web1.domainX.linux.class-access_log" common </VirtualHost>建立目錄並新增首頁:
mkdir -p /var/www/html/web1.domainX.linux.class/ cd /var/www/html/web1.domainX.linux.class/ echo "Hello World web1" > index.html重新啟動 Apache:
使用 curl 測試:
(五) 使用 SFTP 上傳與下載檔案
# 連線到伺服器 sftp user@伺服器IP # 上傳檔案 put /path/to/local/file # 下載檔案 get /path/to/remote/file本地端指令(sftp 模式下)
lcdllslpwd