本次實驗要進行的是在CentOS7.2,內核版本3.10.0-327.el7.x86_64的環境下搭建LAMP和LNMP,并在此之上做一個WordPress博客網站。
[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是最強大的網站解決方案。
Linux
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。
本次使用的CentOS為Linux的一個發行版。
Apache
Apache HTTP Server(簡稱Apache)是Apache軟件基金會的一個開放源碼的網頁服務器,可以在大多數計算機操作系統中運行,由于其多平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠并且可通過簡單的API擴展,將Perl/Python等解釋器編譯到服務器中。
Apache的主程序名叫httpd,這也是我們實驗的時候需要安裝的程序之一。
MySQL
MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬于 Oracle 旗下產品。MySQL 最流行的關系型數據庫管理系統,在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件之一。MySQL是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。MySQL所使用的 SQL 語言是用于訪問數據庫的最常用標準化語言。MySQL 軟件采用了雙授權政策,它分為社區版和商業版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。由于其社區版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發環境。
本次實驗使用的數據庫軟件為MySQL的一個分支軟件,叫做MariaDB。
MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,采用GPL授權許可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品。在存儲引擎方面,使用XtraDB(英語:XtraDB)來代替MySQL的InnoDB。
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安裝,所有技術水平較低。實驗過程中多次出現問題,好在都解決了。
下面是出現的一些問題。
1、yum源問題。CentOS自帶的yum里沒有Nginx,自己添加了repo文件。但是執行了一次yum clean all,yum makecache。問題便出現了,原因是有一個源指向cdrom,但是找不到,我掛載cdrom,仍然出問題。然后檢查了autofs服務,正常。后來才發現是鏡像文件壞掉了……
2、Apache和Nginx區別。開始實驗時,我在Apache和Nginx之間搖擺,也不知道這兩個的區別,于是就都試了一遍。Apache很簡單,安裝好啟動服務就可以用了。但是Nginx還需要配置,我在這里卡住好久。因為是yum安裝,所有配置文件的路徑跟網上的教程講的有所不同,又花了很長時間找配置文件。然后又花了很長時間去配置。最后由于沒有啟動php-fpm,導致出錯。結果有花了好長時間才找到這個讓人抓狂的錯誤原因。
3、MySQL的問題。一開始忘了命令。又回去看視頻學習。結果第一次添加用戶沒有添加成功。導致wordpress一直報錯。第二次,wordpress由報錯,重啟后不再報錯。原因現在仍然不知道。
4、編寫博客時電腦出了問題,重啟之后丟了一半的內容(哭瞎了)。以后一定邊寫邊保存!
原創文章,作者:wangshuai,如若轉載,請注明出處:http://www.www58058.com/60558
7有的時候直接yum -y install mysql會提示報錯Failed to start mariadb.service: Unit mariadb.service failed to load: No such file or directory.,安裝mariadb的正確方式為 yum -y install mariadb-server