Linux新手隨手筆記3.1-LNMP架構部署動態網站環境

 

因爲咱們今天的實驗內存使用比較大,咱們給他調成4GB的。php

LNMP動態網站部署架構是一套由Linux + Nginx + MySQL + PHP組成的動態網站系統解決方案,具備免費、高效、擴展性強且資源消耗低等優良特性html

源碼包程序

在RPM(紅帽軟件包管理器)技術出現以前,Linux系統運維人員只能經過源碼包的方式來安裝各類服務程序,這是一件很是繁瑣且極易消耗時間與耐心的事情;並且在安裝、升級、卸載程序時還要考慮到與其餘程序或函數庫的相互依賴關係,這就要求運維人員不只要掌握更多的Linux系統理論知識以及高超的實操技能,還須要有極好的耐心才能安裝好一個源碼軟件包。考慮到本書的讀者都是剛入門或準備入門的運維新人,由於本書在前面的章節中一直都是採用Yum軟件倉庫的方式來安裝服務程序。可是,如今依然有不少軟件程序只有源碼包的形式,若是咱們只會使用Yum軟件倉庫的方式來安裝程序,則面對這些只有源碼包的軟件程序時,將充滿無力感,要麼須要等到第三方組織將這些軟件程序編寫成RPM軟件包以後再行使用,要麼就只能尋找相關軟件程序的替代品了(並且替代軟件還必須具有RPM軟件包的形式)。因而可知,若是運維人員只會使用Yum軟件倉庫來安裝服務程序,將會造成知識短板,對往後的運維工做帶來不利。node

使用源碼包來安裝服務程序具備兩個優點。mysql

1.源碼包的可移植性很是好,幾乎能夠在任何Linux系統中安裝使用,而RPM軟件包是針對特定系統和架構編寫的指令集,必須嚴格地符合執行環境才能順利安裝(即只會去「生硬地」安裝服務程序)。linux

2.使用源碼包安裝服務程序時會有一個編譯過程,所以能夠更好地適應安裝主機的系統環境,運行效率和優化程度都會強於使用RPM軟件包安裝的服務程序。也就是說,能夠將採用源碼包安裝服務程序的方式看做是針對系統的「量體裁衣」。nginx

通常來說,在安裝軟件時,若是能經過Yum軟件倉庫來安裝,就用Yum方式;反之則去尋找合適的RPM軟件包來安裝;若是是在沒有資源可用,那就只能使用源碼包來安裝了。c++

使用源碼包安裝服務程序的過程看似複雜,其實在概括彙總後只須要4~5個步驟便可完成安裝。正則表達式

第1步:下載及解壓源碼包文件。爲了方便在網絡中傳輸,源碼包文件一般會在歸檔後使用gzip或bzip2等格式進行壓縮,所以通常會具備.tar.gz與.tar.bz2的後綴。要想使用源碼包安裝服務程序,必須先把裏面的內容解壓出來,而後再切換到源碼包文件的目錄中:算法

[root@localhost ~]# tar xzvf FileName.tar.gzsql

[root@localhost ~]# cd FileDirectory

第2步:編譯源碼包代碼。在正式使用源碼包安裝服務程序以前,還須要使用編譯腳本針對當前系統進行一系列的評估工做,包括對源碼包文件、軟件之間及函數庫之間的依賴關係、編譯器、彙編器及鏈接器進行檢查。咱們還能夠根據須要來追加--prefix參數,以指定稍後源碼包程序的安裝路徑,從而對服務程序的安裝過程更加可控。當編譯工做結束後,若是系統環境符合安裝要求,通常會自動在當前目錄下生成一個Makefile安裝文件。

[root@localhost~]# ./configure --prefix=/usr/local/program

第3步:生成二進制安裝程序。剛剛生成的Makefile文件中會保存有關係統環境、軟件依賴關係和安裝規則等內容,接下來即可以使用make命令來根據Makefile文件內容提供的合適規則編譯生成出真正可供用戶安裝服務程序的二進制可執行文件了。

[root@localhost ~]# make

