LAMP架構搭建與優化(1.1-1.5)

1. 安裝mysql
cd /usr/local/src/ 
wget  http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.47-linux2.6-x86_64.tar.gzphp

tar zxvf  mysql-5.5.47-linux2.6-x86_64.tar.gzhtml

useradd -s /sbin/nologin -M mysql (建立mysql帳戶,-s不讓mysql登陸,-M不建立家目錄)mysql

mv mysql-5.5.47-linux2.6-x86_64 /usr/local/mysql  (移動再重命名)
cd /usr/local/mysql 
mkdir -p /data/mysql (數據存放)
chown -R mysql:mysql /data/mysql (權限更改)
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql (初始化數據庫,指定用戶和存放數據的路勁)linux

用echo $?能夠查看是否安裝成功,返回值0,或者有兩個OK也說明安裝成功了
cp support-files/my-large.cnf /etc/my.cnf (my.cnf是裝系統時候提供的,這個是沒用的,如今拷貝過去)nginx

vim /etc/my.cnf(註釋掉了三個,不去記錄binlog)sql

wKioL1bEMkGD5bfTAAAdvQYPplM608.png

prot跟socket這兩個是能夠通訊的
cp support-files/mysql.server /etc/init.d/mysqld數據庫

chmod 755 /etc/init.d/mysqld 
vim /etc/init.d/mysqld   #修改datadirapache

wKiom1bEMg_gqaByAAARNgSfIAE353.png

chkconfig --add mysqld (把mysqld加入到服務列表中)
chkconfig mysqld on 
service mysqld start 
ps aux|grep mysqlvim

netstat -lnp|grep mysql

遇到問題要安裝yum install -y libaio瀏覽器



從新安裝編譯時,要刪除/etc/my.cnf和/usr/local/mysql才行。



2.  Apache編譯安裝

wget  http://archive.apache.org/dist/httpd/httpd-2.2.27.tar.bz2
tar jvxf httpd-2.2.27.tar.bz2  
cd httpd-2.2.27

vim INSTALL(能夠參考安裝文檔)

./configure \
--prefix=/usr/local/apache2 \   (指定安裝Apache安裝在哪裏)
--with-included-apr \            (apr是httpd安裝的一個依賴包,它能夠跨平臺去運做)
--enable-so \
--enable-deflate=shared \        (三個shared是以動態共享的模式來安裝)
--enable-expires=shared \
--enable-rewrite=shared \
--with-pcre                      (正則相關的一個庫)

make && make install 
/usr/local/apache2/bin/apachectl start (啓動Apache,restart重啓,stop中止,graceful從新加載配置文件,restart是把進程殺掉,再啓動,而graceful是把配置文件從新加載)

ps aux|grep httpd

/usr/local/apache2/bin/apachectl -M (把模塊列出來,有靜態,動態加載的模塊)

ls /usr/local/apache2/modules/ (以.so結尾就是動態共享模塊的名字,用到動態模塊纔去加載)

ls /usr/local/apache2/bin/httpd  (靜態模塊直接塞到httpd這個文件裏面,動態模塊沒有在裏面)

du -sh /usr/local/apache2/bin/httpd

/usr/local/apache2/bin/apachectl -l (只是把靜態的模塊列出來)

./configure --help|less (能夠查看Apache的工做模式,搜索/--with-mpm,經常使用的有worker和prefork這兩個模式,2.4版本默認的是event,2.2版本默認的是prefork)

/usr/local/apache2/bin/apachectl -t (是用來檢測配置文件是否是有語法錯誤)

ls /usr/local/apache2/conf/httpd.conf (配置文件)


遇到問題要安裝yum isntall -y gcc  yum isntall -y zlib-devel


3.Apache的mpm工做模式

/usr/local/apache2/bin/apachectl -l    能夠看到是在哪一個模式下運行

prefork(實際上是子進程,Ss主進程派生出不少的S子進程)

