新聞中心
centos 6.6部署mysql+Nginx+php環(huán)境
mysql安裝
下載mysql安裝包

http://dev.mysql.com/downloads/mysql/
選擇 linux-Generic
選擇Linux - Generic (glibc 2.5) (x86, 64-bit), RPM
下載完畢后放到自定義放置目錄,本例中放置在/usr/local/software/mysql目錄下
解壓縮
tar -xf MySQL-5.6.22-1.linux_glibc2.5.x86_64.rpm-bundle.tar
在安裝MySQL之前,先檢查CentOS系統(tǒng)中是否已經(jīng)安裝了一個MySQL,如果已經(jīng)安裝先卸載,不然會導(dǎo)致安裝新的MySQL失敗。
rpm -qa | grep mysql --查看系統(tǒng)之前是否已安裝MySQL。
mysql-libs-5.1.47-4.el6.i686
顯示結(jié)果說明 CentOS6.0系統(tǒng)自帶了一個MySQL,我們需要刪除這個老版本,用root用戶執(zhí)行下面語句
rpm -e --nodeps mysql-libs-5.1.47-4.el6.i686
在刪除MySQL的rpm后,還要進(jìn)行一些掃尾操作
第一種善后處理:使用下面命令進(jìn)行處理。
rm -rf /var/lib/mysql*
rm -rf /usr/share/mysql*
另一種善后處理:卸載后 /var/lib/mysql 中的 /etc/my.cnf 會重命名為 my.cnf.rpmsave,/var/log/mysqld.log 會重命名為 /var/log/mysqld.log.rpmsave,如果確定沒用后就手工刪除。
開始安裝mysql服務(wù)器
執(zhí)行命令:
rpm -ivh MySQL-server-5.6.22-1.linux_glibc2.5.x86_64.rpm
結(jié)果如下:
Preparing… ########################################### [100%]
1:MySQL-server ########################################### [100%]
warning: user mysql does not exist - using root
warning: group mysql does not exist - using root
2014-08-10 22:43:44 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option (see documentation for more details).
2014-08-10 22:43:44 23012 [Note] InnoDB: Using atomics to ref count buffer pool pages
2014-08-10 22:43:44 23012 [Note] InnoDB: The InnoDB memory heap is disabled
2014-08-10 22:43:44 23012 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2014-08-10 22:43:44 23012 [Note] InnoDB: Memory barrier is not used
2014-08-10 22:43:44 23012 [Note] InnoDB: Compressed tables use zlib 1.2.3
2014-08-10 22:43:44 23012 [Note] InnoDB: Using Linux native AIO
2014-08-10 22:43:44 23012 [Note] InnoDB: Not using CPU crc32 instructions
2014-08-10 22:43:44 23012 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2014-08-10 22:43:44 23012 [Note] InnoDB: Completed initialization of buffer pool
2014-08-10 22:43:45 23012 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!
2014-08-10 22:43:45 23012 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB
2014-08-10 22:43:45 23012 [Note] InnoDB: Database physically writes the file full: wait…
2014-08-10 22:43:45 23012 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB
2014-08-10 22:43:46 23012 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB
2014-08-10 22:43:46 23012 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
2014-08-10 22:43:46 23012 [Warning] InnoDB: New log files created, LSN=45781
2014-08-10 22:43:46 23012 [Note] InnoDB: Doublewrite buffer not found: creating new
2014-08-10 22:43:46 23012 [Note] InnoDB: Doublewrite buffer created
2014-08-10 22:43:46 23012 [Note] InnoDB: 128 rollback segment(s) are active.
2014-08-10 22:43:46 23012 [Warning] InnoDB: Creating foreign key constraint system tables.
2014-08-10 22:43:47 23012 [Note] InnoDB: Foreign key constraint system tables created
2014-08-10 22:43:47 23012 [Note] InnoDB: Creating tablespace and datafile system tables.
2014-08-10 22:43:47 23012 [Note] InnoDB: Tablespace and datafile system tables created.
2014-08-10 22:43:47 23012 [Note] InnoDB: Waiting for purge to start
2014-08-10 22:43:47 23012 [Note] InnoDB: 5.6.22 started; log sequence number 0
A random root password has been set. You will find it in ‘/root/.mysql_secret’.
2014-08-10 22:43:48 23012 [Note] Binlog end
2014-08-10 22:43:48 23012 [Note] InnoDB: FTS optimize thread exiting.
2014-08-10 22:43:48 23012 [Note] InnoDB: Starting shutdown…
2014-08-10 22:43:50 23012 [Note] InnoDB: Shutdown completed; log sequence number 16259772014-08-10 22:43:50 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option (see documentation for more details).
2014-08-10 22:43:50 23039 [Note] InnoDB: Using atomics to ref count buffer pool pages
2014-08-10 22:43:50 23039 [Note] InnoDB: The InnoDB memory heap is disabled
2014-08-10 22:43:50 23039 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2014-08-10 22:43:50 23039 [Note] InnoDB: Memory barrier is not used
2014-08-10 22:43:50 23039 [Note] InnoDB: Compressed tables use zlib 1.2.3
2014-08-10 22:43:50 23039 [Note] InnoDB: Using Linux native AIO
2014-08-10 22:43:50 23039 [Note] InnoDB: Not using CPU crc32 instructions
2014-08-10 22:43:50 23039 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2014-08-10 22:43:50 23039 [Note] InnoDB: Completed initialization of buffer pool
2014-08-10 22:43:50 23039 [Note] InnoDB: Highest supported file format is Barracuda.
2014-08-10 22:43:50 23039 [Note] InnoDB: 128 rollback segment(s) are active.
2014-08-10 22:43:50 23039 [Note] InnoDB: Waiting for purge to start
2014-08-10 22:43:50 23039 [Note] InnoDB: 5.6.22 started; log sequence number 1625977
2014-08-10 22:43:50 23039 [Note] Binlog end
2014-08-10 22:43:50 23039 [Note] InnoDB: FTS optimize thread exiting.
2014-08-10 22:43:50 23039 [Note] InnoDB: Starting shutdown…
2014-08-10 22:43:52 23039 [Note] InnoDB: Shutdown completed; log sequence number 1625987A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in ‘/root/.mysql_secret’.You must change that password on your first connect,
no other statement but ‘SET PASSWORD’ will be accepted.
See the manual for the semantics of the ‘password expired’ flag.Also, the account for the anonymous user has been removed.
In addition, you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test database.
This is strongly recommended for production servers.See the manual for more instructions.
Please report any problems at http://bugs.mysql.com/
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
New default config file was created as /usr/my.cnf and
will be used by default by the server when you start it.
You may edit this file to change server settings
安裝mysql客戶端
rpm -ivh MySQL-client-5.6.22-1.linux_glibc2.5.x86_64.rpm
Preparing… ########################################### [100%]
1:MySQL-client ^C########################################### [100%] 安裝完成
MySQL的幾個重要目錄。
MySQL安裝完成后不像 SQL Server 默認(rèn)安裝在一個目錄,它的數(shù)據(jù)庫文件、配置文件和命令文件分別在不同的目錄,了解這些目錄非常重要,尤其對于Linux的初學(xué)者,因?yàn)?Linux本身的目錄結(jié)構(gòu)就比較復(fù)雜,如果搞不清楚MySQL的安裝目錄那就無從談起深入學(xué)習(xí)。
a、數(shù)據(jù)庫目錄 /var/lib/mysql/
b、配置文件 /usr/share/mysql(mysql.server命令及配置文件)
c、相關(guān)命令 /usr/bin(mysqladmin mysqldump等命令)
d、啟動腳本 /etc/rc.d/init.d/(啟動腳本文件mysql的目錄)
如:/etc/rc.d/init.d/mysql start/restart/stop/status
更改 MySQL 目錄。由于MySQL數(shù)據(jù)庫目錄占用磁盤比較大,而MySQL默認(rèn)的數(shù)據(jù)文件存儲目錄為 /”var/lib/mysql”,也可以把要把數(shù)據(jù)目錄移到 “/” 根目錄下的 “mysql_data” 目錄中(如果做測試用就不用移動了)。
把 “/var/lib/mysql” 整個目錄移到 “/mysql_data”
mv /var/lib/mysql /mysql_data
找到my.cnf配置文件
如果”/etc/”目錄下沒有my.cnf配置文件,請到 “/usr/share/mysql/” 下找到 my-default.cnf 文件,拷貝其中一個合適的配置文件到 “/etc/” 并改名為 “my.cnf” 中。命令如下:
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
編輯MySQL的配置文件 “/etc/my.cnf” 為保證MySQL能夠正常工作,需要指明”mysql.sock”文件的產(chǎn)生位置,以及默認(rèn)編碼修改為UTF-8。用下面命令:
vim /etc /my.cnf
添加以下命令
[mysqld]
socket = /mysql_data/mysql/mysql.sock
datadir=/mysql_data/mysql
如果你的數(shù)據(jù)存儲位置要改變的話需要在這里指定存儲目錄
lower_case_table_names=1
(注意linux下mysql安裝完后是默認(rèn):區(qū)分表名的大小寫,不區(qū)分列名的大小寫;# lower_case_table_names = 0 0:區(qū)分大小寫,1:不區(qū)分大小寫)
character-set-server=utf8
[client]
socket = /mysql_data/mysql/mysql.sock
最后,需要修改MySQL啟動腳本 /etc/rc.d/init.d/mysql,
vim /etc/rc.d/init.d/mysql
修改 datadir=/mysql_data/mysql。
vi /etc/selinux/config
把 SELINUX=enforcing 改為 SELINUX=disabled 后存盤退出重啟機(jī)器試試,必須要重啟,很關(guān)鍵
機(jī)器重啟后,配置防火墻,開放3306端口
vim /etc/sysconfig/iptables
新增
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
內(nèi)容編輯后如下:
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
啟動mysql
service mysql start
1 mysql裝完之后,默認(rèn)的初始化root密碼在/root/.mysql_secret里面
所以你登錄的時候用 mysql -u root -p密碼,就可以了
2 登錄之后,必須密碼
mysql> set password=password('新的密碼');
3 目前為止root只有本地登錄權(quán)限,沒有遠(yuǎn)程登錄權(quán)限
至此,mysql安裝完畢。
接下來,要開放一個用戶可以通過工具可以連接到服務(wù)器的數(shù)據(jù)庫,
創(chuàng)建用戶命令如下:
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
授權(quán)如下:
GRANT ALL ON *.* TO 'username'@'%';
Nginx安裝
安裝nginx需要的環(huán)境,pcre(作用rewrite)、zlib(作用壓縮)、ssl,這個也可以自己下載編譯安裝
minimal下要先安裝如下支持
yum -y install gcc gcc-c++ autoconf automake openssl openssl-devel pcre-devel zlib-devel zlib pcre
執(zhí)行以上代碼,環(huán)境安裝完畢。
下載對應(yīng)的nginx安裝包(nginx-*.tar.gz)
下載地址:http://nginx.org/en/download.html
本文中下載的是1.11.1版本
解壓壓縮包
tar –zxvf nginx-1.11.1.tar.gz
進(jìn)入解壓后的目錄
cd nginx-1.11.1;
然后執(zhí)行
./congigure --prefix=/usr/local/nginx;
繼續(xù)執(zhí)行代碼
make && make install;
為了方便執(zhí)行nginx命令,這里加入對應(yīng)的環(huán)境變量
執(zhí)行命令:
vim /ect/profile
新增如下內(nèi)容
PATH=$PATH:/usr/local/nginx/sbin
export PATH
加好后如下:
# /etc/profile
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
# ksh workaround
EUID=`id -u`
UID=`id -ru`
fi
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
pathmunge /sbin after
fi
HOSTNAME=`/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
pathmunge /sbin after
fi
HOSTNAME=`/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
PATH=$PATH:/usr/local/nginx/sbin
export PATH
# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done
unset i
unset -f pathmunge
按ESC鍵退出vim編輯模式,輸入
:wq
保存退出
讓修改后的環(huán)境變量生效:
source /etc/profile
這樣環(huán)境變量就加好了,測試一下唄。
輸入命令:
nginx -v
成功配置后結(jié)果顯示如下:
nginx version: nginx/1.11.1
接下來修改防火墻配置,開放80端口
執(zhí)行命令:
vim /etc/sysconfig/iptables
新增內(nèi)容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
修改后的內(nèi)容如下:
**filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT*
:wq保存退出
重啟防火墻配置
執(zhí)行命令:
/etc/init.d/iptables restart
防火墻重啟成功后,啟動nginx
輸入命令:
nginx
打開瀏覽器訪問ip,看見nginx歡迎頁面說明成功。
php環(huán)境的搭建
nginx本身不能處理PHP,它只是個web服務(wù)器,當(dāng)接收到請求后,如果是php請求,則發(fā)給php解釋器處理,并把結(jié)果返回給客戶,接下來以php-fpm為例介紹如何使nginx支持PHP。
新版PHP已經(jīng)集成php-fpm了,不再是第三方的包了,推薦使用
安裝前的環(huán)境準(zhǔn)備:
yum -y install gcc automake autoconf libtool make
yum -y install gcc gcc-c++ glibc
yum -y install libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel
centos源不能安裝libmcrypt-devel,由于版權(quán)的原因沒有自帶mcrypt的包
使用wget可以通過以下路徑下載
wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/attic/libmcrypt/libmcrypt-2.5.7.tar.gz
或者單獨(dú)去下載壓縮包
下載好后解壓
tar -zxvf libmcrypt-2.5.7.tar.gz
進(jìn)入解壓后的目錄
cd libmcrypt-2.5.7
#編譯(默認(rèn)安裝到/usr/local/lib/)
執(zhí)行代碼:
./configure --prefix=/usr/local/libmcrypt
執(zhí)行代碼安裝:
make && make install
接下來新版php-fpm的安裝
解壓php安裝包
tar -zvxf php-5.4.7.tar.gz
進(jìn)入解壓后的目錄
cd php-5.4.7
執(zhí)行命令:
./configure --prefix=/usr/local/php --enable-fpm --with-mcryp=/usr/local/libmcrypt --enable-mbstring --disable-pdo --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli
然后輸入命令:
make all install
以上就完成了php-fpm的安裝。
進(jìn)入php目錄
cd /usr/local/php
將對應(yīng)的配置文件copy
執(zhí)行命令:
cp etc/php-fpm.conf.default etc/php-fpm.conf
修改nginx配置以支持php-fpm
vim /usr/local/nginx/conf/nginx.conf
做如下修改:
location / {
root html;
index index.html index.htm index.php;
}
location ~ .php$ {
root /usr/local/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
修改配置文件后重啟nginx
nginx -s reload
在/usr/local/nginx/html下創(chuàng)建index.php文件,輸入如下內(nèi)容
啟動php-fpm
執(zhí)行命令:
/usr/local/php/sbin/php-fpm
訪問ip/index.php出現(xiàn)php配置,成功搞定。
當(dāng)前標(biāo)題:CentOS6.6部署MySQL+Nginx+PHP環(huán)境
網(wǎng)站URL:http://fisionsoft.com.cn/article/djspdid.html


咨詢
建站咨詢