第4步:運行二進制的服務程序安裝包。因爲不須要再檢查系統環境,也不須要再編譯代碼,所以運行二進制的服務程序安裝包應該是速度最快的步驟。若是在源碼包編譯階段使用了--prefix參數,那麼此時服務程序就會被安裝到那個目錄,若是沒有自行使用參數定義目錄的話,通常會被默認安裝到/usr/local/bin目錄中。

[root@localhost ~]# make install

第5步:清理源碼包臨時文件。因爲在安裝服務程序的過程當中進行了代碼編譯的工做,所以在安裝後目錄中會遺留下不少臨時垃圾文件,本着儘可能不要浪費磁盤存儲空間的原則,可使用make clean命令對臨時文件進行完全的清理工做。

[root@localhost~]# make clean

爲何一般是安裝一個服務程序,源碼包的編譯工做(configure)與生成二進制文件的工做(make)會使用這麼長的時間,而採用RPM軟件包安裝就特別有效率呢?其實緣由很簡單,在RHCA認證的RH401考試中,會要求考生寫一個RPM軟件包。劉遄老師會在本書的進階篇中講到,其實RPM軟件包就是把軟件的源碼包和一個針對特定系統、架構、環境編寫的安裝規定打包成一塊兒的指令集,所以爲了讓用戶都能使用這個軟件包來安裝程序,一般一個軟件程序會發布多種格式的RPM軟件包(例如i38六、x86_64等架構)來讓用戶選擇。而源碼包的軟件做者確定但願本身的軟件可以被安裝到更多的系統上面,可以被更多的用戶所瞭解、使用,所以便會在編譯階段(configure)來檢查用戶當前系統的狀況,而後制定出一份可行的安裝方案,因此會佔用不少的系統資源,須要更長的等待時間。

LNMP動態網站架構

LNMP動態網站部署架構是一套由Linux + Nginx + MySQL + PHP組成的動態網站系統解決方案(其logo見圖20-1)。LNMP中的字母L是Linux系統的意思,不只能夠是RHEL、CentOS、Fedora,還能夠是Debian、Ubuntu等系統

在使用源碼包安裝服務程序以前,首先要讓安裝主機具有編譯程序源碼的環境,他須要具有C語言、C++語言、Perl語言的編譯器,以及各類常見的編譯支持函數庫程序。所以請先配置穩當Yum軟件倉庫,而後把下面列出的這些軟件包都通通安裝上:

咱們執行一下:

yum install -y apr* autoconf automake bison bzip2 bzip2* compat* cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libtiff libtiff* make mpfr ncurses* ntp openssl openssl-devel patch pcre-devel perl php-common php-gd policycoreutils telnet t1lib t1lib* nasm nasm* wget zlib-devel

是否是不少啊,這裏建議複製。由於你打出來也記不住。

真的是不少不少。

LNMP動態網站架構,

Linux系統+Nginx網站+Mysql數據庫+PHP網頁語言。

源代碼安裝+一套安裝規則=RPM的一個軟件包。而後咱們再將多個RPM軟件包打包放到一個目錄裏面咱們就有了一個yum倉庫。

源代碼安裝是很麻煩,可是也有好處,就是根據咱們的系統環境定製安裝,更加適合咱們的工做和環境。

RPM:標準化的安裝,有一套本身的規則,他只是能幫你安裝上,可是並不必定符合你的系統需求。

源代碼安裝:定製化的安裝,好比說定製你的西服同樣。

你們能夠在Windows系統中下載後經過ssh服務傳送到打算部署LNMP動態網站架構的Linux服務器中,也能夠直接在Linux服務器中使用wget命令下載這些源碼包文件。根據FHS協議,建議把要安裝的軟件包存放在/usr/local/src目錄中:

