`linux apache mysql PHP 的簡寫
把apache,Mysql和PHP安裝到系統上,來運行PHP
--------------------------------------------------------------------------------------------------------
mysql安裝:
#tar zxvf /usr/local/src/mysql* //解壓
#mv mysql* /usr/local/mysql //挪動位置
#useradd -s /sbin/nologin mysql //創建mysql用戶
#cd /usr/local/mysql
#mkdir -p /data/mysql //建立datadir,數據哭會放到這裏
#chown -R mysql:mysql /data/mysql //更改權限
#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
--user定義數據庫的所屬主 -datadir定義數據庫裝到哪裏
配置mysql
拷貝配置文件
#cp support-files/my-large.cnf /etc/my.cnf
拷貝啓動文件並修改屬性
#cp support-files/mysql.server /etc/init.d/mysqld
#chmod 755 /etc/init.d/mysqld
修改啓動腳本
#vim /etc/init.d/mysqld
修改的地方有:datadir=/data/mysql
把啓動腳本加入系統服務項,設置開機啓動
#chkconfig --add mysqld
#chkconfig mysqld on
#service mysqld start
查看進程
#ps aux |grep mysqld
刪除mysql
find / -name mysqld --exec rm-rf {} \;
再中止相應的服務和端口
mysql5.7的安裝
1. 下載包
wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz
2. 解壓
tar xxvf mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.7.12-linux-glibc2.5-x86_64 /usr/local/mysql
3. 初始化
useradd -M -s /sbin/nologin mysql
mkdir -p /data/mysql
chown mysql /data/mysql
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --datadir=/data/mysql
注意,這一步最後一行會有一個提示
[Note] A temporary password is generated for root@localhost: B*s1i(*,kXwg
最後面的字符串爲root密碼。
./bin/mysql_ssl_rsa_setup --datadir=/data/mysql
4. 拷貝配置文件和啓動腳本
cp support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf //編輯或者修改
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
socket = /tmp/mysql.sock
cp support-files/mysql.server /etc/init.d/mysqld
vi /etc/init.d/mysqld //編輯或者修改
basedir=/usr/local/mysql
datadir=/data/mysql
5. 啓動服務
/etc/init.d/mysqld start
6. 設置root密碼
使用初始化密碼登陸
/usr/local/mysql/bin/mysql -uroot -p'B*s1i(*,kXwg' //進入後直接設置密碼
mysql>set password = password('mypass'); //必定要設置一下新密碼
退出來,再使用新的密碼登陸就能夠了
還有一種狀況,就是不知道初始化密碼
vi /etc/my.cnf
在[mysqld]下面增長一行
skip-grant-tables
重啓 /etc/init.d/mysqld restart
/usr/local/mysql/bin/mysql -uroot
mysql> update user set authentication_string=password('123333') where user='root';
退出來後,更改my.cnf,去掉剛加的 skip-grant-tables
重啓 /etc/init.d/mysqld restart
此時就可使用新的密碼了。
--------------------------------------------------------------------------------------------------------
Apache編譯安裝
#cd /usr/local/src/
安裝庫文件
yum install -y pcre pcre-devel apr apr-devel
解壓:
#cd httpd-x.x.x
./configure \
--prefix=/usr/local/apache2 \
--with-included-apr \
--enable-so \
--enable-deflate=shared \
--enable-expires=shared \
--enable-rewrite=shared \
--with-pcre
報錯:
mod_deflate has been requested but can not be built due to prerequisite failures
解決辦法:
yum install -y zlib-devel
configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.
解決:
下載apr apr-util 解壓到srclib/apr srclib/apr-util
編譯和安裝
#make
#make install
以上兩步均可以用 echo $?來檢測知否正確執行
apache的mpm工做模式
#/usr/local/apache2/bin/apachectl -M
其中以mpm_開頭的就是apache的mpm工做模式
擴展:
Prefork MPM : 這個多路處理模塊(MPM)實現了一個非線程型的、預派生的web服務器,它的工做方式相似於Apache 1.3。它適合於沒有線程安全庫,須要避免線程兼容性問題的系統。它是要求將每一個請求相互獨立的狀況下最好的MPM,這樣若一個請求出現問題就不會影響到其餘請求。
這個MPM具備很強的自我調節能力,只須要不多的配置指令調整。最重要的是將MaxClients設置爲一個足夠大的數值以處理潛在的請求高峯,同時又不能太大,以至須要使用的內存超出物理內存的大小。
Worker MPM : 此多路處理模塊(MPM)使網絡服務器支持混合的多線程多進程。因爲使用線程來處理請求,因此能夠處理海量請求,而系統資源的開銷小於基於進程的MPM。可是,它也使用了多進程,每一個進程又有多個線程,以得到基於進程的MPM的穩定性。
每一個進程能夠擁有的線程數量是固定的。服務器會根據負載狀況增長或減小進程數量。一個單獨的控制進程(父進程)負責子進程的創建。每一個子進程能夠創建ThreadsPerChild數量的服務線程和一個監聽線程,該監聽線程監聽接入請求並將其傳遞給服務線程處理和應答。
不論是Worker模式或是Prefork 模式,Apache老是試圖保持一些備用的(spare)或者是空閒的子進程(空閒的服務線程池)用於迎接即將到來的請求。這樣客戶端就不須要在獲得服務前等候子進程的產生。
Event MPM:以上兩種穩定的MPM方式在很是繁忙的服務器應用下都有些不足。儘管HTTP的Keepalive方式能減小TCP鏈接數量和網絡負載,可是 Keepalive須要和服務進程或者線程綁定,這就致使一個繁忙的服務器會耗光全部的線程。 Event MPM是解決這個問題的一種新模型,它把服務進程從鏈接中分離出來。在服務器處理速度很快,同時具備很是高的點擊率時,可用的線程數量就是關鍵的資源限 制,此時Event MPM方式是最有效的。一個以Worker MPM方式工做的繁忙服務器可以承受每秒好幾萬次的訪問量(例如在大型新聞服務站點的高峯時),而Event MPM能夠用來處理更高負載。值得注意的是,Event MPM不能在安全HTTP(HTTPS)訪問下工做。
對於Event 模式,apache給出瞭如下警告:
This MPM is experimental, so it may or may not work as expected .
這種MPM目前處於試驗狀態,他可能不能按照預期的那樣工做。
如何查看apache的三種MPM
[root@localhost apache]# httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
若是你看到perfork.c 則表示當前爲perfork MPM模式。worker.c 則表示爲 worker MPM模式
如何更改MPM:
[root@localhost httpd-2.4.1]# ./configure --prefix=/usr/local/apache2worker --enable-so --with-mpm=worker [root@localhost httpd-2.4.1]# make [root@localhost httpd-2.4.1]# make install
指定--with-mpm=NAME 選項指定MPM,NAME就是你想使用的MPM的名稱。不指定模式的話,默認爲Prefork MPM
如何設置成Event MPM
同我上面的方法同樣,只須要在安裝的時候加上如下參數: --enable-nonportable-atomics=yes
設置perfork MPM
<IfModule mpm_prefork_module>
StartServers 5
#數量的服務器進程開始
MinSpareServers 5
#最小數量的服務器進程,保存備用
MaxSpareServers 10
#最大數量的服務器進程,保存備用
MaxRequestWorkers 250
#最大數量的服務器進程容許開始
MaxConnectionsPerChild 0
# 最大鏈接數的一個服務器進程服務
</IfModule>
設置 worker MPM
<IfModule mpm_worker_module>
StartServers 3
# 初始數量的服務器進程開始
MinSpareThreads 75
# 最小數量的工做線程,保存備用
MaxSpareThreads 250
# 最大數量的工做線程,保存備用
ThreadsPerChild 25
# 固定數量的工做線程在每一個服務器進程
MaxRequestWorkers 400
# 最大數量的工做線程
MaxConnectionsPerChild 0
# 最大鏈接數的一個服務器進程服務
</IfModule>
設置event MPM
<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
httpd 2.4的安裝
centos6 yum安裝的apr版本已經不適用httpd-2.4版本了。因此,須要源碼編譯apr以及apr-util
1. 下載源碼:
cd /usr/local/src/
wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.12.tar.bz2
wget http://mirrors.cnnic.cn/apache/apr/apr-1.5.2.tar.bz2
wget http://mirrors.cnnic.cn/apache/apr/apr-util-1.5.4.tar.gz
2. 安裝apr
tar jxvf apr-1.5.2.tar.bz2
cd apr-1.5.2
./configure --prefix=/usr/local/apr
make && make install
3. 安裝apr-util
tar zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
make && make install
4. 安裝httpd
yum install gcc make cmake pcre-devel
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/
make && make install
apache加入系統啓動項
第一步:
cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
第二步:
vim /etc/init.d/httpd
在第一行#!/bin/sh下增長兩行文字
# chkconfig: 35 70 30
# description: Apache
第三步:
保存退出
chkconfig --level 35 httpd on
------------------------------------------------------------------------------
php編譯安裝--安裝在最後
cd /usr/local/src
wget http://am1.php.net/distributions/php-5.3.27.tar.gz
./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 \
--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
須要安裝的包:
jpeglib.h : libjpeg libjpeg-devel
libxm12-devel
openssl opensll-devel
bzip2 bzip2-devel
libpng libpng-devel
freetype freetype-devel
epel-release
libmcrypt-devel
#make
#make install
拷貝php配置文件
cp php.ini-production /usr/local/php/etc/php.ini
修改apache配置
#vim /usr/local/apache2/conf/httpd.conf
找到:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
改爲
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
若是不修改這個地方 訪問網站會顯示403
找到:
AddType application/x-gzip .gz .tgz
該行下面添加:
AddType application/x-httpd-php .php
想要支持php腳本解析,必需要加上對應類型
找到
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
改成
<IfModule dir_module>
DirectoryIndex index.html index.htm index.php
</IfModule>
增長對php的索引,若是一個站點默認頁是index.php,那麼就得加上這個index.php的支持
在找到:
ServerName localhost:80
把#去掉
查看配置是否有問題
/usr/local/apache2/bin/apachectl -t
若是顯示 Syntax OK 就沒事了
/usr/local/apache2/bin/apachectl start
測試PHP解析:
curl localost/1.php
若是有規則 清除規則