worker[進程跟線程同時存在](每一個子進程下面還有線程,進程跟線程主要的區別在於線程是進程下面的派生出來的更小單位的方式,那麼線程下,一個進程的內存會共享給其餘線程去使用,一旦進程崩潰,下面的線程都會受到牽連,好處就是能夠共享一段內存,在高併發狀況下,而prefork:每一個子進程都有一個單獨的內存,若是一個進程發生了故障,那麼它不會影響其餘的進程,可是在高併發狀況下,會比worker工做模式佔內存大得)

event(是worker的升級版,也是線程的形式)

./configure --help| grep -A3 'with-mpm' 

想換工做模式時,在編譯時加上這個參數--with-mpm=worker|event|perfork


4.  安裝php
wget http://cn2.php.net/distributions/php-5.6.18.tar.gz

tar zxf php-5.6.18.tar.gz

cd php-5.6.18

./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \(它是一個自動的,幫助咱們去安裝擴展模塊的,安裝動態可能就須要這個工具)
--with-config-file-path=/usr/local/php/etc  \
--with-mysql=/usr/local/mysql \   (php也是依賴於mysql,因此先要安裝mysql和Apache,再安裝php)
--with-libxml-dir \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-iconv-dir \
--with-zlib-dir \
--with-bz2 \
--with-openssl \
--with-mcrypt \
--enable-soap \
--enable-gd-native-ttf \
--enable-mbstring \
--enable-sockets \
--enable-exif \
--disable-ipv6
make && make install 
rpm -ivh 'http://www.lishiming.net/data/p_w_upload/forum/epel-release-6-8_64.noarch.rpm '(安裝擴展源)

yum list |grep -i mcrypt

ls /usr/local/apache2/modules/ (會多出一個libphp.so的動態模塊文件,就是由於apxs)

/usr/local/php/bin/php -m (能夠查看到它的模塊,這些都是靜態加載的模塊,也有動態加載的模塊)

/usr/local/php/bin/php -i (能夠看一些相關的配置)



安裝過程遇到的問題:yum install -y libxml2-devel  yum install -y openssl-devel  yum install -y bzip2-devel  yum install -y libjpeg-devel  yum install -y libpng-devel  yum install -y freetype-devel


5. 測試php解析

/usr/local/apache2/bin/apachectl -M (能夠看到加載了php5_modole模塊)

/usr/local/apache2/bin/apachectl restart

cd /usr/local/apache2/htdocs  (訪問網頁放在這個目錄下)

vim 1.php

<?php
    echo "php解析正常";
?>
保存後,繼續測試:

curl localhost/1.php


vim info.php

<?php

phpinfo();

?>

在瀏覽器輸入網址192.168.0.188/info.php跟在/usr/local/php/bin/php -i|less效果是同樣的,能夠看到編譯php的參數

cat /usr/local/apache2/build/config.nice  (能夠查看到編譯Apache的參數)

cat /usr/local/mysql/bin/mysqlbug|grep configure (能夠查看到編譯mysql的參數)


Linux下查看Nginx、Napache、MySQL、PHP的編譯參數的命令以下:

一、nginx編譯參數:
#/usr/local/nginx/sbin/nginx -V
二、apache編譯參數:
# cat /usr/local/apache/build/config.nice
三、php編譯參數:
# /usr/local/php/bin/php -i |grep configure
四、mysql編譯參數:
# cat /usr/local/mysql/bin/mysqlbug|grep configure


vim /usr/local/apache2/conf/httpd.conf

配置apache結合php

找到:
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>
改成:
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all
</Directory>


找到:
AddType application/x-gzip .gz .tgz
在該行下面添加:

AddType application/x-httpd-php .php
找到:
<IfModule dir_module>
    DirectoryIndex index.html (索引頁)
</IfModule>
將該行改成:
<IfModule dir_module>
    DirectoryIndex index.html index.htm index.php
</IfModule>
找到:
#ServerName www.example.com:80
修改成:
ServerName localhost:80

cp /usr/local/src/php-5.6.18/php.ini-production  /usr/local/php/etc/php.ini(拷貝php.ini的配置文件)
/usr/local/apache2/bin/apachectl graceful

在瀏覽器輸入192.168.0.188/info.php就能夠看到加載到的php.ini的配置文件

curl 192.168.0.188/info.php

相關文章
相關標籤/搜索