[root@linuxprobe ~]# cd /usr/local/src [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/cmake-2.8.11.2.tar.gz [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/Discuz_X3.2_SC_GBK.zip [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/freetype-2.5.3.tar.gz [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/jpegsrc.v9a.tar.gz [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/libgd-2.1.0.tar.gz [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/libmcrypt-2.5.8.tar.gz [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/libpng-1.6.12.tar.gz [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/libvpx-v1.3.0.tar.bz2 [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/mysql-5.6.19.tar.gz [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/nginx-1.6.0.tar.gz [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/openssl-1.0.1h.tar.gz [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/php-5.5.14.tar.gz [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/pcre-8.35.tar.gz [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/t1lib-5.1.2.tar.gz [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/tiff-4.0.3.tar.gz [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/yasm-1.2.0.tar.gz [root@linuxprobe src] # wget https://www.linuxprobe.com/Software/zlib-1.2.8.tar.gz [root@linuxprobe src]# ls zlib-1.2.8.tar.gz libmcrypt-2.5.8.tar.gz pcre-8.35.tar.gz cmake-2.8.11.2.tar.gz libpng-1.6.12.tar.gz php-5.5.14.tar.gz Discuz_X3.2_SC_GBK.zip libvpx-v1.3.0.tar.bz2 t1lib-5.1.2.tar.gz freetype-2.5.3.tar.gz mysql-5.6.19.tar.gz tiff-4.0.3.tar.gz jpegsrc.v9a.tar.gz nginx-1.6.0.tar.gz yasm-1.2.0.tar.gz libgd-2.1.0.tar.gz openssl-1.0.1h.tar.gz

而後咱們發現不能下載,由於沒有外網啊。

因爲咱們沒給虛擬機橋接模式外網咱們就直接外面下載好了而後經過xftp這個軟件給他放上去。

咱們下載好了以後給她放進去。

放進去以後咱們ls看一下。

沒問題,都在了。

CMake是Linux系統中一款經常使用的編譯工具。要想經過源碼包安裝服務程序,就必定要嚴格遵照上面總結的安裝步驟—下載及解壓源碼包文件、編譯源碼包代碼、生成二進制安裝程序、運行二進制的服務程序安裝包。接下來在解壓、編譯各個軟件包源碼程序時,都會生成大量的輸出信息,下文中將其省略。

咱們先來解壓編譯一下cmake

其實有5個步鄹:

1:下載解壓     tar xzvf 命令解壓

2:編譯——檢測系統環境,定製出安裝規則文件。  在./config 或者 ./configure中,就是收集系統工做。

3:生成——根據安裝規則文件,生成出能夠安裝的二進制文件     make

4:安裝——執行咱們二進制文件。   make install

5:清理——清理剛剛工做中產生的垃圾文件。  make clean

咱們接下來這17個安裝包都是這個流程操做。(會很無聊,就不一個一個截圖了)

而後咱們進行編譯,./configure

而後咱們製做二進制文件 make

而後咱們進行安裝,make install

到這一步咱們就安裝好一個了,其實咱們這樣一個一個寫太麻煩了。

當咱們下載解壓完了以後,直接

[root@linuxprobe cmake-2.8.11.2]# ./configure ;make ;make install
直接執行就OK,不用一個一個執行,中間用;隔開。
咱們如今看一下這個文件就有了這個解壓完的目錄。還有16個。

 配置Mysql服務

咱們看到這個程序有不少安裝軟件包,咱們須要按照順序來進行編譯,由於他是有依賴關係的。

咱們先來建立一個用戶叫作mysql。由於咱們如今須要本身來管理程序了。專門用於負責運行MySQL數據庫。請記得要把這類帳戶的Bash終端設置成nologin解釋器,避免黑客經過該用戶登陸到服務器中,從而提升系統安全性。

建立一個用於保存MySQL數據庫程序和數據庫文件的目錄,並把該目錄的全部者和所屬組身份修改成mysql。其中,/usr/local/mysql是用於保存MySQL數據庫服務程序的目錄,/usr/local/mysql/var則是用於保存真實數據庫文件的目錄。

其實/usr/local/mysql/var是由兩部分組成出來的,

1./usr/local/mysql :mysql服務程序保存的路徑

2./usr/local/mysql/var :真實的數據庫文件所保存的路徑。

而後咱們解壓mysql壓縮包,(這裏就不截圖過程了,太大了)

 

解壓完了以後咱們進入mysql解壓目錄下,而後咱們進行編譯和製做二進制文件,安裝

