通常我們所說的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