LNMP=linux Nginx Mysql PHP
Nginx的工作原理:
Nginx本身只支持靜態頁面的處理,當客戶訪問php頁面的時候,nginx會將php轉到php-fpm去處理,php-fpm服務會把php頁面解析成html文件給nginx處理,nginx返回給客戶端處理
Nginx是通過php-fpm這個服務來處理php文件
Apache是通過libphp5.so這個模塊來處理php文件
Apache的libphp5.so隨着apache服務器一起運行,而nginx和php-fpm是各自獨立運行,所以在服務的運行過程中,nginx和php-fpm都需要分別啓動
修改Nginx配置文件,啓動nginx服務,修改php配置文件,啓動php-fpm服務
LNMP軟件所需要的軟件包
MySQL=http://dev.mysql.com/downloads/mysql/
PHP=http://php.net/downloads.php
Nginx=http://nginx.org/en/download.html
libmcrypt=http://mcrypt.hellug.gr/index.html
pcre=http://pcre.org/ pcre是php的依賴包!!!!!
Mysql源碼安裝
解決環境問題
yum install gcc gcc-c++
yum install cmake-2.8.12.2-4.el6.x86_64.rpm
yum install ncurses-devel
yum install biso
tar zxf mysql-boost-5.7.17.tar.gz 解壓壓縮包
cmake驗證
cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DWITH_MYISAM_STORAGE_ENGINE=1\ -DWITH_INNOBASE_STORAGE_ENGINE=1\ -DWITH_MEMORY_STORAGE_ENGINE=1\ -DWITH_READLINE=1\ -DENABLED_LOCAL_INFILE=1\ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DMYSQL-USER=mysql
DCMAKE_INSTALL_PREFIX #制定mysql的安裝根目錄,目錄在安裝的時候會自動創建,這個值也可以在服務器啓動時,用--basedir來設置
DMYSQL_UNIX_ADDR #服務器與本地客戶端進行通信的Unix套接字文件,必須是絕對路徑,默認位置/tmp/mysql.sock,可以在服務器啓動時,用--socket改變
DDEFAULT_CHARSET #mysql默認使用的字符集,不指定將默認使用Latin1西歐字符集DDEFAULT_COLLATION #默認字符校對
DWITH_EXTRA_CHARSETS #制定mysql拓展字符集,默認值也是all支持所有的字符集DWITH_MYISAM_STORAGE_ENGINE #靜態編譯MYISAM,INNOBASE,MEMORY存儲引擎到MYSQL服務 器,這樣MYSQL就支持這三種存儲引擎
DWITH_INNOBASE_STORAGE_ENGINEDWITH_MEMORY_STORAGE_ENGINEDWITH_READLINE #支持readline庫DENABLED_LOCAL_INFILE #允許本地倒入數據,啓用加載本地數據DMYSQL_DATADIR #mysql數據庫存放路徑DMYSQL-USER #運行mysql的用戶
make && make install 就可以安裝了
chown -R mysql:mysql /usr/local/mysql/ //屬主屬組更改#這裏的權限需要注意:#1、數據目錄給mysql屬主和屬組 #2、文件安裝目錄,在安裝之前,給mysql屬主和屬組,安裝之後,改成root用戶,mysql組,否則在啓動的時候,可能啓動不了!
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf //覆蓋原配置文件cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld //啓動腳本
vim /etc/init.d/mysqld //更改啓動腳本中指定#mysql位置
basedir=datadir=#修改爲basedir=/usr/local/mysqldatadir=/usr/local/mysql/data #
開機啓動 chkconfig mysqld on
mysqld --initialize --user=mysql 初始化數據庫
mysql_secure_installation 設置密碼即可
php搭建
解決環境問題需要安裝以下rpm軟件
yum install net-snmp-devel gmp-devel -y curl-devel -y
openssl-devel -y re2c-0.13.5-1.el6.x86_64.rpm -y libxml2-devel -y libmcrypt-devel-2.5.8-9.el6.x86_64.rpm libmcrypt-2.5.8-9.el6.x86_64.rpm gd-devel-2.0.35-11.el6.x86_64.rpm
之後 開始編譯
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-mysql=mysqlnd --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl -with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-jpeg-dir --with-freetype-dir --with-pear --with-gettext --with-gmp --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-mcrypt --with-mhash
--with-config-file-path #設置 php.ini 的搜索路徑。默認爲 PREFIX/lib
--with-mysql #mysql安裝目錄,對mysql的支持
--with-mysqli #mysqli擴展技術不僅可以調用MySQL的存儲過程、處理MySQL事務,而且還可以使訪問數據庫工作變得更加穩定。是一個數據庫驅動
--with-iconv-dir #種字符集間的轉換
--with-freetype-dir #打開對freetype字體庫的支持
--with-jpeg-dir #打開對jpeg圖片的支持
--with-png-dir #打開對png圖片的支持
--with-zlib #打開zlib庫的支持,實現GZIP壓縮輸出
--with-libxml-dir=/usr #打開libxml2庫的支持,libxml是一個用來解析XML文檔的函數庫
--enable-xml #支持xml文檔
--disable-rpath #關閉額外的運行庫文件
--enable-bcmath #打開圖片大小調整,用到zabbix監控的時候用到了這個模塊
--enable-shmop #shmop共享內存操作函數,可以與c/c++通訊--enable-sysvsem #加上上面shmop,這樣就使得你的PHP系統可以處理相關的IPC函數(活動在內核級別)。
--enable-inline-optimization #優化線程
--with-curl #打開curl瀏覽工具的支持
--with-curlwrappers #運用curl工具打開url流 ,新版PHP5.6已棄用
--enable-mbregex #支持多字節正則表達式
--enable-fpm #CGI方式安裝的啓動程序,PHP-FPM服務
--enable-mbstring #多字節,字符串的支持-
-with-gd #打開gd庫的支持,是php處理圖形的擴展庫,GD庫提供了一系列用來處理圖片的API,使用GD庫可以處理圖片,或者生成圖片。
--enable-gd-native-ttf #支持TrueType字符串函數庫
--with-openssl #打開ssl支持
--with-mhash #支持mhash算法擴展
--enable-pcntl #freeTDS需要用到的,pcntl擴展可以支持php的多線程操作
--enable-sockets #打開 sockets 支持
--with-xmlrpc #打開xml-rpc的c語言-
-enable-zip #打開對zip的支持
--enable-soap #擴展庫通過soap協議實現了客服端與服務器端的數據交互操作
--with-mcrypt #mcrypt算法擴展
make makeinstall 之後
配置文件
cd /usr/local/lnmp/php/
cd etc/
cp php-fpm.conf.default php-fpm.con
cd /mnt/lamp/php-5.6.35
cp php.ini-production /usr/local/lnmp/php/etc/
cd /usr/local/lnmp/php/
cd etc/
vim php-fpm.conf
nginx安裝
tar zxf nginx-1.10.1.tar.gz
tar zxf nginx-sticky-module-ng.tar.gz
./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre=/usr/local/src/pcre-8.37*************************************
--with-http_dav_module #啓用支持(增加PUT,DELETE,MKCOL:創建集合,COPY和MOVE方法) 默認關閉,需要編譯開啓
--with-http_stub_status_module #啓用支持(獲取Nginx上次啓動以來的工作狀態)-
-with-http_addition_module #啓用支持(作爲一個輸出過濾器,支持不完全緩衝,分部分相應請求)
--with-http_sub_module #啓用支持(允許一些其他文本替換Nginx相應中的一些文本)--with-http_flv_module #啓用支持(提供支持flv視頻文件支持)
--with-http_mp4_module #啓用支持(提供支持mp4視頻文件支持,提供僞流媒體服務端支持)
--with-pcre=/usr/local/src/pcre-8.37 #需要注意,這裏指的是源碼,用#./configure --help |grep pcre
文件組成
ll /usr/local/nginx/drwxr-xr-x 2 root root 4096 Sep 1513:44
conf #Nginx相關配置文件drwxr-xr-x 2 root root 4096 Sep 1513:44
html #網站根目錄drwxr-xr-x 2 root root 4096 Sep 1513:44
ogs #日誌文件drwxr-xr-x 2 root root 4096 Sep 1513:44
sbin #Nginx啓動腳本
配置文件 vim /usr/local/lnmp/nginx/conf/nginx.conf
#location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} #找到上面這段內容,將這段內容複製,去掉#
且修改爲如下
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; #將scripts修改爲nginx的html,即Nginx頁面目錄,因爲要處理的php文件也在這個目錄下 include fastcgi_params;
測試使用
echo "<?php phpinfo(); ?>" > /usr/local/nginx/html/index.php
出現網頁即可
搭建Discuz論壇
根據以前博客按需要解決問題即可
安裝memcache
在Linux下使用php -m命令查看PHP擴展,沒有看到calendar擴展
所以在在php.ini文件添加:
extension=memcache.so
在php -m 看到memcache
yum 安裝 memcached
配置文件之 memcache.conf 與example.conf到 nginx 下html目錄中
就可以看到結果