咱們如今說一下咱們這個cmake編譯工具。剛纔咱們上面使用的是./config 活着./cofigure。這個語句大體定義了3個信息,第一個-DCMAKE_INSTALL_PREFIX=/usr/local/mysql是服務程序保存的路徑,第二個-DMYSQL_DATADIR=/usr/local/mysql/var是保存真是數據庫的,咱們剛纔上面說過這兩個目錄。咱們第三個-DSYSCONFDIR=/etc是配置文件目錄。

這裏還有一個知識點,上面也說到了,就是命令A  ; 命令B ; 命令C就是先執行命令A而後B而後C。

終於安裝完了,返回來繼續咱們的mysql配置

首先刪除掉咱們的/etc/目錄下的my.cnf文件,這是咱們mysql程序的主配置文件,他是默認的,可是不符合咱們當前工做環境的。

在MySQL數據庫程序的保存目錄scripts內找到一個名爲mysql_install_db的腳本程序,執行這個腳本程序並使用--user參數指定MySQL服務的對應帳號名稱(在前面步驟已經建立),使用--basedir參數指定MySQL服務程序的保存目錄,使用--datadir參數指定MySQL真實數據庫的文件保存目錄,這樣便可生成系統數據庫文件,也會生成出新的MySQL服務配置文件。

這個腳本的話首先--user=mysql是mysql用戶名稱,--basedir=/usr/local/mysql程序目錄,--datadir=/usr/local/mysql/var是用來保存真實數據庫的目錄。

把系統新生成的MySQL數據庫配置文件連接到/etc目錄中,而後把程序目錄中的開機程序文件複製到/etc/rc.d/init.d目錄中,以便經過service命令來管理MySQL數據庫服務程序。記得把數據庫腳本文件的權限修改爲755以便於讓用戶有執行該腳本的權限:

mysql.server叫作啓動文件,咱們待會就能夠經過複製後的那個文件啓動mysql.

編輯剛複製的MySQL數據庫腳本文件,把第4六、47行的basedir與datadir參數分別修改成MySQL數據庫程序的保存目錄和真實數據庫的文件內容。

 配置好腳本文件後即可以用service命令啓動mysqld數據庫服務了。mysqld是MySQL數據庫程序的服務名稱,注意不要寫錯。順帶再使用chkconfig命令把mysqld服務程序加入到開機啓動項中。

MySQL數據庫程序自帶了許多命令,可是Bash終端的PATH變量並不會包含這些命令所存放的目錄,所以咱們也沒法順利地對MySQL數據庫進行初始化,也就不能使用MySQL數據庫自帶的命令了。想要把命令所保存的目錄永久性地定義到PATH變量中,須要編輯/etc/profile文件並寫入追加的命令目錄,這樣當物理設備在下一次重啓時就會永久生效了。若是不想經過重啓設備的方式來生效,也可使用source命令加載一下/ect/profile文件,此時新的PATH變量也能夠當即生效了。

MySQL數據庫服務程序還會調用到一些程序文件和函數庫文件。因爲當前是經過源碼包方式安裝MySQL數據庫,所以如今也必須以手動方式把這些文件連接過來。[root@linuxprobe mysql]# mkdir /var/lib/mysql

[root@linuxprobe mysql]# ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql [root@linuxprobe mysql]# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock [root@linuxprobe mysql]# ln -s /usr/local/mysql/include/mysql /usr/include/mysql

其實咱們不用作這幾步,由於咱們用的是RHEL7,系統幫咱們作好了,若是是7如下的話就須要

如今,MySQL數據庫服務程序已經啓動,調用的各個函數文件已經就位,PATH環境變量中也加入了MySQL數據庫命令的所在目錄。接下來準備對MySQL數據庫進行初始化,這個初始化的配置過程與MariaDB數據庫是同樣的,只是最後變成了Thanks for using MySQL!

對了,咱們修改完環境變量要執行一下source /etc/profile來加載一下/ect/profile文件讓她當即生效

