centos7 yum搭建lnmp環境及配置wordpress超詳細教程

yum安裝lnmp環境是最方便,最快捷的一種方法。源碼編譯安裝需要花費大量的人類時間,當然源碼編譯可以個性化配置一些其它功能。目前來說,yum安裝基本滿足我們搭建web服務器的需求。

本文是我根據近期學習的內容加上我自己的理解,整理出來的從yum搭建lnmp環境到網站配置的超詳細的教程。如有錯誤的地方請指出,不勝感激!

 

lnmp環境分爲4部分,linux、nginx、mysql和php。

 

軟件安裝

linux系統

採用vm虛擬機最小化安裝centos7.6,目前最新的centos系統。

nginx安裝

配置nginx源

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

安裝nginx-1.16版本

 yum install -y nginx 

確認是否安裝:

yum install nginx,會默認創建nginx:nginx,組和賬戶。

文件默認位置:

  二進制文件在/usr/sbin/nginx
  配置文件夾在/etc/nginx/
  log文件夾在/var/log/nginx
yum安裝會自動創建/usr/lib/systemd/system/nginx.service,可以用systemctl 啓動停止。

mysql安裝

配置mysql源

rpm -ivh  http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

安裝mysql5.7

 yum -y install mysql-community-server 

確認是否安裝:

 

php安裝

配置php源

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm 

安裝php7.0

yum install -y php70w-common php70w-fpm php70w-opcache php70w-gd php70w-mysqlnd php70w-mbstring php70w-pecl-redis php70w-pecl-memcached php70w-devel 

上面該命令即可安裝拓展:

php-api, php-bz2, php-calendar, php-ctype, php-curl, php-date, php-exif, php-fileinfo, php-filter, php-ftp, php-gettext, php-gmp, php-hash, php-iconv, php-json, php-libxml, php-openssl, php-pcre, php-pecl-Fileinfo, php-pecl-phar, php-pecl-zip, php-reflection, php-session, php-shmop, php-simplexml, php-sockets, php-spl, php-tokenizer, php-zend-abi, php-zip, php-zlib

如果要加裝其它php拓展(如xml),直接」yum install php70w-xml」即可,非常簡單

確認是否安裝:


查看安裝的php拓展

 1 [[email protected] ~]# php -m
 2 [PHP Modules]
 3 bz2
 4 calendar
 5 Core
 6 ctype
 7 curl
 8 date
 9 dom
10 exif
11 fileinfo
12 filter
13 ftp
14 gd
15 gettext
16 gmp
17 hash
18 iconv
19 igbinary
20 json
21 libxml
22 mbstring
23 memcached
24 mysqli
25 mysqlnd
26 openssl
27 pcntl
28 pcre
29 PDO
30 pdo_mysql
31 pdo_sqlite
32 Phar
33 posix
34 readline
35 redis
36 Reflection
37 session
38 shmop
39 SimpleXML
40 sockets
41 SPL
42 sqlite3
43 standard
44 sysvmsg
45 sysvsem
46 sysvshm
47 tokenizer
48 wddx
49 xml
50 xmlreader
51 xmlwriter
52 xsl
53 Zend OPcache
54 zip
55 zlib
56 
57 [Zend Modules]
58 Zend OPcache
View Code

至此,nginx、mysql、php安裝完成。下一步,配置。

 

軟件配置及wordpress安裝

假設我們要搭建一個博客網站,wordpress。

nginx配置

首先看一下nginx配置文件夾

[[email protected] ~]# tree /etc/nginx
/etc/nginx
├── conf.d
│   └── default.conf
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── modules -> ../../usr/lib64/nginx/modules
├── nginx.conf
├── scgi_params
├── uwsgi_params
└── win-utf

再看一下nginx配置文件nginx.conf,其包含了conf.d文件夾內所有後綴是conf的配置文件。其實conf.d文件夾中以conf結尾的文件即爲網站的配置文件。

