本次實驗要進行的是在CentOS7.2,內核版本3.10.0-327.el7.x86_64的環境下搭建LAMP和LNMP,並在此之上作一個WordPress博客網站。php
[root@Shining ~]# uname -a Linux Shining.ACG 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux [root@Shining ~]# cat /etc/centos-release CentOS Linux release 7.2.1511 (Core)
首先介紹一下LAMP和LNMP
LAMP
LMAP即Linux+Apache+Mysql/MariaDB+Perl/PHP/Python的首字母縮寫。這是一組經常使用來搭建動態網站或者服務器的開源軟件。它們自己都是各自獨立的程序,可是由於常被放在一塊兒使用,擁有了愈來愈高的兼容度,共同組成了一個強大的Web應用程序平臺。隨着開源潮流的蓬勃發展,開放源代碼的LAMP已經與J2EE和.Net商業軟件造成三足鼎立之勢,而且該軟件開發的項目在軟件方面的投資成本較低,所以受到整個IT界的關注。從網站的流量上來講,70%以上的訪問流量是LAMP來提供的,LAMP是最強大的網站解決方案。html
Linux
Linux是一套無償使用和自由傳播的類Unix操做系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操做系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡爲核心的設計思想,是一個性能穩定的多用戶網絡操做系統。mysql
本次使用的CentOS爲Linux的一個發行版。linux
Apache
Apache HTTP Server(簡稱Apache)是Apache軟件基金會的一個開放源碼的網頁服務器,能夠在大多數計算機操做系統中運行,因爲其多平臺和安全性被普遍使用,是最流行的Web服務器端軟件之一。它快速、可靠而且可經過簡單的API擴展,將Perl/Python等解釋器編譯到服務器中。nginx
Apache的主程序名叫httpd,這也是咱們實驗的時候須要安裝的程序之一。web
MySQL
MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 最流行的關係型數據庫管理系統,在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件之一。MySQL是一種關聯數據庫管理系統,關聯數據庫將數據保存在不一樣的表中,而不是將全部數據放在一個大倉庫內,這樣就增長了速度並提升了靈活性。MySQL所使用的 SQL 語言是用於訪問數據庫的最經常使用標準化語言。MySQL 軟件採用了雙受權政策,它分爲社區版和商業版,因爲其體積小、速度快、整體擁有成本低,尤爲是開放源碼這一特色,通常中小型網站的開發都選擇 MySQL 做爲網站數據庫。因爲其社區版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發環境。sql
本次實驗使用的數據庫軟件爲MySQL的一個分支軟件,叫作MariaDB。數據庫
MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,採用GPL受權許可 MariaDB的目的是徹底兼容MySQL,包括API和命令行,使之能輕鬆成爲MySQL的代替品。在存儲引擎方面,使用XtraDB(英語:XtraDB)來代替MySQL的InnoDB。apache
php
PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸取了C語言、Java和Perl的特色,利於學習,使用普遍,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它能夠比CGI或者Perl更快速地執行動態網頁。用PHP作出的動態頁面與其餘的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比徹底生成HTML標記的CGI要高許多;PHP還能夠執行編譯後代碼,編譯能夠達到加密和優化代碼運行,使代碼運行更快。編程
LNMP
LNMP和LAMP的區別就在於使用Nginx而不是Apache。
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev所開發,供俄國大型的入口網站及搜索引擎Rambler(俄文:Рамблер)使用。其特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好。
Nginx和Apache的優缺點對比
nginx 相對 apache 的優勢:
輕量級,一樣起web 服務,比apache 佔用更少的內存及資源。
抗併發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高併發下nginx 能保持低資源低消耗高性能。
高度模塊化的設計,編寫模塊相對簡單。
社區活躍,各類高性能模塊出品迅速啊。
apache 相對nginx 的優勢:
rewrite ,比nginx 的rewrite 強大。
模塊超多,基本想到的均可以找到。
少bug ,nginx 的bug 相對較多。
超穩定。
WordPress
WordPress是一種使用PHP語言開發的博客平臺,用戶能夠在支持PHP和MySQL數據庫的服務器上架設屬於本身的網站。也能夠把 WordPress看成一個內容管理系統(CMS)來使用。WordPress是一款我的博客系統,並逐步演化成一款內容管理系統軟件,它是使用PHP語言和MySQL數據庫開發的。用戶能夠在支持 PHP 和 MySQL數據庫的服務器上使用本身的博客。WordPress有許多第三方開發的免費模板,安裝方式簡單易用。不過要作一個本身的模板,則須要你有必定的專業知識。好比你至少要懂的標準通用標記語言下的一個應用HTML代碼、CSS、PHP等相關知識。WordPress官方支持中文版,同時有愛好者開發的第三方中文語言包,如wopus中文語言包。WordPress擁有成千上萬個各式插件和不可勝數的主題模板樣式。
下面正式進入實驗階段
Linux,即CentOS的安裝在這裏再也不贅述。
Apache安裝
Apache的軟件包名字爲httpd,使用yum安裝httpd:
[root@Shining ~]# yum install httpd
httpd安裝好以後須要將其啓動,啓動以前,咱們來看一下網絡狀況:
[root@Shining ~]# ss -tl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 5 192.168.122.1:domain *:* LISTEN 0 128 *:ssh *:* LISTEN 0 128 127.0.0.1:ipp *:* LISTEN 0 100 127.0.0.1:smtp *:* LISTEN 0 32 :::ftp :::* LISTEN 0 128 :::ssh :::* LISTEN 0 128 ::1:ipp :::* LISTEN 0 100 ::1:smtp :::* [root@Shining ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 5 192.168.122.1:53 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 127.0.0.1:631 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 32 :::21 :::* LISTEN 0 128 :::22 :::* LISTEN 0 128 ::1:631 :::* LISTEN 0 100 ::1:25 :::*
能夠看到http服務的80端口是沒有處於監聽狀態的。
接下來,咱們啓動httpd服務:
[root@Shining ~]# systemctl start httpd
此時,在瀏覽器中輸入localhost會出現Apache的歡迎頁面(此處使用CentOS 6.8演示,Cent OS 7效果相同):
MySQL
CentOS 7默認安裝了MariaDB,若是機子上沒有安裝數據庫軟件的話,可使用下面的方式安裝:
[root@Shining ~]# yum install mysql
安裝完以後開啓MySQL服務:
[root@Shining ~]# systemctl start mariadb [root@Shining ~]# ss -tl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 50 *:mysql *:* LISTEN 0 5 192.168.122.1:domain *:* LISTEN 0 128 *:ssh *:* LISTEN 0 128 127.0.0.1:ipp *:* LISTEN 0 100 127.0.0.1:smtp *:* LISTEN 0 128 :::http :::* LISTEN 0 32 :::ftp :::* LISTEN 0 128 :::ssh :::* LISTEN 0 128 ::1:ipp :::* LISTEN 0 100 ::1:smtp :::* [root@Shining ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 50 *:3306 *:* LISTEN 0 5 192.168.122.1:53 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 127.0.0.1:631 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::80 :::* LISTEN 0 32 :::21 :::* LISTEN 0 128 :::22 :::* LISTEN 0 128 ::1:631 :::* LISTEN 0 100 ::1:25 :::*
能夠看到,MySQL服務已經開啓,監聽3306端口。
進入MariaDB
[root@Shining ~]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 4 Server version: 5.5.44-MariaDB MariaDB Server Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
顯示數據庫
MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | db_name | | mysql | | performance_schema | | test | | testdb | +--------------------+ 6 rows in set (0.00 sec) MariaDB [(none)]>
建立數據庫:
MariaDB [(none)]> create database db_name;
切換數據庫:
MariaDB [(none)]> use db_name Database changed MariaDB [db_name]>
建立用戶:格式爲create user '用戶名'@'容許用戶使用哪一個主機登錄' identified by '密碼'
%意思是不限制登錄主機。
MariaDB [db_name]> create user 'username'@'%' identified by '123456';
爲用戶賦予權限:
MariaDB [db_name]> grant all privileges to 'username'@'%';
顯示用戶權限:
MariaDB [(none)]> show grants for 'username'@'%'; +---------------------------------------------------------------------------------------------------------+ | Grants for username@% | +---------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'username'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' | | GRANT ALL PRIVILEGES ON `db_name`.`db_name` TO 'username'@'%' | +---------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)
退出數據庫:
MariaDB [db_name]> exit Bye
數據庫的準備工做完成。
接下來進行php的安裝:
[root@Shining ~]# yum install php php-mysql
安裝完成以後來到httpd服務的主目錄
[root@Shining ~]# cd /var/www/html/
編輯文件phpinfo.php
[root@localhost html]# vim phpinfo.php
內容爲:
<?php echo phpinfo();
保存並退出。而後,打開瀏覽器,輸入主機ip/phpinfo.php就能夠看到PHP的信息:
接下來,下載WordPress:
網址爲https://cn.wordpress.org/wordpress-4.5.3-zh_CN.tar.gz
[root@localhost html]# wget https://cn.wordpress.org/wordpress-4.5.3-zh_CN.tar.gz
解壓,
[root@localhost html]# tar xvf wordpress-4.5.3-zh_CN.tar.gz
獲得wordpress文件夾,將文件夾裏的內容複製到/var/www/html下,其中有一個wp-config-sample.php,該文件爲wordpress的配置文件。複製爲wp-config.php便可生效。
編輯wp-config.php :
// ** MySQL 設置 - 具體信息來自您正在使用的主機 ** // /** WordPress數據庫的名稱 */ define('DB_NAME', 'database_name_here'); /** MySQL數據庫用戶名 */ define('DB_USER', 'username_here'); /** MySQL數據庫密碼 */ define('DB_PASSWORD', 'password_here'); /** MySQL主機 */ define('DB_HOST', 'localhost'); /** 建立數據表時默認的文字編碼 */ define('DB_CHARSET', 'utf8'); /** 數據庫整理類型。如不肯定請勿更改 */ define('DB_COLLATE', '');
將文件裏的database_name_here,username_here,password_here,localhost,分別改爲數據庫名稱,數據庫用戶名,數據庫密碼,數據庫主機。保存退出便會生效。
接下來,在瀏覽器中輸入wordpress主機地址,便可訪問wordpress:
這是提示用戶輸入數據庫信息的頁面,若是用戶沒有配置過wp-config.php文件,便會出現此頁面。
在這裏輸入數據庫信息,提交;
歡迎頁面,輸入標題,用戶名,密碼等信息。點擊安裝WordPress。
接下來進行Nginx的安裝與配置。
首先,php須要安裝一個php-fpm軟件:
[root@localhost wordpress]# yum install php-fpm
啓動php-fpm:
[root@localhost wordpress]# service php-fpm start
安裝Nginx:
[root@localhost yum.repos.d]# yum install nginx
配置Nginx配置文件/etc/nginx/nginx.conf
[root@Shining /var/www/html]# vim /etc/nginx/nginx.conf
添加或修改如下內容:
server { listen 80; server_name 172.16.253.159; #charset koi8-r; #access_log logs/host.access.log main; location / { root /var/www/html; index index.html index.htm index.php; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
重啓Nginx,重啓php-fpm
[root@localhost yum.repos.d]# service nginx restart Stopping nginx: [FAILED] Starting nginx: [ OK ] [root@localhost yum.repos.d]# service php-fpm restart Stopping php-fpm: [ OK ] Starting php-fpm: [ OK ]
注意,在啓動Nginx以前要關閉httpd服務,由於二者都使用80端口,會形成衝突。
訪問網站:
注意,若是未啓動php-fpm服務,則會出現如下錯誤:
總結:
本次實驗採用yum安裝,全部技術水平較低。實驗過程當中屢次出現問題,好在都解決了。
下面是出現的一些問題。
一、yum源問題。CentOS自帶的yum裏沒有Nginx,本身添加了repo文件。可是執行了一次yum clean all,yum makecache。問題便出現了,緣由是有一個源指向cdrom,可是找不到,我掛載cdrom,仍然出問題。而後檢查了autofs服務,正常。後來才發現是鏡像文件壞掉了……
二、Apache和Nginx區別。開始實驗時,我在Apache和Nginx之間搖擺,也不知道這兩個的區別,因而就都試了一遍。Apache很簡單,安裝好啓動服務就能夠用了。可是Nginx還須要配置,我在這裏卡住很久。由於是yum安裝,全部配置文件的路徑跟網上的教程講的有所不一樣,又花了很長時間找配置文件。而後又花了很長時間去配置。最後因爲沒有啓動php-fpm,致使出錯。結果有花了好長時間才找到這個讓人抓狂的錯誤緣由。
三、MySQL的問題。一開始忘了命令。又回去看視頻學習。結果第一次添加用戶沒有添加成功。致使wordpress一直報錯。第二次,wordpress由報錯,重啓後再也不報錯。緣由如今仍然不知道。
四、編寫博客時電腦出了問題,重啓以後丟了一半的內容(哭瞎了)。之後必定邊寫邊保存!
原創文章,做者:wangshuai,如若轉載,請註明出處:http://www.178linux.com/60558