是否是感受很眼熟,沒錯,和MariaDB數據庫同樣。

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MySQL to secure it, we'll need the current password for the root user. If you've just installed MySQL, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): 此處只需按下回車鍵 OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MySQL root user without the proper authorisation. Set root password? [Y/n] y (要爲root管理員設置數據庫的密碼) New password: 輸入要爲root管理員設置的數據庫密碼 Re-enter new password: 再輸入一次密碼 Password updated successfully! Reloading privilege tables.. ... Success! By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y (刪除匿名帳戶) ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] y (禁止root管理員從遠程登陸) ... Success! By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] y (刪除test數據庫並取消對其的訪問權限) - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] y (刷新受權表,讓初始化後的設定當即生效) ... Success! All done! If you've completed all of the above steps, your MySQL installation should now be secure. Thanks for using MySQL! Cleaning up...
好了,咱們這樣就初始化完成了。

配置Nginx服務

Nginx是一款至關優秀的用於部署動態網站的輕量級服務程序,它最初是爲俄羅斯門戶站點而開發的,因其穩定性、功能豐富、佔用內存少且併發能力強而備受用戶的信賴。目前國內諸如新浪、網易、騰訊等門戶站點均已使用了此服務。

Nginx服務程序的穩定性源自於採用了分階段的資源分配技術,下降了CPU與內存的佔用率,因此使用Nginx程序部署的動態網站環境不只十分穩定、高效,並且消耗的系統資源也不多。此外,Nginx具有的模塊數量與Apache具有的模塊數量幾乎相同,並且如今已經徹底支持proxy、rewrite、mod_fcgi、ssl、vhosts等經常使用模塊。更重要的是,Nginx還支持熱部署技術,能夠7×24不間斷提供服務,還能夠在不暫停服務的狀況下直接對Nginx服務程序進行升級。

坦白來說,雖然Nginx程序的代碼質量很是高,代碼很規範,技術成熟,模塊擴展也很容易,但依然存在很多問題,好比是由俄羅斯人開發的,因此在資料文檔方面還並不完善,中文資料的質量更是魚龍混雜。可是Nginx服務程序在近年來增加勢頭迅猛,相信會在輕量級Web服務器市場具備不錯的將來。

在正式安裝Nginx服務程序以前,咱們還須要爲其解決相關的軟件依賴關係,例如用於提供Perl語言兼容的正則表達式庫的軟件包pcre,就是Nginx服務程序用於實現僞靜態功能必不可少的依賴包。下面來解壓、編譯、生成、安裝Nginx服務程序的源碼文件:

咱們如今解壓的是Perl語言的函數庫的一個文件

而後編譯,製做二進制,安裝。

這個--prefix是定義安裝到/usr/local/pcre,若是咱們不寫這個參數的話就會安裝到原來做者設定的那個位子,就會很亂。--prefix=目錄,安裝路徑的意思。

安裝完這個咱們繼續日後面安裝。

此次咱們安裝openssl,他是用來加密的這麼一個軟件包。咱們仍是先解壓

而後編譯好,指定安裝路徑。

而後咱們生成而且安裝。

openssl軟件包安裝後默認會在/usr/local/openssl/bin目錄中提供不少的可用命令,咱們須要像前面的操做那樣,將這個目錄添加到PATH環境變量中,並寫入到配置文件中,最後執行source命令以便讓新的PATH環境變量內容能夠當即生效:

而後生效以後。

下一個軟件包叫作zlib,咱們繼續

zlib軟件包是用於提供壓縮功能的函數庫文件。其實Nginx服務程序調用的這些服務程序無需深刻了解,只要大體瞭解其做用就已經足夠了:

在安裝部署好具備依賴關係的軟件包以後,建立一個用於執行Nginx服務程序的帳戶。帳戶名稱能夠自定義,但必定別忘記,由於在後續須要調用:

不用需他登陸到咱們系統當中,避免黑客登陸到咱們系統當中破壞。

在使用命令編譯Nginx服務程序時,須要設置特別多的參數,其中,--prefix參數用於定義服務程序稍後安裝到的位置,--user與--group參數用於指定執行Nginx服務程序的用戶名和用戶組。在使用參數調用openssl、zlib、pcre軟件包時,請寫出軟件源碼包的解壓路徑,而不是程序的安裝路徑:

而後咱們編譯咱們nginx.

這裏咱們第一次寫錯了make install安裝nginx,因此從新執行一下這個。

直接製做二進制文件,安裝一塊兒完成。因爲這個具比較長,咱們複製出來吧。