查看conf.d/default.conf默認配置文件。

每一個網站目錄都需要一個」server「來引導。server_name爲要訪問的網址(即域名,後面建立wordpress配置會詳細講解),root即爲網站的默認目錄,index爲索引。

下面我們來重建一個客戶端瀏覽器與web服務器交互的過程,來理解這些配置的作用。

瀏覽器裏面輸入「localhost」(即server_name,可以用ip地址代替),瀏覽器會默認訪問其80端口,恰好web服務器nginx監聽的就是80端口(配置中的listen   80),這時候nginx會找到網站的默認目錄root,即/usr/share/nginx/html,然後尋找該目錄下的index索引文件,即index.html、index.htm,我們來看一下/usr/share/nginx/html文件夾和index.html文件的內容:

index.html是一個html語言編寫的文件,可以在網頁上顯示出來,啓動nginx, systemctl start nginx ,訪問localhost(或者ip),即可顯示出來index.html文件中的內容

ok,整個過程再捋一下:

客戶端瀏覽器訪問web服務器80端口,nginx監聽到80端口有訪問,根據訪問的地址(域名)找到網站的默認目錄(上文是/usr/share/nginx/html),然後訪問index定義的索引文件index.html,最後nginx將index.html文件的內容返回給瀏覽器,顯示出來。

以上就是一個簡單的web服務器工作的過程,如果不嫌麻煩,完全可以編寫一個個的html文件來當做個人博客,訪問按文件名訪問即可。

php配置

但單純地訪問靜態的html網頁實現的功能太少了,所以,噹噹噹當,php出場了!用php語言來編寫網頁。nginx收到用戶請求後,訪問網站所在目錄,看到其索引文件是php結尾的,index.php,然後將其轉交給php處理,php處理後返回給nginx,nginx再返回給用戶。

從wordpress官網上下載源碼,然後解壓,查看其文件:

[[email protected] ~]# wget https://cn.wordpress.org/latest-zh_CN.tar.gz
[[email protected] ~]# tar xf latest-zh_CN.tar.gz 
[[email protected] ~]# ls wordpress/ index.php        wp-admin              wp-content         wp-load.php      wp-signup.php
license.txt      wp-blog-header.php    wp-cron.php        wp-login.php     wp-trackback.php
readme.html      wp-comments-post.php  wp-includes        wp-mail.php      xmlrpc.php
wp-activate.php  wp-config-sample.php  wp-links-opml.php  wp-settings.php

即該網站源碼的索引是index.php。

第一節安裝過程我們單獨安裝了nginx與php,它們根本就不認識,怎麼交互?所以需要將nginx與php程序關聯起來,即改動default.conf文件中的有關fastcgi的項,把註釋去掉,然後把 /script 改成 $document_root ,即

 

網站源碼,即上文的wordpress文件夾,放在任何位置都可以,但必須配置好權限,讓nginx所在的用戶組有讀寫權限。爲了方便,我們將其放在/usr/share/html/目錄下,並且更改其用戶爲nginx

[[email protected] ~]# mv wordpress/ /usr/share/nginx/html/ 
[[email protected] ~]# cd /usr/share/nginx/html
[[email protected] html]# chown -R nginx:nginx wordpress/
[[email protected] html]# ll
total 12
-rw-r--r--. 1 root  root   494 Aug 13  2019 50x.html
-rw-r--r--. 1 root  root   612 Aug 13  2019 index.html
drwxr-xr-x. 5 nginx nginx 4096 Jul 29 10:00 wordpress

