通常我們所說的LNMP是指一個網站基本的組織框架,即Linux系統支援,Nginx靜態服務,Mysql資料庫支援以及PHP動態程式語言支援。目前Mysql資料庫被Oracle資料庫分析公司收購,其創始人以自己女兒的名字命名並同時開發了一個資料庫,名為MariaDB資料庫,資料庫操作語法和語句基本與Mysql一致,對我們的操作絲毫沒有影響,所以我們以MariaDB為例,搭建一個個人部落格網站。
1.建站前準備:
因為我們的Linux系統自帶的防火牆功能十分強大,為減少因防火牆而導致資料庫或PHP啟動失敗和連線失敗,我們先將防火牆臨時關閉和永久關閉,在企業實際的生產當中,一般防火牆是開啟狀態,此時我們虛擬環境中不穩定因素太多,所以我們採取這樣的作法。
1.1關閉selinux:
#臨時關閉:setenforce 0, #並且檢視臨時關閉狀態:getenforce
永久關閉,我們通過修改檔案:sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config,將SELINUX=enforcing替換為SELINUX=disabled,這個過程需要重新啟動作業系統。
1.2關閉firewalld
#臨時關閉:systemctl stop firewalld #永久關閉:systemctl disable firewalld
以上就是我們將防火牆全部關閉。
2.從官方源安裝Nginx
因為我們的yum源裡面可能不是從Nginx官方下載Nginx服務,導致後面配置服務時出現各種問題,所以我們在配置檔案修改Nginx獲取源的優先順序,優先從Nginx官方倉庫下載;
2.1調整yum源的優先順序
1 [root@local ~]# rpm -qa yum-plugin-priorities 2 [root@local ~]# yum install yum-plugin-priorities -y
2.2配置yum源
[root@local ~]# vim /etc/yum.repos.d/nginx.repo
如果我們不進行以上配置,系統預設從CentOS官方下載
2.3安裝Nginx
[root@local ~]# yum install nginx -y
檢視Nginx版本
Nginx靜態服務元件安裝完成!
2.4配置Nginx執行程式的使用者,這裡我們建立test使用者
1 [root@local ~]# useradd -u 1111 test -s /sbin/nologin -M 2 [root@local ~]# id test
預設的Nginx配置中,使用者是本身nginx,我們將其修改為我們建立的程式賬戶
1 [root@local ~]# egrep "^user" /etc/nginx/nginx.conf 2 user nginx; 3 4 [root@local ~]# sed -i '/^user/c user test;' /etc/nginx/nginx.conf 5 6 [root@local ~]# egrep "^user" /etc/nginx/nginx.conf 7 user test;
配置好之後我們來檢查以下Nginx的語法
為保證我們Nginx元件和命令語法確實無誤,我們遞迴建立一個臨時資料夾,並且檢查一下語法
1 [root@local ~]# mkdir -p /var/lib/nginx/tmp/ 2 [root@local ~]# nginx -t
下面就是開啟Nginx服務,並且設定開機自啟動
1 [root@local ~]# systemctl start nginx 2 [root@local ~]# systemctl enable nginx ##開機自啟動
可以看到自啟動已經建立,並且提供給web瀏覽器訪問的80埠已經開放,現在我們可以從瀏覽器訪問nginx靜態服務
在這裡需要注意的是,我們訪問的地址就是我們所利用的Linux系統的ip地址,因為Nginx是執行在Linux系統之上的,此時Linux本身就是一臺伺服器
此時Linux系統的IP地址為:10.0.0.132,我們在web瀏覽器中輸入10.0.0.132,訪問Nginx:
訪問成功,說明Nginx服務啟動成功,ip通訊連線成功,至此,Nginx安裝告一段落。
3.安裝PHP動態服務,從第三方倉庫安裝PHP
3.1配置PHP安裝源:安裝三方倉庫
1 [root@local tools]# yum install epel-release -y 2 [root@local tools]# rpm -ql epel-release 3 /etc/yum.repos.d/epel.repo
下面我們配置/etc/yum.repos.d/webtatic.repo倉庫
現在webtatic.repo擴充套件源已經可用,一切準備就緒,就可以安裝PHP了,其實我們還可以檢查一下,系統當中是否含有舊版本的PHP,如果有,將其解除安裝,避免舊的元件和新版本衝突
以上結果顯示,系統中沒有PHP存在,我們直接下載
3.2下載安裝PHP元件
1 [root@local ~]#yum install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd -y 2 [root@local ~]#yum install php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd -y 3 [root@local ~]#yum install php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb -y
PHP全部安裝完成之後,我們要將PHP執行時的程式使用者修改成和Nginx執行時的程式使用者一樣,保持一致,我們前面建立的是test使用者,因為他們之間是相互交換資料的,當一個使用者傳送一個動態請求後Nginx就會把這個請求拋給具有動態處理能力的PHP。
[root@local ~]# sed -i '/^user/c user = test' /etc/php-fpm.d/www.conf [root@local ~]# sed -i '/^group/c group = test' /etc/php-fpm.d/www.conf [root@local blog]# egrep "^user|^group" /etc/php-fpm.d/www.conf user = test group = test
同樣的,和Nginx一樣,我們給他開啟服務,檢視PHP:9000埠,並加入開機自啟動:
1 [root@local ~]# systemctl start php-fpm 2 [root@local ~]# systemctl enable php-fpm 3 [root@local ~]# netstat -lntup|grep php-fpm
可以看到開機自啟動已經建立,預設9000埠已經開放,如果現在要在web瀏覽器中測試PHP會報錯誤,因為我們還沒有配置自己部落格的站點目錄和虛擬主機,這往往和資料庫是一起的,所以我們先要來搭建資料庫。
4.安裝MariaDB資料庫
1 [root@local ~]# yum install mariadb-server mariadb -y 2 [root@local ~]# systemctl start mariadb 3 [root@local ~]# systemctl enable mariadb 4 [root@local ~]# netstat -lntup|grep mysql
安裝完成後,和Nginx以及PHP一樣,我們啟動它的服務,並檢查資料庫開放埠,以及設定開機自啟動
可以看到服務已啟動,開機自啟動已經建立,預設埠3306已經響應開放,這時可以鍵入mysql命令檢視它的一些info,退出時我們用quit命令。
和前面兩者相比,資料庫因其在一個網站中充當的角色,涉及資料管理,資料安全,資料備份,建立使用者,管理使用者等等,因而顯得要複雜很多,我們還要進行很多配置操作,先給它配置資料庫登入密碼,並且這個時候建立的使用者和密碼就是以後在瀏覽器或者命令列登入資料庫時要用到的使用者和密碼。
1 [root@local ~]# mysqladmin password 'test123' 2 [root@local ~]# mysql -u root -p test123
密碼已經建立,直到現在我們搭建網站所要的LNMP環境基本配置完成,下面將要進行整體測試搭建環境。
5.LNMP架構配置及整體測試實踐
5.1 配置Nginx主配置檔案:nginx.conf
在最早安裝Nginx時我們已經配置好從Nginx官方倉下載,原則上這裡我們不用配置這個檔案,但因每個人機型不同,可能測試有不同程度的問題,所以在這裡,將要配置的檔案寫出來:
1 [root@local ~]# vim /etc/nginx/nginx.conf 2 user nginx; 3 worker_processes auto; 4 error_log /var/log/nginx/error.log notice; 5 pid /var/run/nginx.pid; 6 events { 7 worker_connections 1024; 8 } 9 10 http { 11 include /etc/nginx/mime.types; 12 default_type application/octet-stream; 13 14 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 15 '$status $body_bytes_sent "$http_referer" ' 16 '"$http_user_agent" "$http_x_forwarded_for"'; 17 18 access_log /var/log/nginx/access.log main; 19 include /etc/nginx/conf.d/*.conf; 20 }
5.2配置虛擬主機配置檔案
我們模擬配置一個網站的首頁,域名,訪問埠,靜態服務埠,資料庫服務埠等等,配置完成後,我們檢查Nginx的語法
1 [root@local conf.d]# cd /etc/nginx/conf.d 2 [root@local conf.d]# gzip default.conf 3 [root@local conf.d]# vim 01_blog.mylive.org.conf
配置好之後,我們重新載入Nginx服務,這裡,我們不採用restart重啟,我們採用的是平滑載入的方式啟動
5.3 建立站點目錄,並且將站點目錄的擁有者和群組的使用者設為test
1 [root@local~]# mkdir -p /data/blog 2 [root@local~]# chown -R www.www /data/blog
5.4 測試PHP服務
此test.php是PHP的內建函式呼叫,展示一些PHP的資訊,我們在瀏覽器中輸入ip地址,並且跟檔案test.php
測試成功,PHP服務執行正常
5.5 測試PHP連線MariaDB資料庫,建立檔案為test_mysql.php
[root@local ~]# vim /data/blog/test_mysql.php
此時在瀏覽器中輸入10.0.0.132/test_mysql.php
5.6 測試靜態l虛擬主機是否成功,建立名為index.html檔案
我們用瀏覽器開啟10.0.0.132/index.html
如果不帶域名訪問Nginx,預設會找第一個虛擬主機,是我們配置過的第一個虛擬主機
但是一個網站不止一個虛擬主機,比如再建立一個虛擬主機zhihu
在02_zhihu.mylive.org裡面修改虛擬主機的根目錄,在Nginx中,一個server標籤就是一個虛擬主機
再次檢查Nginx的語法nginx -t,顯示正常,並且重新七檔Nginx服務
如果拿IP地址來訪問,現在有兩個主機,就很難訪問到第二個,所以我們要在本地帶域名訪問,現在我們配置windows本地的DNS解析檔案hosts.
這裡有兩個問題:
1).部分windows 10 家庭中文版,沒有這個hosts檔案,建議在百度或bing站上搜尋關於此問題的解析,或者手動建立一個hosts檔案;
2).部分windows 10系統修改hosts檔案儲存需要管理員許可權,這個時候右擊檔案,找到屬性,裡面安全一欄找到高階選項,新增當前使用者並分配絕對控制的許可權,方可解決。
將10.0.0.132解析到本地,就可以用域名來訪問到虛擬主機
[root@local conf.d]# curl -H "host:blog.mylive.org" 10.0.0.132/test_mysql.php
截止目前,我們網站的搭建環境安裝和整站環境測試圓滿結束,下面就是我們將wordpress部落格後臺管理軟體安裝到系統,真正開啟我們的部落格管理
6.安裝wordpress軟體
安裝之後,目錄裡面存在一個壓縮包
將wordpress下的所有檔案移動到當前目錄,並且改變/data/blog的所有使用許可權為test使用者和組
現在我們在web瀏覽器中用域名直接可以訪問wordpress的wp-admin/setup-config.php檔案
頁面提示我們登入資料庫,因為我們還沒有在資料庫中建立庫和表,所以我們要先在系統命令列登入配置資料庫
建立名為blog的資料庫
檢視建立的資料庫
可以看到,除了我們自己建立的blog資料庫,還有其他三個資料庫,為MariaDB資料庫的內建庫,在刪除的時候,切記不要刪除,它是用來管理系統使用者的,
以上命令用來設定root使用者來管理資料庫,但許可權太大,意思是授予root使用者管理blog下的所有表,並且只能在本地localhost來訪問
以上命令,是讓配置的資料庫生效,現在我們一個簡單的資料庫的建立就完成了,現在我們來到瀏覽器頁面
我們在頁面所填的提交資訊就是我們前幾步在linux系統對MariaDB資料庫的配置,值得注意的是最後一項,表字首,特變關鍵,加一個表字首,起到了對資料庫的保護作用,攻擊者就很難知道我們的表結構,是為了安全而生。
出現此頁面,就表明我們連線上MariaDB資料庫,但是現在進入資料庫查表,提示沒有資料表,
所以我們在web頁面建立表
現在我們在系統裡面查blog資料庫的資料表,可以看到,他已經根據我們在web頁面設定的生成
經過上一步驟的登入後,我們就來到了非常漂亮的部落格管理頁面,在這裡,我們就可以開心的寫文章,發表文章,管理文章。
總結以上,就是我們整個部落格網站從LNMP環境搭建,配置除錯,部落格建站模板下載解壓,建立資料庫,到最後登入出現頁面。還是順利,此過程可能因部分真實物理機引數配置而有所變化,會出現問題,但是不要怕,總的過程就是如此這般,遇到問題我們可以諮詢身邊的技術大牛,或者去cnblog、百度、CSDN、指令碼之家、知乎,吾愛破解論壇、菜鳥教程等等網站去搜集資料,最重要的還是要yum源配置正確,希望此篇文章能對想搭建網站的各位小夥伴有所幫助。
---《墨雲流香》---
QQ:1757468585