./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=/usr/local/src/openssl-1.0.1h --with-zlib=/usr/local/src/zlib-1.2.8 --with-pcre=/usr/local/src/pcre-8.35

 要想啓動Nginx服務程序以及將其加入到開機啓動項中,也須要有腳本文件。惋惜的是,在安裝完Nginx軟件包以後默認並無爲用戶提供腳本文件,準備了一份可用的啓動腳本文件,你們只需在/etc/rc.d/init.d目錄中建立腳本文件並直接複製下面的腳本內容便可.

#!/bin/bash
# nginx - this script starts and stops the nginx daemon
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
        if [ -z "`grep $user /etc/passwd`" ]; then
                useradd -M -s /bin/nologin $user
        fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
        if [ `echo $opt | grep '.*-temp-path'` ]; then
                value=`echo $opt | cut -d "=" -f 2`
                if [ ! -d "$value" ]; then
                        # echo "creating" $value
                        mkdir -p $value && chown -R $user $value
                fi
        fi
done
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
#configtest || return $?
stop
sleep 1
start
}
reload() {
#configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
        rh_status_q && exit 0
        $1
        ;;
stop)
        rh_status_q || exit 0
        $1
        ;;
restart|configtest)
$1
;;
reload)
        rh_status_q || exit 7
        $1
        ;;
force-reload)
        force_reload
        ;;
status)
        rh_status
        ;;
condrestart|try-restart)
        rh_status_q || exit 0
        ;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac

 保存腳本文件後記得爲其賦予755權限,以便可以執行這個腳本。而後以絕對路徑的方式執行這個腳本,經過restart參數重啓Nginx服務程序,最後再使用chkconfig命令將Nginx服務程序添加至開機啓動項中。大功告成!

 這個就是咱們nginx的默認頁面。

  配置php服務

下面咱們繼續安裝。

PHP(Hypertxt Preprocessor,超文本預處理器)是一種通用的開源腳本語言,發明於1995年,它吸收了C語言、Java語言及Perl語言的不少優勢,具備開源、免費、快捷、跨平臺性強、效率高等優良特性,是目前Web開發領域最經常使用的語言之一。

使用源碼包的方式編譯安裝PHP語言環境其實並不複雜,難點在於解決PHP的程序包和其餘軟件的依賴關係。爲此須要先安裝部署將近十個用於搭建網站頁面的軟件程序包,而後才能正式安裝PHP程序。

yasm源碼包是一款常見的開源彙編器,其解壓、編譯、安裝過程當中生成的輸出信息均已省略:

而後進入yasm目錄下編譯生成安裝

而後咱們安裝完了以後安裝下一個libmcrypt源碼包

libmcrypt源碼包是用於加密算法的擴展庫程序。

一樣的流程句不解釋了

咱們繼續走

libvpx源碼包是用於提供視頻編碼器的服務程序,其解壓、編譯、安裝過程當中生成的輸出信息均已省略。相信會有不少粗心的的人順手使用了tar命令的xzvf參數,但若是仔細觀察就會發現libvpx源碼包的後綴是.tar.bz2,即表示使用bzip2格式進行的壓縮,所以正確的解壓參數應該是xjvf:

 

咱們看一下編譯命令,首先--prefix=/usr/local/libvpx是安裝的位置,而後--enable-shared --enable-vp9是開啓兩個功能待會容許被其餘程序所調用的意思。

tiff源碼包是用於提供標籤圖像文件格式的服務程序,其解壓、編譯、安裝過程當中生成的輸出信息均已省略:

libpng源碼包是用於提供png圖片格式支持函數庫的服務程序,其解壓、編譯、安裝過程當中生成的輸出信息均已省略:

freetype源碼包是用於提供字體支持引擎的服務程序,其解壓、編譯、安裝過程當中生成的輸出信息均已省略:

jpeg源碼包是用於提供jpeg圖片格式支持函數庫的服務程序,其解壓、編譯、安裝過程當中生成的輸出信息均已省略:

