本次试验用了两个web,一个php和mysql web1,2 (172.16.31.30,31.31)nfs 172.16.31.34 php 172.16.31.32 mysql 172.16.31.32
构建如图所示
1,搭建web
首先# mount -t nfs 172.16.31.34:/mydata/mydata 挂载nfs 此次编译和上篇LAMP中web所用的版本是一个版本,编译步骤相同 1)下载apr-1.5.0.tar.bz2 apr-util-1.5.3.tar.bz2 httpd-2.4.9.tar.bz2 这三个包,依次解压, # tar xf apr-1.5.0.tar.bz2 # cd apr-1.5.0 # ./configure --prefix=/usr/local/apr # make && make install
2) 编译安装apr-util
# tar xf apr-util-1.5.3.tar.bz2 # cd apr-util-1.5.3 # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr # make && make install
3)编译安装httpd-2.4.9 # tar xf httpd-2.4.9.tar.bz2 # cd httpd-2.4.9 # ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event # make && make install
两台都是做如此操作,然后修改PATH环境变量 echo "export PATH=/usr/local/apach/bin:$PATH">> /etc/profile.d/httpd.sh
让PATH在当前shell生效并且启动服务 source /etc/profile.d/httpd.sh apachectl start
# vim /etc/httpd/httpd.con LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 需启用的两个模块 LoadModule proxy_module modules/mod_proxy.so
ServerName www.caoshujia.com:80 ProxyRequests off 关闭正向代理 ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.2.11:9000/mydata/$1 只要是php文件都使用fcgi协议代理到php服务器。 DocumentRoot "/mydata/" 修改站点根目录为nfs <Directory "/mydata/"> 修改对站点根目录的控制标签 DirectoryIndex index.html index.php 添加默认请求文件 AddType application/x-httpd-php .php 在<IfModule mime_module>标签中加入,以支持php格式的文件。 AddType application/x-httpd-php-source .phps # httpd -t # apache restart
2 php编译安装
1)事先需要安装几个包组,如果安装,无需安装 # yum -y groupinstall "Desktop Platform Development" # yum -y install bzip2-devel # yum -y install libmcrypt-devel
2)编译安装 # tar xf php-5.4.26.tar.bz2 # cd php-5.4.26 #./configure --prefix=/usr/local/php --with-mysql --with-mysqli --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --enable-sockets --enable-fpm --with-bz2 --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-mcrypt # make && make install
3)为php提供配置文件: # cp php.ini-production /etc/php.ini
4)配置php-fpm
为php-fpm提供SysV init脚本,并将其添加至服务列表: # cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm # chmod +x /etc/rc.d/init.d/php-fpm # chkconfig --add php-fpm # chkconfig php-fpm on 为php-fpm提供配置文件: # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
编辑php-fpm的配置文件: # vim /usr/local/php/etc/php-fpm.conf 配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行): pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 8 pid = /usr/local/php/var/run/php-fpm.pid 指定php的PID文件所在位置。这条一定要写在[global]下面第一行,不然不会生效。
接下来就可以启动php-fpm了: # service php-fpm start
检测监听端口 # netstat -tnlp | grep php-fpm tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 689/php-fpm
[root@localhost php-5.4.26]# service php start [root@localhost php-5.4.26]# mkdir /mydata [root@localhost php-5.4.26]# mount -t nfs 172.16.31.34:/mydata/mydata 挂载nfs,用来存储php页面。 [root@localhost php-5.4.26]# chown -R nobody /mydata 修改webdata目录的所有者为nobody, 因为nobody是php进程运行的用户。
3,mysql配置 1首先下载mysql-5.5.33包组(mariadb-5.5.36-linux-x86_64.tar.gz),然后解压mariadb-5.5.36-linux-x86_64.tar.gz到/usr/local [root@localhost ~]# tar xfmariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local 2 准备数据存放的文件系统 a 新建一个sda3 [root@localhost~]# fdisk /dev/sda Command (m for help): n Commandaction e extended p primary partition (1-4) p Partitionnumber (1-4): 3 Firstcylinder (7859-13054, default 7859): Usingdefault value 7859 Lastcylinder, +cylinders or +size{K,M,G} (7859-13054, default 13054): +20G
Command(m for help): t Partitionnumber (1-4): 3 Hex code(type L to list codes): 8e (文件系统为LVM) Changedsystem type of partition 3 to 8e (Linux LVM)
Command (m for help): w
b读入磁盘中 [root@localhost ~]# kpartx -af /dev/sda device-mapper: reload ioctl on sda1failed: Invalid argument create/reload failed on sda1 device-mapper: reload ioctl on sda2failed: Invalid argument create/reload failed on sda2 device-mapper: reload ioctl on sda3failed: Invalid argument create/reload failed on sda3
[root@localhost ~]# partx -a /dev/sda BLKPG: Device or resource busy error adding partition 1 BLKPG: Device or resource busy error adding partition 2 BLKPG: Device or resource busy error adding partition 3 (表示已经读入到磁盘中)
c 新建逻辑卷,并将其挂载至特定目录,此处目录设置为/mydata [root@localhost ~]# pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created [root@localhost ~]# vgcreate myvg/dev/sda3 Volume group "myvg" successfully created [root@localhost ~]# lvcreate -L 10G -nmydata myvg Logical volume "mydata" created [root@localhost ~]# mke2fs -t ext4 -LMYDATA -b 4096 -m 3 /dev/myvg/mydata
并且能开机挂载,编辑fastab文件 /dev/mapper/vg0-root / ext4 defaults 1 1 UUID=90ebd4cf-95c1-4338-b0dd-19b2b1cb943d/boot ext4 defaults 1 2 /dev/mapper/vg0-usr /usr ext4 defaults 1 2 /dev/mapper/vg0-var /var ext4 defaults 1 2 /dev/mapper/vg0-swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 LABEL=MYDATA /mydata ext4 defaults 0 0 (开机挂载)
d 新建用户以安全方式运行进程,并创建链接 [root@localhost ~]# groupadd -r mysql [root@localhost ~]# useradd-g mysql -r mysql [root@localhost ~]# idmysql uid=496(mysql)gid=493(mysql) groups=493(mysql) [root@localhost ~]#chown -R mysql.mysql /mydata/data/ [root@localhost ~]# ll -a/mydata/data/ total 8 drwxr-xr-x 2 mysql mysql4096 Aug 11 20:15 . 先进入/usr/local目录下 [root@localhost local]# ln-sv mariadb-5.5.36-linux-x86_64 mysql
lrwxrwxrwx 1 root root 27 Aug 11 20:18mysql -> mariadb-5.5.36-linux-x86_64
e 为mysql提供主配置文件 cd/usr/local/mysql/
mkdir /etc/mysql创建一个目录,因为在/etc下有个my.cnf cpsupport-files/my-large.cnf /etc/mysql/my.cnf vim/etc/mysql/my.cnf
port = 3306 socket =/tmp/mysql.sock skip-external-locking key_buffer_size = 256M max_allowed_packet = 1M table_open_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size= 16M # Try number of CPU's*2 for thread_concurrency thread_concurrency = 8 datadir = /mydata/data (指定mysql数据文件的存放位置)
开始初始化 [root@localhostmysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/ (此处必须在 mysql 目录下,要在scripts初始化,会报错)
f 为mysql提供sysv服务脚本 [root@localhostmysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
然后添加到服务列表中 [root@localhost mysql]# chkconfig --addmysqld [root@localhost mysql]# chkconfig --list mysqld mysqld 0:off1:off2:on3:on4:on5:on6:off
启动服务 root@localhost mysql]# service mysqld start Starting MySQL... [ OK ] [root@localhost mysql]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:52971 *:* LISTEN 0 128 :::50732 :::* LISTEN 0 128 :::111 :::* LISTEN 0 128 *:111 *:* LISTEN 0 128 :::22 :::* LISTEN 0 128 *:22 *:* LISTEN 0 128 127.0.0.1:631 *:* LISTEN 0 128 ::1:631 :::* LISTEN 0 100 ::1:25 :::* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 127.0.0.1:6010 *:* LISTEN 0 128 ::1:6010 :::* LISTEN 0 50 *:3306 *:* (3306端口已启动)
设置权限 [root@localhostmysql]#chmod +x /etc/rc.d/init.d/mysqld
g 编辑环境变量 [root@localhost~]# vim /etc/profile.d/mysql.sh exportPATH=/usr/local/mysql/bin:$PATH
h导出头文件和库文件 ln -sv /usr/local/mysql/include /usr/include/mysql
[root@localhost~]# vim /etc/ld.so.conf.d/mysql.conf (新建) /usr/local/mysql/lib 让系统重新载入 [root@localhost ~]#ldconfig -v | grep mysql /usr/local/mysql/lib: libmysqld.so.18 -> libmysqld.so.18 libmysqlclient.so.18 ->libmysqlclient_r.so.18.0.0 /usr/lib64/mysql: libmysqlclient.so.16 -> libmysqlclient.so.16.0.0 libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0 [root@localhost ~]#mysql MariaDB [(none)]> use mysql MariaDB [mysql]> grant all on discuz.* to disadmin@172.16.31.32 identified by 'root'; 为数据库用户disadmin授权在172.16.31.32主机上登陆,密码为 root
配置完成。 |