接下來配置網站的nginx配置文件。假設我們註冊的網站域名爲domain.com,進入/etc/nginx/conf.d/文件夾,新建domain.com.conf文件(名稱隨意,但後綴必須爲conf,爲了方便區分使用「域名」+「.conf"),修改內容如下(可以直接複製default.conf,然後修改):

注意幾個要修改的地方,server_name改爲你註冊的域名(域名要解析到服務器的ip,一臺vps服務器上可以有多個網站,不同網站就是用server_name來區分的),root即網站根目錄,定位到上文我們複製到的地址,index裏添加index.php(wordpress目錄裏只有index.php,沒有index.html),還有下方的nginx與fastcgi關聯。

至此,網站的配置文件完成。下一步,配置mysql。

mysql配置

爲什麼需要數據庫?因爲數據太多,查找、修改等都是麻煩事,所以我們需要一個管理數據的軟件,即數據庫。mysql是一個關係型數據庫管理系統。

我們今天的主角wordpress同樣也是需要數據庫的,接下來我們用mysql創建一個數據庫。創建完,我們肯定需要訪問,訪問的話需要用戶權限,我們還需要創建一個用戶(儘量不要用mysql的root用戶去訪問,root的權限太大了)。

首先啓動mysql,

systemctl start mysqld

使用yum安裝完mysql之後,第一次會生成一個隨機密碼,在/var/log/mysqld.log中,可以用該密碼登入

[[email protected] ~]# grep password /var/log/mysqld.log 
2019-08-02T19:27:52.679467Z 1 [Note] A temporary password is generated for [email protected]: Fu0fT!4b,4,b

然後登錄mysql,輸入上方的密碼(密碼不會顯示出來),回車

[[email protected] ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection
id is 2 Server version: 5.7.27 Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

修改root密碼:

mysql> set password for [email protected] = password('Mysql./root123');
Query OK, 0 rows affected, 1 warning (0.00 sec)

創建用戶wordpress_user:

mysql> CREATE USER 'wordpress_user'@'host' IDENTIFIED BY 'Mysql./user123';
Query OK, 0 rows affected (0.00 sec)

創建數據庫wordpress,並且將其所有權賦給用戶wordpress_user:

mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on wordpress.* to "wordpress_user"@"localhost" identified by "Mysql./user123";
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

重新啓動nginx、mysql、php-fpm

systemctl restart nginx    
systemctl restart mysqld
systemctl restart php-fpm

爲避免出現其它問題,先關閉防火牆和selinux,後續再進行配置:

systemctl stop firewalld
setenforce 0

在瀏覽器中輸入 domain.com (這是域名domain.com要換成你自己的域名,和上方conf配置中一致),即出現wordpress初始化界面:

點擊「現在就開始!」,填入上面mysql創建的用戶名和數據庫:

點擊「提交」,

報錯是因爲,之前我們設置網站文件夾wordpress的用戶組爲 nginx:nginx ,而yum安裝php的默認用戶組爲 apache:apache ,查看php-fpm配置文件 vim /etc/php-fpm.d/ww.conf ,可以看到:

將apache改爲nginx,保存退出,重新啓動php-fpm, systemctl restart php-fpm ,即可正常進入下一步,

輸入「站點標題」、「用戶名」、「密碼」、「電子郵件」,即可安裝。安裝完成,即可登錄後臺管理界面:

至此,mysql配置完成,wordpress博客網站配置完成!

總結:

使用yum安裝nginx、mysql、php,方便快捷,實測在1c/1g虛擬機上安裝只需5分鐘!

單獨安裝完nginx、php軟件後,需要配置nginx關聯php。

配置wordpress網站,網站源碼(即根目錄)可以放置在任何位置,只要在nginx的conf配置文件裏定位到就可以。nginx的主要配置文件是 nginx.conf ,它會包含(include)conf.d文件夾下面所有後綴是」.conf"的配置文件,本質上是包含描述網站具體配置的server { } 代碼。

目前所有web服務器lnmp,lamp等,其安裝方式,源碼編譯安裝、yum安裝、一鍵腳本安裝、面板安裝等,具體實現原理即上面講述的兩點:

  1、配置nginx(或lamp)關聯php;

  2、配置網站的conf配置文件。