libgd源碼包是用於提供圖形處理的服務程序,其解壓、編譯、安裝過程當中生成的輸出信息均已省略。在編譯libgd源碼包時,請記得寫入的是jpeg、libpng、freetype、tiff、libvpx等服務程序在系統中的安裝路徑,即在上面安裝過程當中使用--prefix參數指定的目錄路徑:

t1lib源碼包是用於提供圖片生成函數庫的服務程序,其解壓、編譯、安裝過程當中生成的輸出信息均已省略。安裝後把/usr/lib64目錄中的函數文件連接到/usr/lib目錄中,以便系統可以順利調取到函數文件:

編譯安裝完以後咱們給他鏈接到32位系統裏面,咱們這裏不作也能夠,咱們就是64位。

此時終於把編譯php服務源碼包的相關軟件包都已經安裝部署穩當了。在開始編譯php源碼包以前,先定義一個名爲LD_LIBRARY_PATH的全局環境變量,該環境變量的做用是幫助系統找到指定的動態連接庫文件,這些文件是編譯php服務源碼包的必須元素之一。編譯php服務源碼包時,除了定義要安裝到的目錄之外,還須要依次定義配置php服務程序配置文件的保存目錄、MySQL數據庫服務程序所在目錄、MySQL數據庫服務程序配置文件所在目錄,以及libpng、jpeg、freetype、libvpx、zlib、t1lib等服務程序的安裝目錄路徑,並經過參數啓動php服務程序的諸多默認功能:

由於咱們待會安裝的時候,咱們須要php他去調用一個變量,他是咱們安裝的時候所須要的,咱們叫作library。

而後咱們輸出一下這個變量看一下有沒有

沒問題,那麼咱們繼續。

咱們會看到這個參數特別多,那麼咱們就複製到下面吧。

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-pdo-mysql=/usr/local/mysql --with-gd --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-xpm-dir=/usr/ --with-vpx-dir=/usr/local/libvpx/ --with-zlib-dir=/usr/local/zlib --with-t1lib=/usr/local/t1lib --with-iconv --enable-libxml --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-opcache --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl --enable-ctype 

別看他多,其實都是重複的,好比說安裝路徑,開啓某個功能,而後調用這個功能。

在php源碼包程序安裝完成後,須要刪除當前默認的配置文件,而後將php服務程序目錄中相應的配置文件複製過來:

php-fpm.conf是php服務程序重要的配置文件之一,咱們須要啓用該配置文件中第25行左右的pid文件保存目錄,而後分別將第148和149行的user與group參數分別修改成www帳戶和用戶組名稱:

 配置穩當後即可把用於管理php服務的腳本文件複製到/etc/rc.d/init.d中了。爲了可以執行腳本,請記得爲腳本賦予755權限。最後把php-fpm服務程序加入到開機啓動項中:

因爲php服務程序的配置參數直接會影響到Web服務服務的運行環境,所以,若是默認開啓了一些沒必要要且高危的功能(如容許用戶在網頁中執行Linux命令),則會下降網站被入侵的難度,入侵人員甚至能夠拿到整臺Web服務器的管理權限。所以咱們須要編輯php.ini配置文件,在305行的disable_functions參數後面追加上要禁止的功能。下面的禁用功能名單是依據網站運行的經驗而定製的,不見得適合每一個生產環境,建議你們在此基礎上根據自身工做需求酌情刪減:

passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restor e,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,g etservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,po six_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_ getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_ setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

