Linux下-LNMP環境搭建部落格網站(全過程)

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