一.lnmp的簡介
LNMP是指一組通常一起使用來運行動態網站或者服務器的自由軟件名稱首字母縮寫。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。
LNMP代表的就是:Linux系統下Nginx+MySQL+PHP這種網站服務器架構。
LNMP的工作原理:首先,瀏覽器發送http request請求到服務器(Nginx)服務器響應並處理web請求,將一些靜態資源(CSS,圖片,視頻等)保存服務器上,然後將php腳本通過接口傳輸協議(網關協議)PHP-FCGI(fast-cgi)傳輸給PHP-FPM(進程管理程序),PHP-FPM不做處理,然後PHP-FPM調用PHP解析器進程,PHP解析器解析php腳本信息。PHP解析器進程可以啓動多個,進行併發執行。然後將解析後的腳本返回到PHP-FPM,PHP-FPM再通過fast-cgi的形式將腳本信息傳送給Nginx,服務器再通過Http response的形式傳送給瀏覽器。瀏覽器再進行解析與渲染然後進行呈現。
LNMP和LAMP唯一不同是指提供web服務的是Nginx,在Apache中,PHP是作爲一個模塊存在的。而在Nginx中,PHP是作爲一個獨立服務存在的,這個服務叫做php-fpm。Nginx直接處理靜態請求,動態請求會轉發給php-fpm.
本次實驗環境:rhel6.5版本
二.php安裝
1.安裝php(使用源碼編譯安裝,定製化模塊)
tar jxf php-5.6.35.tar.bz2 ##解壓軟件包
mkdir /usr/local/lnmp ##建立一個專門的目錄來存放編譯安裝的軟件
cd php-5.6.35 ##進入解壓後的軟件目錄執行編譯安裝腳本
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc
--with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir
--with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext
--with-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd --enable-inline-optimization --enable-soap --enable-ftp
--enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx
--with-fpm-group=nginx --with-mcrypt --with-mhash ##編譯自己需要的模塊
yum install gcc libxml2-devel openssl-devel libcurl-devel
libjpeg-turbo-devel-1.2.1-1.el6.x86_64 2:libpng-devel-1.2.49-1.el6_2.x86_64
freetype-devel-2.3.11-14.el6_3.1.x86_64
gmp-devel-4.3.1-7.el6_2.2.x86_64
libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
net-snmp-devel -y ##爲解決編譯帶來的問題,安裝一些包
make && make install ##編譯安裝到指定目錄
注意;libmcrypt-devel-2.5.8-9.el6.x86_64.rpm 的安裝需要先安裝
libmcrypt-2.5.8-9.el6.x86_64.rpm這兩個包都需要從網上獲取
編譯參數說明
./configure --prefix=/usr/local/lnmp/php #安裝的位置
--with-config-file-path=/usr/local/lnmp/php/etc #php配置文件的位置
--with-openssl #支持openssl加密
--with-snmp
--with-gd
--with-zlib
--with-curl
--with-libxml-dir #支持libxml函數
--with-png-dir #php處理圖片的格式
--with-jpeg-dir
--with-freetype-dir
--with-gmp
--with-gettext
--with-pear
--enable-mysqlnd #支持mysql數據庫之間建立聯繫
--enable-inline-optimization -
-enable-soap
--enable-ftp
--enable-sockets
--enable-mbstring
--enable-fpm #開啓fpm模式(nginx等服務用的)
--with-fpm-user=nginx #對php服務的限制通過nginx用戶來實現)
--with-fpm-group=nginx #php以nginx用戶組身份運行
--with-mcrypt #提供了對多種塊算法的支持,主要用來實現加密等算法
--with-mhash #加密算法
2.修改配置文件
cp php.ini-production /usr/local/lnmp/php/etc/php.ini ##把配置文件的模板移動到配置軟件的目錄下
vim /usr/local/lnmp/php/etc/php.ini ##修改一下進程管理文件的時區(fast_cgi_manager)
[root@server1 php-5.6.35]# cd sapi/fpm/ ##進入啓動命令目錄,製作啓動腳本
cp init.d.php-fpm /etc/init.d/php-fpm ##製作腳本方式啓動
chmod +x /etc/init.d/php-fpm ##給腳本執行權限
cd /usr/local/lnmp/php/etc/ ##進入配置文件目錄
cp php-fpm.conf.default php-fpm.conf(主配置文件) ##將default去掉,不然啓動會報錯缺少php-fpm.conf文件
25 pid = run/php-fpm.pid #去掉註釋
149 user = nginx #保證用戶和組都是nginx
150 group = nginx
useradd nginx ##建立nginx用戶,運行需要
/etc/init.d/php-fpm start ##啓動成功
netstat -tnlp | grep php ##查看php端口是否開啓
1.nginx的安裝
1.編譯、安裝
tar zxf nginx-1.16.0.tar.gz ##解壓安裝包
cd nginx-1.16.0 ##進入軟件解壓目錄
yum install -y pcre-devel ##安裝nginx需要的依賴環境
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module
--with-threads --with-file-aio --user=nginx --group=nginx
##添加自己需要的模塊
make && make install ##編譯安裝
2.修改配置文件
vim /usr/local/lnmp/nginx/conf/nginx.conf ##修改配置文件打開默認訪問php頁面功能
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/ ##建立一個軟鏈接
nginx -t ##測試軟鏈接能否使用並檢查配置文件是否有錯
vim /usr/local/lnmp/nginx/html/index.php ##編寫一個php測試信息默認文件
nginx ##啓動服務,進入瀏覽器測試
測試:
/etc/init.d/php-ftm start
三.mysql的源碼安裝
1.mysql的安裝
爲了定製化模塊,我們使用源碼安裝mysql-boost-5.7.17.tar.gz(從官網獲取)
tar zxf mysql-boost-5.7.17.tar.gz ##解壓軟件安裝包
cd mysql-5.7.17/ ##進入軟件解壓目錄
yum install cmake-2.8.12.2-4.el6.x86_64.rpm -y ##安裝cmake
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data /
-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 /
-DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci /
-DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/
##選擇自己需要添加的模塊
rm -fr CMakeCache.txt ##編譯出錯需要刪除掉編譯生成的文件重新編譯
yum install ncurses-devel gcc-c++ bison -y ##安裝編譯依賴,再次cmake
make && make install ##執行這一步編譯安裝至少需要10g以上的可用空間,最好本身存儲在20g以上,而且所耗時間較長
安裝過程比較慢(要大半個小時)
2.配置文件的修改
cd /root/mysql-5.7.17/support-files ##進入軟件支持目錄
cp mysql.server /etc/init.d/mysqld ##製作腳本啓動方式的腳本
chmod +x /etc/init.d/mysqld ##給腳本加上執行權限
注意:如果之前安裝過mysql,可以用rpm -qa mysql 查看具體的版本,然後通過yum remove 刪除掉
cp /etc/my.cnf /etc/my.cnf.bak ##把mysql的配置文件備份
cp my-default.cnf /etc/my.cnf ##將默認配置文件覆蓋掉原來的配置文件
vim /etc/my.cnf ##修改配置文件
groupadd -g 27 mysql ##因爲用yum安裝時的mysql默認用戶是27,所以這裏我們也用這個默認id
useradd -u 27 -g 27 mysql ##創建mysql用戶
vim ~/.bash_profile ##將mysql加入環境變量
source ~/.bash_profile ##使修改生效
3.mysql的初始化
chown mysql.mysql /usr/local/lnmp/mysql/ -R ##給mysql用戶賦予對mysql目錄的讀寫權限來完成初始化
mysqld --user=mysql --initialize ##mysql初始化,最後一行會給一個默認密碼,後面安全初始化會用到
chown root /usr/local/lnmp/mysql/ -R ##初始化把默認權限修改回來,這是爲了安全考慮
chown mysql /usr/local/lnmp/mysql/data/ -R ##只讓mysql用戶對mysql的數據可寫
/etc/init.d/mysqld start ##啓動服務,能啓動說明配置沒問題,啓動後會生成sock套接字
mysql_secure_installation ##安全初始化設定,需要使用mysql初始化給的默認密碼
##改變密碼後,選擇兩次no就只使用我們設定的這個密碼,然後選擇4次yes,刪除匿名用戶,禁止只有root可以登陸,刪除測試庫,保存設定
/etc/init.d/mysqld start
nginx
/etc/init.d/php-fpm start ##啓動所有服務,查看有無問題
netstat -tnlp ##檢查啓動的服務端口有沒有問題