這樣就把php服務程序配置穩當了。最後,還須要編輯Nginx服務程序的主配置文件,把第2行的井號(#)刪除,而後在後面寫上負責運行Nginx服務程序的帳戶名稱和用戶組名稱;在第45行的index參數後面寫上網站的首頁名稱。最後是將第65~71行參數前的井號(#)刪除來啓用參數,主要是修改第69行的腳本名稱路徑參數,其中$document_root變量即爲網站信息存儲的根目錄路徑,若沒有設置該變量,則Nginx服務程序沒法找到網站信息,所以會提示「404頁面未找到」的報錯信息。在確認參數信息填寫正確後即可重啓Nginx服務與php-fpm服務。

至此,LNMP動態網站環境架構的配置實驗所有結束。

作好這些步驟以後咱們再重啓一下nginx和php的服務。

搭建Discuz論壇

爲了檢驗LNMP動態網站環境是否配置穩當,可使用在上面部署Discuz!系統,而後查看結果。若是可以在LNMP動態網站環境中成功安裝使用Discuz!論壇系統,也就意味着這套架構是可用的。Discuz! X3.2是國內最多見的社區論壇系統,在通過十多年的研發後已經成爲了全球成熟度最高、覆蓋率最廣的論壇網站系統之一。

Discuz! X3.2軟件包的後綴是.zip格式,所以應當使用專用的unzip命令來進行解壓。解壓後會在當前目錄中出現一個名爲upload的文件目錄,這裏面保存的就是Discuz!論壇的系統程序。咱們把Nginx服務程序網站根目錄的內容清空後,就能夠把這些這個目錄中的文件都複製進去了。記得把Nginx服務程序的網站根目錄的全部者和所屬組修改成本地的www用戶(已在上面建立),併爲其賦予755權限以便於可以讀、寫、執行該論壇系統內的文件。

而後咱們清空nginx服務程序網站根目錄內容

而後將咱們解壓出來的文件放到html

而後修改他的全部者和全部組,賦予755權限。

 打來火狐瀏覽器輸入192.168.10.10而後咱們就會看到咱們很常見的一個安裝界面。

而後咱們繼續,你們看一下這個對號,必須都是對號,若是出現紅色的錯號那麼說明咱們配置過程當中出現了問題,就須要仔細查看拍錯了。

點擊下一步

而後咱們編輯裏面內容

上面的能夠修改能夠不修改,數據庫密碼是咱們本身設置好的redhat,郵箱這個無所謂。管理員信息是咱們待會等路網站用的。本身設置。

看見報錯了,很慌,不用急,那是由於咱們沒有聯網,因此這是個廣告,咱們點擊右下角的字就能夠。

而後咱們看見沒問題,而後咱們登錄一下。

完成。

選購服務器主機

虛擬主機:在一臺服務器中劃分必定的磁盤空間供用戶放置網站信息、存放數據等;僅提供基礎的網站訪問、數據存放與傳輸功能;可以極大地下降用戶費用,也幾乎不須要用戶來維護網站之外的服務;適合小型網站。

VPS(Virtual Private Server,虛擬專用服務器):在一臺服務器中利用OpenVZ、Xen或KVM等虛擬化技術模擬出多臺「主機」(即VPS),每一個主機都有獨立的IP地址、操做系統;不一樣VPS之間的磁盤空間、內存、CPU、進程與系統配置徹底隔離,用戶可自由使用分配到的主機中的全部資源,爲此須要具有必定的維護系統的能力;適合小型網站。

ECS(Elastic Compute Service,雲服務器):是一種整合了計算、存儲、網絡,可以作到彈性伸縮的計算服務;使用起來與VPS幾乎同樣,差異是雲服務器是創建在一組集羣服務器中,每一個服務器都會保存一個主機的鏡像(備份),從而大大提高了安全性和穩定性;另外還具有靈活性與擴展性;用戶只需按使用量付費便可;適合大中小型網站。

獨立服務器:這臺服務器僅提供給用戶一我的使用,其使用方式分爲租用方式與託管方式。租用方式是用戶將服務器的硬件配置要求告知IDC服務商,按照月、季、年爲單位來租用它們的硬件設備。這些硬件設備由IDC服務商的機房負責維護,用戶通常須要自行安裝相應的軟件並部署網站服務,這減輕了用戶在硬件設備上的投入,適合大中型網站。託管方式則是用戶須要自行購置服務器硬件設備,並將其交給IDC服務供應商進行管理(須要繳納管理服務費)。用戶對服務器硬件配置有徹底的控制權,自主性強,但須要自行維護、修理服務器硬件設備,適合大中型網站。

另外須要提醒讀者的是,在選擇服務器主機供應商時請必定要注意查看口碑,並在綜合分析後再決定購買。某些供應商會有限制功能、強制添加廣告、隱藏扣費或強制扣費等惡劣行爲,請各位讀者必定擦亮眼睛,不要上當!

雲服務器的話國內用阿里雲,騰訊雲,國外用linode.com.

相關文章
相關標籤/搜索