PHP
编译安装php
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --without-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhash
依赖
yum install -y gcc libxml2 libxml2-devel libcurl libcurl-devel libjpeg-turbo-devel libpng-devel freetype-devel gmp-devel net-snmp-devel
编辑文件/usr/local/lnmp/php/etc/php-fpm.conf.default
解注释pid文件
拷贝配置文件
cp /usr/local/lnmp/php/etc/php-fpm.conf.default /usr/local/lnmp/php/etc/php-fpm.conf
编辑主文件,选择时区
vim php-5.6.35/php.ini.production
cp php-5.6.35/php.ini.production /usr/local/lnmp/php/etc/php.ini
拷贝执行文件
cp php-5.6.35/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
useradd nginx
启动php
chmod +x /etc/init.d/php-fpm
/etc/init.d/php-fpm start
nginx
编译安装nginx
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-threads --user=nginx --group=nginx
修改配置文件
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.conf;
}
location / {
root html;
index index.php index.html index.htm;
}
添加软链接
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
启动测试
MySQL
安装cmake
yum install cmake-2.8.12.2-4.el6.x86_64.rpm -y
安装依赖
yum install ncurses-devel bison gcc-c++ -y
编译安装
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/
make && make install
数据库的初始化
拷贝启动文件
cp mysql.server /etc/init.d/mysqld
添加执行权限
chmod +x /etc/init.d/mysqld
拷贝配置文件
cp /etc/my.cnf /etc/my.cnf.bak
cp my-default.cnf /etc/my.cnf
修改配置文件 /etc/my.cnf
[mysqld]
basedir = /usr/local/lnmp/mysql
datadir = /usr/local/lnmp/mysql/data
socket = /usr/local/lnmp/mysql/data/mysql.sock
添加mysql组和用户
groupadd -g 27 mysql
useradd -u 27 -g 27 mysql
修改权限初始化
chown mysql.mysql /usr/local/lnmp/mysql -R
编辑环境变量.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
环境变量生效
source ~/.bash_profile
安全初始化数据库
mysqld --user=mysql --initialize
修改用户目录权限,提高安全性
chown root /usr/local/lnmp/mysql/ -R
赋予mysql数据目录的权限
chown mysql /usr/local/lnmp/mysql/data -R
启动数据库
/etc/init.d/mysql start
数据库安全初始化
mysql_secure_installation
登录尝试
mysql -uroot -p
LNMP架构优化
搭建
启动nginx,php,mysql
修改php配置文件,添加数据库socket文件/usr/local/lnmp/php/etc/php.ini
pdo_mysql.default_socket= /usr/local/lnmp/mysql/data/mysql.sock
mysql.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
mysqli.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
重启php
下载开源软件Discuz,解压
修改目录权限
修改数据库目录权限
查看结果
优化
memcache的使用
修改环境变量,添加php可执行命令路径环境变量到路径中
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/php/bin/
解压memcache压缩文件,使用phpize获得编译文件
编译安装memcache
./configure
make && make install
安装memcached启动memcache服务
yum install memcached
查看配置文件
可以修改文件/etc/sysconfig/memcached,添加额外的操作,例如下图,但是测试时不需要加
启动memcached
/etc/init.d/memcached start
查看端口
通过telnet测试
set name(键值对中的key,可寻找value) 0(flags额外参数) 0(exptime缓存时间) 6(bytes缓存字符的长度)
php调用该扩展模块
extension=memcache.so
重启php
拷贝文件memcache-2.2.5/memcache.php至网页发布目录
修改内容
$VERSION='$Id: memcache.php,v 1.2 2008/09/11 19:21:06 mikl Exp $';
define('ADMIN_USERNAME','memcache'); // Admin Username
define('ADMIN_PASSWORD','redhat'); // Admin Password
define('DATE_FORMAT','Y/m/d H:i:s');
define('GRAPH_SIZE',200);
define('MAX_ITEM_DUMP',50);
$MEMCACHE_SERVERS[] = '172.25.41.1:11211'; // add more as an array
拷贝memcache测试页memcache-2.2.5/example.php到发布目录
访问index.php和example.php查看结果的变化
安装openresty测试memcache缓存
编译安装openresty
./configure
gmake && gmake install
修改配置文件
upstream memcache {
server localhost:11211;
}
location /memc {
internal;
memc_connect_timeout 100ms;
memc_send_timeout 100ms;
memc_read_timeout 100ms;
set $memc_key $query_string;
set $memc_exptime 300;
memc_pass memcache;
}
location ~ \.php$ {
set $key $uri$args;
srcache_fetch GET /memc $key;
srcache_store PUT /memc $key;
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
拷贝测试文件
cp /usr/local/lnmp/nginx/html/example.php /usr/local/openresty/nginx/html/
cp /usr/local/lnmp/nginx/html/memcache.php /usr/local/openresty/nginx/html
cp /usr/local/lnmp/nginx/html/index.php /usr/local/openresty/nginx/html/
测试结果
tomcat配置java环境
解压tomcat和jdk到指定路径下并建立软链接
tar xf apache-tomcat-7.0.37.tar.gz -C /usr/local/
tar xf jdk-7u79-linux-x64.tar.gz -C /usr/local/
ln -s /usr/local/apache-tomcat-7.0.37/ /usr/local/tomcat
配置环境变量
export JAVA_HOME=/usr/local/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
启动tomcat(默认发布目录webapps(ROOT))
测试访问
tomcat动态页面访问
新开一台虚拟机,拷贝tomcat下以及jdk的文件至/usl/local目录,同时建立tomcat软链接
配置环境变量
export JAVA_HOME=/usr/local/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
拷贝测试文件test.jsp分别到两台服务器上
修改openresty的nginx的配置文件,配置负载均衡
upstream tomcat {
server 172.25.41.1:8080;
server 172.25.41.2:8080;
}
location ~ \.jsp$ {
proxy_pass http://tomcat;
}
重启nginx和tomcat
/usr/local/openresty/nginx/sbin/nginx -s reload
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
登录测试页面,登录,发现轮询结果
会话保持(或者使用ip_hash)
编译安装nginx-1.10.1,添加模块sticky
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-threads --user=nginx --group=nginx --add-module=/root/nginx-sticky-module-ng
拷贝openresty下的nginx的conf至新生成的nginx服务器的配置文件中,同时修改内容如下
cp /usr/local/openresty/nginx/conf/nginx.conf /usr/local/lnmp/nginx/conf/nginx.conf
# 添加sticky
upstream tomcat {
sticky;
server 172.25.41.1:8080;
server 172.25.41.2:8080;
}
关闭openresty,开启lnmp下的nginx,测试
session共享
拷贝jar包到指定目录tomcat/lib下(Apache Tomcat/7.0.37)【两台主机均进行如下操作】
cp ~/Jar/* /usr/local/tomcat/lib
修改tomcat配置文件
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.41.1:11211,n2:172.25.41.2:11211"
failoverNodes="n1" (注意不同主机的节点号)
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
安装memcached并启动
yum install memcached
/etc/init.d/memcached start
关闭并重新启动tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
两台主机均配置完毕后,查看结果
此时尝试断开服务器1,主机切换,但是内容保持一致