精品軟體與實用教程
亞馬遜雲端申請後,需要創建EC2的伺服器實例,WEB伺服器搭建
AWS 亞馬遜雲 WEB伺服器搭建 。在亞馬遜雲端平台申請好伺服器後,還需要設定亞馬遜雲端伺服器後才能投入使用,Linux的虛擬機器實例,下面以Red Hat 9 為例,進行WEB伺服器搭建。 Red Hat 紅帽Red Hat Enterprise Linux 9 在AWS亞馬遜雲端是支援免費方案的,亞馬遜雲端設定Red Hat 9不需要額外付費。
AWS 亞馬遜雲端Linux Red Hat 9 系統初始配置
Red Hat Enterprise Linux 9 虛擬機器實例啟用之後,還是一個空白的系統,所有的環境都需要設定。
以下是2023年1月30日對亞馬遜雲端Linux Red Hat 9 系統初始設定教學。
修改伺服器root密碼以及遠端登入
aws ec2雲端伺服器創建完畢後,預設是使用 ec2-user 帳號登陸的,對很多資料夾是沒有權限的。需要更改為 root 超級管理員登入。
注意:在建立Linux Red Hat 9 作業系統時,需要先建立一個金鑰對進行SSH遠端控制,建立時“私鑰檔案格式”系統預設的是“.PPK”,使用PuTTY進行SSH連線的,這裡不要更改,如果選擇常用的“.pem”格式,將無法SSH連線伺服器。
安裝啟用DNF 指令的自動更新
安裝dnf-automatic
dnf install dnf-automatic
設定dnf-automatic為開機啟動。
systemctl start dnf-automatic.timer
如果你沒有開立Red Hat 訂閱權限,這一步就無法更新dnf倉庫。
安裝開發工具軟體包組
開發工具軟體包組裡面,包含了大部分Linux下的常用指令,以及工具軟體。
dnf group install 'Development Tools' -y
DNF更新系統軟體套件
將系統裡的軟體包更新到dnf上最新版本。
dnf -y update
配置系統虛擬記憶體
預設安裝作業系統是沒有分配swap空間的,需要手動新增。如果作業系統沒有配置swapfile(分配swap空間)會導致記憶體負載後發生錯誤。
使用 free -m 指令查看記憶體配置,如果Swap後面都是0的話則需要加入swap空間。
Swap後面全是0,下面開始創建Swap虛擬記憶體!
建立一個預先分配指定大小空間的文件,下面設定大約8G左右的硬碟空間作為系統虛擬記憶體使用。
sudo dd if=/dev/zero of=/swapfile bs=1024 count=8388608
劃為Swap空間時,伺服器會有一些慢,請耐心等待。
劃分完畢後,使用ls指令檢查檔案大小。
ls -lh /swapfile
大小查看過後,需要更改swap檔案的權限。
sudo chmod 600 /swapfile
操作之後,格式化swapfile。
sudo mkswap /swapfile
好了,現在swapfile檔案已經建立完成了,下面啟用swapfile檔。
sudo swapon /swapfile
最後,修改fstab檔案來實現重新啟動後swap 可以自動生效。
sudo vi /etc/fstab
使用VI 編輯/etc/fstab ,在文件末尾加入下面內容。
/swapfile swap swap sw 0 0
或使用echo指令添加。
echo '/swapfile swap swap sw 0 0' | sudo tee -a /etc/fstab
設定完畢後,reboot重新啟動伺服器。
如果你想停止swap,你可以使用 swapoff /swapfile ,刪除swap檔的指令是 rm -ir /swapfile。
修改伺服器時區
將伺服器時區修改為Asia/Shanghai,之後可以使用 timedatectl 命令查詢時區。
sudo timedatectl set-timezone Asia/Shanghai
禁用SELinux
永久停用SELinux,將SELinux屬性修改為 Disabled 後重新啟動伺服器。
vi /etc/selinux/config
AWS 安裝Red Hat 中文語言包
在Red Hat上安裝中文語言包,使用dnf指令,搜尋中文語言包。
dnf search langpacks
我們可以發現Red Hat上的簡體中文的安裝包是:langpacks-zh_CN.noarch
直接透過dnf指令安裝:
dnf install langpacks-zh_CN.noarch
按Y同意安裝,之後會自動下載安裝包進行安裝。
中文字體安裝完畢後,修改系統語言:
vi /etc/locale.conf
將原來的內容替換成下面內容LANG="zh_CN.UTF-8"
最後透過命令:locale -a 命令查看一下 zh_CN 有沒有安裝成功,之後,reboot 命令重新啟動伺服器。
在Red Hat 9 上安裝RPM 儲存庫
Remi 的RPM 儲存庫。運行以下命令以啟用EPEL和Remi儲存庫:
啟用Remi 儲存庫
sudo dnf install epel-release yum-utils
sudo dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
啟用EPEL 儲存庫
EPEL 9 已正式向公眾發布。 EPEL 儲存庫的安裝非常簡單,只需執行以下命令即可完成。
sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
設定安全群組防火牆
開啟防火牆:service iptables start
關閉防火牆:service iptables stop
預設防火牆:chkconfig iptables off
RedHat9的預設防火牆是關閉狀態,在伺服器上無需設置,接下來要在AWS雲端平台上設置一個透明防火牆。當然你也可以單獨開放你需要的連接埠。透明防火牆只是為了方便測試。
在AWS雲端平台的安全群組選項中,點選存取你設定EC2伺服器的對應安全群組。
我們可以看到,預設開放的連接埠只有22、80、443,透明防火牆就是開放全部入站連接埠。
點選右上角的編輯入站規則,之後再編輯入站規則中點選新增規則,將類型選擇為所有流量,來源資訊選擇任何位置ipv4,然後在後面IP位址輸入0.0.0.0/0
點擊儲存規則後,防火牆已經設定為透明防火牆,開啟伺服器的全部連接埠。
如何在RHEL 9 註冊Red Hat訂閱
安裝上面的Remi和EPEL的RPM儲存庫後,可以忽略官方的儲存庫,此處可以選擇註冊與不註冊。
如果你在RHEL 9 安裝期間尚未註冊系統,則可以透過以root使用者身份,應用以下命令來立即執行此操作。
如果你沒有Red Hat的用戶,請先到Red Hat 官方網站註冊:https://www.redhat.com/wapps/ugc/register.html
用戶註冊請填寫真實郵箱,註冊後電子郵件中會有一封驗證郵件的連接,啟動後帳戶才會生效。 Red Hat用戶註冊成功後,回到Xshell中,進行登入。
subscription-manager register
亞馬遜雲端配置LNMP環境
安裝LNMP(Nginx/MySQL/PHP)
採用Linux、PHP、MySQL的優點我們不用多說。
Nginx是一個小巧而高效的Linux下的Web伺服器軟體,是由Igor Sysoev 為俄羅斯訪問量第二的Rambler.ru 網站開發的,已經在一些俄羅斯的大型網站上運行多年,目前很多國內外的門戶網站、行業網站也都在是使用Nginx,相當的穩定。
Nginx相當的穩定、功能豐富、安裝配置簡單、低系統資源
如果你懶得手動安裝LNMP環境,你可以選擇使用LNMP一鍵安裝包,以下內容僅供學習參考。
AWS 安裝PHP
PHP是配置雲端伺服器時必不可少的,大部分的網站都是PHP語言編寫的,如果不安裝PHP,伺服器將無法對網站進行PHP解析。
在remi軟體儲存庫中,php最低版本是7.4,最高版本8.2。在Red Hat官方來源中,僅提供PHP8.1的穩定版本。如果想安裝低版本的PHP,可以切換到Remi來源中進行安裝。
首先檢查一下系統中 AppStream from RHUI (RPMs) 的元資料。
dnf module list php
啟用倉庫中的php模組:
dnf module enable php:remi-7.4
輸入Y之後,php7.4的模組流就啟用了。
如果想重置php模組流,可以使用下面的命令:
dnf module reset php
接下來就可以直接安裝php了,以下開始安裝PHP7.4和相關依賴。
dnf install php php-mysqlnd php-gd
輸入Y之後,開始安裝php7.4以及相關依賴軟體套件。
php -v
查看一下php安裝是否正確。
缺少mb_strlen函數,如何安裝mbstring(mb_strlen )
php7.2版本預設沒有安裝mb_strlen函數,需要使用dnf進行安裝。首先搜尋php-mbstring
dnf search php-mbstring
搜尋後進行安裝。
dnf install php-mbstring.x86_64
PHP安裝zip擴充
有些web程式需要php的ZIP擴充。需要安裝php-pecl-zip
dnf install php-pecl-zip
擴充安裝完成後重新啟動php服務
systemctl restart php-fpm
配置PHP
php7.4安裝完畢後,還需要進行一些常規的設定。
修改php存取權限,php預設的存取用戶是阿帕奇的apache用戶,我們需要將apache更改成nginx,因為我們需要使用nginx作為web服務端。
vi /etc/php-fpm.d/www.conf
user = nginx
group = nginx
user和group都要改成nginx。修改完畢之後按esc鍵,:wq 儲存退出檔案。
如果你在安裝WordPress 時無法建立目錄,要確保wp檔案存放目錄的使用者群組,nginx 的使用者群組還有PHP的使用者群組必須在同一使用者下才可以。
修改web檔案存放目錄的使用者存取權限。
chown -R nginx:nginx /var/www
修改PHP的主程式設定檔:
vi /etc/php.ini
cgi.fix_pathinfo 為CGI 提供*real* PATH_INFO/PATH_TRANSLATED 支援。 PHP的先前的行為是將PATH_TRANSLATED 設定為SCRIPT_FILENAME,而不是grok PATH_INFO 是什麼。有關PATH_INFO 的更多信息,請參閱cgi 規範。環境this 為1 將導致PHP CGI 修復其路徑以符合規範。一個設定為零會導致PHP 的行為與先前一樣。預設值為1。你應該修復你的腳本使用SCRIPT_FILENAME 而不是PATH_TRANSLATED。http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo = 1 修改為0
上傳檔案的最大允許大小。
http://php.net/upload-max-filesize
upload_max_filesize = 2M 檔案上傳大小,預設值太小,建議修改為1024M
此指令控制PHP是否輸出錯誤,筆記和警告也是如此。錯誤輸出在開發過程中非常有用,但是在生產環境中可能非常危險。取決於程式碼這是觸發錯誤,敏感資訊可能會洩漏超出您的應用程序,例如資料庫使用者名稱和密碼或更糟的。
對於生產環境,我們建議記錄錯誤而不是將它們傳送到stdout。
可能的值:
off =不顯示任何錯誤
stderr = 向STDERR 顯示錯誤(僅影響CGI/CLI 二進位!)
On 或stdout = 向STDOUT 顯示錯誤
預設值:開
發展價值:上
生產價值:關閉
http://php.net/display-errors
display_errors = Off 列印錯誤,修改為On
PHP 將接受的POST 資料的最大大小。
它的值可能為0 以停用限制。如果POST 資料讀取將被忽略透過enable_post_data_reading 停用。
http://php.net/post-max-size
post_max_size = 8M 表單最大值,建議修改為32M
每個腳本的最大執行時間,以秒為單位
http://php.net/max-execution-time
注意:對於CLI SAPI,此指令硬編碼為 0
max_execution_time=30 php腳本最大執行時間,修改為300或更高
修改session 權限:
例如修改/var/lib/php/session 的使用者群組以及權限。
cd /var/lib/php chown nginx:nginx ./session chmod -R 777 ./session
PHP已經配置完成了,最後一步,設定開機啟動和運行服務。
systemctl enable php-fpm
systemctl start php-fpm
常用操作命令:
重啟PHP:systemctl restart php-fpm
啟動PHP:systemctl start php-fpm
關閉PHP:systemctl stop php-fpm
PHP狀態:systemctl status php-fpm
PHP版本降級與升級
有些web 網站程式缺少維護,相容性差,只支援低版的PHP,對於這樣的web需求並滿足相互相容,需要將PHP 版本向下降級。例如有些使用SG11 進行加密的PHP程式。
SG11 是SourceGuardian 11的簡稱,目前 SourceGuardian官方版本已經更新到SourceGuardian 13 ,最關鍵的是兩個版本的檔案並不通用,而SG11 對PHP加密最高版本是PHP 7.3,所以需要安裝SG11 的web程式時,PHP的版本不能高於7.3 。
注意:如果你想安裝較低版本的PHP,例如PHP7.3的話,你首先需要將你的軟體來源同時降級。將remi-release-9.rpm降級為remi-release-8.rpm,因為在remi-release-9.rpm中沒有PHP7.4以下的版本。
Remi儲存庫降級
sudo dnf install epel-release yum-utils
sudo dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
首先需要停止PHP-FPM 及Nginx 服務。
systemctl stop php-fpm
systemctl stop nginx
服務停止之後,將/etc/php.ini檔案下載儲存到本機,不然降級之後還需要重新修改php.ini檔案。
如果你沒有安裝yum-utils,需要安裝yum-utils 。
yum-utils 是一個與yum 整合的實用程式集合,可以透過多種方式擴展yum 的自帶功能,從而使yum 更強大、更易於使用。
dnf install yum-utils -y
卸載刪除伺服器上安裝的PHP
dnf remove php\*
安裝PHP7.3
查看PHP的倉庫中存在的PHP模組
dnf module list php
因為之前模組流啟用的是php7.4,如果想安裝php7.3 需要重置PHP模組
dnf module reset php
啟用php7.3模組流。
dnf module enable php:7.3
PHP7.3 模組流啟用之後,以下進行安裝PHP7.3
dnf install php php-mysqlnd php-gd
之後使用php -v 名稱查看一下php版本。已經變成php7.3了。
php7.3安裝完成後,將先前備份的php.ini檔案覆寫到/etc/php.ini,之後修改/etc/php-fpm.d/www.conf 檔案內的使用者與使用者群組的名稱為nginx。
vi /etc/php-fpm.d/www.conf
user = nginx
group = nginx
上面操作全部完成後,最後啟動php與nginx服務。
systemctl start php-fpm
systemctl start nginx
安裝PHP7.2
PHP 7.x軟體套件可在幾個不同的儲存庫中使用。我們將使用 Remi儲存庫,其中提供了包括PHP在內的各種軟體包的較新版本。
檢查系統中啟用軟體倉庫
sudo yum repolist
之後檢查一下倉庫中的php模組。
dnf module list php
安裝remi-7.2,需要重置php模組。
dnf module reset php
重置模組後,選擇remi-7.2的模組流。
dnf module enable php:remi-7.2
下面開始安裝php remi-7.2
dnf install php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysqlnd
AWS 安裝nginx
執行下方指令,取得可用的nginx模組流的清單。
dnf module list nginx
系統預設的是nginx的1.14版本,如果想安裝更高的版本,需要重設一下nginx模組。
dnf module reset nginx
重置模組之後,我們就可以選擇想安裝的版本了,例如想安裝1.20版本。你只需要啟用1.20版本的模組流就可以了。
dnf module enable nginx:1.20
模組流啟用只有,使用dnf install 指令來安裝nginx1.20版。
dnf install nginx -y
設定一下nginx的開啟啟動,nginx服務運行。
systemctl enable nginx
systemctl start nginx
安裝完畢後,使用netstat 查看目前連接埠佔用情況
netstat -lntup
如果提示未找到指令,「-bash: netstat: 未找到指令」也需要安裝網路元件工具net-tools
dnf install net-tools -y
透過連接埠查看,我們可以看到,80埠已經北nginx佔用,nginx服務安裝成功。
常用命令:
重啟:
systemctl restart nginx
啟動:
systemctl start nginx
關閉:
systemctl stop nginx
狀態:
systemctl status nginx
設定Nginx
編輯Nginx設定檔nginx.conf,如果想讓web網站正常訪問,需要編輯修改Nginx 的設定檔nginx.conf,nginx.conf 是Nginx 的核心設定檔。使用VI 指令編輯/etc/nginx/nginx.conf。
vi /etc/nginx/nginx.conf
#配置使用者或群組user nginx; #允許產生的進程數,預設為1 worker_processes auto; #制定錯誤日誌路徑,等級。這個設定可以放入全域區塊,http區塊,server區塊,等級依序為:debug|info|notice|warn|error|crit|alert|emerg,等級越高,記錄越少,一般設定error error_log /var/log/nginx/error.log error; #TPnginx載入進程執行檔儲存檔 503 月/pudenginx. /usr/share/nginx/modules/*.conf; #工作模式及連線數上限-events全域設定events { #單一work處理允許的最大連線數,預設512 worker_connections 1024; } #http伺服器設定檔檔http { #ections 1024; } #http伺服器設定檔檔http { #。設定mime類型(郵件支援類型),類型由mime.types檔案定義。 include /etc/nginx/mime.types; #預設檔案類型,預設為text/plain default_type application/octet-stream; #自訂日誌格式log_format main '$remote_addr - $remote_user [$time_Lanft $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #設定存取日誌路徑和格式。 combined為日誌格式的預設值。 access_log /var/log/nginx/access.log main; #允許sendfile方式傳輸文件,預設為off,可以在http區塊,server區塊,location區塊。 sendfile on; #tcp_nopush on; #連線逾時時間,預設為75s,可以在http,server,location區塊。 keepalive_timeout 65; #gzip壓縮開關,on開啟Gzip壓縮,預設off 關閉gzip on; #啟用gzip壓縮的最小文件,小於設定值的檔案將不會壓縮gzip_min_length 10k; #gzip 壓縮等級,19, #設定壓縮所需的緩衝區大小gzip_buffers 32 4k; # 設定gzip壓縮針對的HTTP協定版本,沒做負載的可以不用gzip_http_version 1.1; #進行壓縮的檔案類型。 javascript有多種形式。其中的值可以在mime.types 檔案中找到。 gzip_types. #是否在http header中加入Vary: Accept-Encoding,建議開啟gzip_vary on; #從/etc/nginx/conf.d 目錄載入模組化設定檔。 include /etc/nginx/conf.d/*.conf; }
上面是Nginx比較簡單的基本配置,Server網站配置存放在/etc/nginx/conf.d/ 目錄下。
以下編輯Server網站配置,用於生產環境的Server網站配置。
#網域連接埠301重定向https server { server_name www.uzvod.com; # 網站的域名,可以是多個,用空格分開return 301 http://uzvod.com$request_uri; } #前期配置nginx暫時還沒有ssl證書,301重定向到根域名。 #網站設定核心區塊server { server_name uzvod.com; root /var/www/uzvod; index index.php index.html index.htm; location ~* ^/(upload|vendor|thinkphp|extend|addons|application)/.*\.(php|php deTP4 include; /etc/nginx/default.d/*.conf; # 從/etc/nginx/default.d 載入預設伺服器區塊的設定檔。 #偽靜態頁location / { if (!-e $request_filename) { rewrite ^/index.php(.*)$ /index.php?s=$1 last; rewrite ^/admin.php(.*)$ /admin.php?s=1485; /api.php?s=$1 last; rewrite ^(.*)$ /index.php?s=$1 last; break; } } }
新增好設定後,重新啟動nginx服務
systemctl restart nginx
新建一個測試頁面index.php,將下面內容複製在檔案中,這是一個PHP探針檔案。
重新給目錄配置權限
chown -R nginx:nginx /var/www
造訪網域後,網站可以成功開啟了,記下來需要線上申請ssl網域憑證。然後在nginx中配置網域憑證。
透過下面的證書機器人,已經成功申請了ssl域名證書,下面修改Nginx中Server的設定檔。
#網域連接埠301重定向https server { listen 80; listen [::]:80; server_name www.uzvod.com uzvod.com; # 網站的域名,可以是多個,用空格分開return 301 https://uzvod.com$request_uri atessl_slatessl_sl; /etc/letsencrypt/live/uzvod.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/uzvod.com/privkey.pem; # managed by Certsvod。 # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } #網站設定核心區塊server { listen 443 ssl http2; listen [root::743); /var/www/uzvod; index index.php index.html index.htm; http2_push_preload on; # Enable HTTP/2 Server Push ssl_certificate /etc/letsencrypt/live/uzvod.com/fullchain.pemate /etc/letsencrypt/live/uzvod.com/fullchain.pemate; /etc/letsencrypt/live/uzvod.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhcm /pt/pyet. by Certbot # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC). # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying 到 1TPT preckss reappee 1:51 https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data ssl_early_data on; ssl_session_cache shared:SSL:50m; # HSTS (ngx_http_cache shared:SSL:50m; # HSTS (ngx_http_headers_Disal 05768096800996996996) = 67689689969963) = 768968996)。 add_header Strict-Transport-Security max-age=31536000; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verdate and cache them ssl_stapling on; ssl_stapling_verd on./從/etc/nginx/default.d 載入預設伺服器區塊的設定檔。 location ~* ^/(upload|vendor|thinkphp|extend|addons|application)/.*\.(php|php5)$ { deny all; } #偽靜態頁location / { if (!-e $request_filename) { rewriterite/ ^/admin.php(.*)$ /admin.php?s=$1 last; rewrite ^/api.php(.*)$ /api.php?s=$1 last; rewrite ^(.*)$ /index.php?s=1TPbreakT1 rewrite ^(.*)$ /index.php?s=1TPbreakT1 85; proxy_redirect off; proxy_pass http://127.0.0.1:12345; proxy_http_version 1.1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Forxy $proxy_addr; $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; # Config for 0-RTT in TLSv1.3 proxy_set_header Early-Data $ssl_early_data; }
新增好設定後,重新啟動nginx服務
systemctl restart nginx
注意:Nginx設定成功之後,再使用下面的Certbot產生ssl網域證書,在Nginx中先不設定SSL存取規則。
Nginx透過Certbot 產生SSL網域憑證
Certbot 是一個免費的開源軟體工具,用於在手動管理的網站上自動使用Let's Encrypt憑證以啟用HTTPS。
Certbot 由電子前沿基金會(EFF) 開發,這是一個位於加州舊金山的501(c)3 非營利組織,旨在捍衛數位隱私、言論自由和創新。
Nginx配置好後,可以透過ssl網域憑證機器人Certbot生長城ssl網域憑證。具體安裝方法請查看:
參考閱讀:免費SSL憑證機器人:Certbot快速申請自動續約https網域憑證
AWS 安裝MySQL
取得mysql的模組
dnf module list mysql
MySQL8.0是伺服器上唯一的版本,以下進行安裝MySQL8.0
dnf install @mysql
使用dnf install mysql和dnf install @mysql安裝是不同的,@mysql安裝軟體包會更多。
安裝完畢後設定MySQL開機啟動
systemctl enable --now mysqld
之後檢查一下MySQL運作是否正常。
systemctl status mysqld
綠燈正常,紅燈故障,MySQL運作正常。
新增密碼及安全設定
運行 mysql_secure_installation 腳本,該腳本執行一些與安全性相關的操作並設定MySQL根密碼。
sudo mysql_secure_installation
腳本執行後,會詢問你是否配置VALIDATE PASSWORD component(驗證密碼元件),這一步選擇Y。
選擇密碼驗證策略等級,選擇0 (low)。
設定MySQL密碼,這裡輸入需要設定的密碼兩次。
確認是否繼續使用提供的密碼?輸入Y。
移除匿名使用者? 輸入Y。
允許root遠端登陸? 輸入N 。
移除test資料庫? 輸入Y。
重新載入權限表? 輸入Y。
配置Mysql遠端登陸,如果需要設定root帳號遠端登陸,重複上面步驟,在允許root遠端登陸這一步設為Y。如果暫時不需要配置Mysql遠端登陸,此段話可以忽略。
MySQL 在初始化完成之後,需要登入MySQL進行驗證
使用下面命令登錄,並輸入密碼:
mysql -u root -p
登入沒有異常,並且可以顯示mysql>操作台的話,配置安裝已經成功了。
你可以在MySQL操作台上新建用戶,也可以使用MySQL管理工具來新建用戶或資料庫。
MySQL操作台新建使用者的方法
建立新用戶,用以遠端登入
UserName 處填寫你的用戶名,Host 處填寫IP ,如8.8.8.8 ,表示該用戶只能在8.8.8.8 這個IP 上登錄,若不限制IP登錄,Host處填% ,Password 處填寫你的密碼。
create user 'UserName'@'Host' identified by 'Password';
給新建立的使用者授予權限,這裡的UserName 和Host 都和上一個步驟建立的使用者一樣。
grant all privileges on *.* to 'UserName'@'Host' with grant option;
測試遠端登入是否可用就好,以防萬一,下面更改密碼的MySQL語句:
alter user 'root'@'localhost' identified by 'Password';
到此為止MySQL 已經安裝完成,如果對設定檔有額外需求的話,請更改 /etc/my.cnf 中的設定檔。
上面設定都完成之後,重新啟動MySQL服務。
systemctl restart mysqld
MySQL 常用指令
啟動MySQL
systemctl start mysqld
重啟MySQL
systemctl restart mysqld
停止MySQL
systemctl stop mysqld
查看MySQL 狀態
systemctl status mysqld
AWS 安裝phpMyAdmin
phpMyAdmin 是一個用PHP編寫的免費軟體工具,旨在 透過Web處理MySQL的管理。phpMyAdmin 支援對MySQL 和MariaDB 的廣泛操作。常用操作(管理資料庫、表格、列、關係、索引、使用者、權限等)可以透過使用者介面執行,同時您仍可直接執行任何SQL 語句。
phpMyAdmin是MySQL的管理工具,phpMyAdmin網址:https://www.phpmyadmin.net/
安裝wget下載指令。
dnf install wget
下載最新版本的phpMyAdmin-5.1.3,注意下載tar.gz格式的壓縮套件。
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.tar.gz
解壓縮phpMyAdmin-5.1.3檔。
tar -zxvf phpMyAdmin-5.2.0-all-languages.tar.gz
將資料夾改名,這個名字你可以隨後定義。這裡預設更改成phpMyAdmin。
mv phpMyAdmin-5.2.0-all-languages phpMyAdmin
將檔案移動到web存放目錄。
mv phpMyAdmin /home/www
注意,如果你之前沒有安裝php-mysqlnd擴展,你還需要安裝php-mysqlnd擴充。
dnf install php-mysqlnd
配置phpMyAdmin
進入到phpMyAdmin目錄下的libraries目錄內,VI編輯config.default.php文件
cd /var/www/phpMyAdmin/libraries
vi config.default.php
將host後面的localhost修改為127.0.0.1,注意,不要使用小鍵盤輸入數字。
將$cfg['Servers'][$i]['host'] = 'localhost';改成$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'mysql密碼';
將$cfg['blowfish_secret'] = ''; 改成 $cfg['blowfish_secret'] = '123456*******';
注意:其中的'123456*******′為隨意的大於32個字元的密碼。
修改後儲存退出,:qw
返回
phpMyAdmin主目錄下,將設定文件 config.sample.inc.php 改名。
cd /var/www/phpMyAdmin/
mv config.sample.inc.php config.inc.php
VI編輯設定檔config.inc.php。
vi config.inc.php
修改phpMyAdmin用於cookies的短密碼。
$cfg['blowfish_secret'] = ''; 改成 $cfg['blowfish_secret'] = '123456*******';
注意:其中的'123456*******′為任意大於32位元的密碼字元。
這個密碼用於Cookies的加密,以免多個PhpMyAdmin或和其他程式共用Cookies時搞混。
短密碼修完畢後,修改host選項,將 $cfg['Servers'][$i]['host'] = 'localhost'; 改成 $cfg['Servers'][$i]['host'] = '127.0.0.1';
修改session路徑(例如/var/lib/php/session)的使用者群組以及權限,然後去到對應session路徑。
cd /var/lib/php
chown nginx:nginx ./session
chmod -R 777 ./session
在phpmyadmin目錄下新建tmp資料夾,權限設定777
mkdir /var/www/phpMyAdmin/tmp
chmod -R 777 /var/www/phpMyAdmin/tmp
最後修改一下phpMyAdmin檔案存放目錄的使用者存取權限。
chown -R nginx:nginx /var/www
解決phpMyAdmin中高級功能尚未完全設置,部分功能未啟動的問題。
在phpMyAdmin裡點選建立一個phpmyadmin的空資料庫就可以解決了。最後在Nginx中設定phpMyAdmin的存取路徑後就可以正常存取了。
mysqli::real_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES)
MySQL密碼輸入錯誤
亞馬遜雲端安裝WordPress
首先下載最新版本的WordPress。
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
下載完畢後解壓縮檔。tar -xzvf latest-zh_CN.tar.gz
移動資料夾到網站目錄下mv wordpress /var/www
cd /var/wwwroot
將wp-config-sample.php檔案改名cp wp-config-sample.php wp-config.php
修改網站設定檔:vi wp-config.php
WordPress資料庫的名稱:define( 'DB_NAME', 'WordPress' );
MySQL資料庫使用者名稱:define( 'DB_USER', 'root' );
MySQL資料庫密碼:define( 'DB_PASSWORD', 'mysql密碼' );
MySQL主機:define( 'DB_HOST', '127.0.0.1' );
建立資料表時預設的文字編碼:define( 'DB_CHARSET', 'utf8' );
在文件末尾添加以下程式碼:if(is_admin()) {add_filter('filesystem_method', create_function('$a', 'return "direct";' ));define( 'FS_CHMOD_DIR', 0751 );}
修改好設定檔後,重新加入使用者權限!
chown -R nginx:nginx /var/www
在nginx的設定檔中,加入下面程式碼,用於偽靜態的插件安裝:
server { listen 80; listen [::]:80; listen 443 ssl http2; server_name www.uzbox.tk; # 你的網域return 301 https://uzbox.tk$request_uri; # 將網域名稱30114 月 24234 月 309 月 42303333303 月 30133333033303 月; [::]:443 ssl http2; server_name uzbox.tk; root /home/wwwroot; ssl_certificate "/home/ssl/fullchain.cer"; ssl_certificate_key "/home/ssl/uzbox.tk.keym"; ssl_certificate_key "/home/ssl/uzbox.tk.keym"; ssl_sessionSachem ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA2 56:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CH ACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSDS+3+RSA ssl_prefer_server_ciphers on; # Config for 0-RTT in TLSv1.3 ssl_early_data on; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security "max-0. index.htm; try_files $uri $uri/ /index.php?$args; #用來支援wordpress中偽靜態的設定。 } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
新增好設定後,重新啟動nginx服務
systemctl restart nginx
最後在MySQL中建立一個的wordpress的資料庫。
例如:WordPress資料庫的名稱:define( 'DB_NAME', 'WordPress123' );
你需要在MySQL中使用指令或phpmyadmin中建立一個名字為WordPress123的資料庫,否在開啟網站會提示資料庫連線出錯。
配置好資料庫,登入wordpress頁面,輸入你的網站名稱,使用者帳號密碼等相關內容後,網站建立成功,登入網站後台後,首先要修改WordPress的固定鏈接,進入後台,開啟設定固定連結。
自定义结构后面填入%category%/%post_id%
安裝「No Category Base」外掛程式用來去掉分類目錄/category/
剩餘詳細配置請參考盒子鋪站內的內容。