#1. MySQL安装
cd /usr/local/src //安装包存放路径
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz //下载Mysql包
tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz //解压
mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql //移动位置
cd /usr/local/mysql //进入mysql
useradd mysql //创建用户
mkdir /data/ //创建数据存放位置
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql //初始化
cp support-files/my-default.cnf /etc/my.cnf
vi /etc/my.cnf //指定datadir和socket路径
cp support-files/mysql.server /etc/init.d/mysqld
vi /etc/init.d/mysqld //定义basedir和datadir
/etc/init.d/mysqld start //启动
ps -aux|grep mysqld //查看是否启动
chkconfig --add mysqld;chkconfig mysqld on //加入服务列表并添加至开机启动
service mysqld start //重启mysql服务 service mysqld
2.PHP安装
cd /usr/local/src/
wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
tar zxf php-5.6.30.tar.gz
useradd -s /sbin/nologin php-fpm
cd php-5.6.30
./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl --with-openssl
如果出现报错,根据提示安装所需要的软件包,直到配置完成。
make && make install
/usr/local/php-fpm/sbin/php-fpm -m 查看加载的模块
/usr/local/php-fpm/sbin/php-fpm -i 查看php的相关信息
## 修改配置文件
cp php.ini-production /usr/local/php-fpm/etc/php.ini
ls /usr/local/php-fpm/etc/
vim /usr/local/php-fpm/etc/php-fpm.conf
[global] 定义全局参数
pid = /usr/local/php-fpm/var/run/php-fpm.pid (pid路径)
error_log = /usr/local/php-fpm/var/log/php-fpm.log (error_log路径)
[www] 模块名
listen = /tmp/php-fcgi.sock 监听地址
listen.mode = 666 定义sock文件权限666
user = php-fpm 定义是那个用户
group = php-fpm 定义是那个组
pm = dynamic pm都是进程信息
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
## 保存配置文件后,检测配置是否正确:
usr/local/php-fpm/etc/php-fpm -t
如果显示test is successful,则说明配置成功。
## 启动php-fpm
cp /usr/local/src/php-5.6.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm 拷贝启动脚本到etc下面
chmod 755 /etc/init.d/php-fpm 修改文件权限为755
chkconfig --add php-fpm 把php-fpm服务添加到服务列表去
chkconfig php-fpm on 设置开机自启动
service php-fpm start 开启php-fpm服务
ps aux |grep php-fpm\\检查php-fpm服务启动状态
3.Nginx安装
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.12.1.tar.gz
tar zxvf nginx-1.12.1.tar.gz
cd nginx-1.12.1
./configure --prefix=/usr/local/nginx
make && make install
## 编写Nginx启动脚本,并加入系统服务:
vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings
NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"
start()
{
echo -n $"Starting $prog: "
mkdir -p /dev/shm/nginx_temp
daemon $NGINX_SBIN -c $NGINX_CONF
RETVAL=$?
echo
return $RETVAL
}
stop()
{
echo -n $"Stopping $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -TERM
rm -rf /dev/shm/nginx_temp
RETVAL=$?
echo
return $RETVAL
}
reload()
{
echo -n $"Reloading $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -HUP
RETVAL=$?
echo
return $RETVAL
}
restart()
{
stop
start
}
configtest()
{
$NGINX_SBIN -c $NGINX_CONF -t
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
configtest)
configtest
;;
*)
echo $"Usage: $0 {start|stop|reload|restart|configtest}"
RETVAL=1
esac
exit $RETVAL
## 保存脚本更改权限:
chmod 755 /etc/init.d/nginx
chkconfig --add nginx ; chkconfig nginx on //nginx加入开机启动
## 更改Nginx的配置文件:
> /usr/local/nginx/conf/nginx.conf\\重定向符号>,单独使用时,可以把一个文本文档快速清空。
编辑Nginx配置文件:
vim /usr/local/nginx/conf/nginx.conf
user nobody nobody;
worker_processes 2;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 6000;
}
http
{
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 3526;
server_names_hash_max_size 4096;
log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
' $host "$request_uri" $status'
' "$http_referer" "$http_user_agent"';
sendfile on;
tcp_nopush on;
keepalive_timeout 30;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 8 4k;
request_pool_size 4k;
output_buffers 4 32k;
postpone_output 1460;
client_max_body_size 10m;
client_body_buffer_size 256k;
client_body_temp_path /usr/local/nginx/client_body_temp;
proxy_temp_path /usr/local/nginx/proxy_temp;
fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
fastcgi_intercept_errors on;
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_comp_level 5;
gzip_http_version 1.1;
gzip_types text/plain application/x-javascript text/css text/htm
application/xml;
server
{
listen 80;
server_name localhost;
index index.html index.htm index.php;
root /usr/local/nginx/html;
location ~ \.php$
{
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
}
}
}
/usr/local/nginx/sbin/nginx -t 检查nginx语法错误
/etc/init.d/nginx start //启动nginx服务
ps aux |grep nginx 查看nginx进程
netstat -lntp 查看nginx端口 //80端口
echo "hello world">/usr/local/nginx/html/1.html\\curl测试
curl localhost/1
systemctl status nginx\\ 查看nginx状态
4.JDK的安装
通过浏览器http://r.aminglinux.com下载,将JDK的包上传到LINUX机器上。上传完后,把它放到/usr/local/src目录下,然后解压:
cd /usr/local/src
tar zxvf jdk-8u101-linux-x64.tar.gz
mv jdk1.8.0_101 /usr/local/jdk1.8
然后设置环境变量:
vim /etc/profile //在末尾输入以下内容
JAVA_HOME=/usr/local/jdk1.8/
JAVA_BIN=/usr/local/jdk1.8/bin
JRE_HOME=/usr/local/jdk1.8/jre
PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar
保存文件后,执行如下命令使其生效:
source /etc/profile
检测设置是否正确:
which java
如果结果为/usr/bin/java则说明这是rpm的JDK,而且执行java -version时会有openjdk字样。
5.安装Tomcat
cd /usr/local/src/
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.31/bin/apache-tomcat-8.5.31.tar.gz
tar zxvf apache-tomcat-8.5.31.tar.gz
mv apache-tomcat-8.5.31.tar.gz /usr/local/tomcat
因为是二进制包,所以免去了编译的过程,启动Tomcat,命令如下:
/usr/local/tomcat/bin/startup.sh
查看是否启动成功,命令如下:
ps aux |grep tomcat //看看是否有Java相关进程,也可以查看监听端口
netstat -lntp |grep java //正常会有三个端口8009,8005,和8080,其中8080为提供Web服务的端口,8005为管理端口,8009端口为第三方服务调用端口,比如httpd和Tomcat结合时会用到。
若想开机启动,则需要把启动命令放到/etc/rc.d/rc.local文件里,如下:
echo "usr/local/tomcat/bin/startup.sh" >> /etc/rc.d/rc.local
chmod a+x /etc/rc.d/rc.local //默认该文件没有x权限,所以需要加一下。
6.最后通过rsync把配置文件和安装包同步到其他机器上即可,因为机器不算多,所以我是直接把整个根目录给同步了,使用的是以下脚本:
#!/usr/bin/expect
set host [lindex $argv 0]
set passwd [lindex $argv 1]
spawn rsync -av / root@$host:/
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
interact
## 调用脚本
#!/bin/bash
passwd=$2
for ip in `cat $1`
do
./syncAll.expect $ip $passwd
done
7.在所有的web服务器上搭建discuz论坛、dedecms企业网站以及zrlog博客,这一步也是和搭建环境一样,先在一台机器上搭建好,然后再同步到其他机器上.
1.搭建discuz论坛,先给discuz配置一个虚拟主机站点,和配置默认虚拟主机差不多:
进入到vhost目录下,创建一个discuz.com.conf文件:
cd /usr/local/nginx/conf/vhost vim discuz.com.conf
添加以下内容:
server
{
listen 80;
server_name www.discuz.com;
index index.html index.htm index.php;
root /data/wwwroot/discuz.com;
location ~ \.php$
{
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/wwwroot/discuz.com$fastcgi_script_name;
}
}
创建站点目录:
mkdir -p /data/wwwroot/discuz.com/
进入discuz.com目录,创建一个php文件:
cd /data/wwwroot/discuz.com/ vim index.php
文件内容和测试方式都是配置以上配置默认虚拟主机的过程一样,这里就不再赘述了。
记得每配置一个虚拟主机站点都要重启nginx服务。
8.开始安装Discuz
1.下载Discuz的压缩包:
Discuz的压缩包可以在官网下载自己需要的版本:http://www.discuz.net/forum.php
我这里使用的是3.3的UTF8版本:
[root@localhost ~]# cd /usr/local/src/
[root@localhost /usr/local/src]# wget http://download.comsenz.com/DiscuzX/3.3/Discuz_X3.3_SC_UTF8.zip
解压:
[root@localhost /usr/local/src]# unzip Discuz_X3.3_SC_UTF8.zip
解压后会有以下几个目录:
[root@localhost /usr/local/src]# ls
Discuz_X3.3_SC_UTF8.zip readme upload utility
下载好并解压后,先将之前用于测试的默认页文件给删掉,然后将以上解压的upload目录下所有的文件拷贝到discuz.com站点目录下:
[root@localhost /usr/local/src]# rm -f /data/wwwroot/discuz.com/index.php
[root@localhost /usr/local/src]# ls /data/wwwroot/discuz.com/
[root@localhost /usr/local/src]# cp -r upload/* /data/wwwroot/discuz.com/
[root@localhost /usr/local/src]# ls !$
ls /data/wwwroot/discuz.com/
admin.php config data home.php misc.php search.php uc_client
api connect.php favicon.ico index.php plugin.php source uc_server
api.php cp.php forum.php install portal.php static userapp.php
archiver crossdomain.xml group.php member.php robots.txt template
ok之后到windows上配置hosts文件,windows的hosts文件默认在这个目录下:
C:\Windows\System32\drivers\etc
在hosts文件中加上这一句: 192.168.200.152 www.discuz.com (192.168.200.152 == zabbix + NFS服务器) 保存之后就可以在浏览器上直接进行访问 www.discuz.com 了,访问成功后会显示如下页面,点击同意进入下一步,然后就会进入目录、文件的权限检查界面,但是会发现这些目录或文件权限不足,所以都是不可写的状态,那么就只能自己写个脚本给这些目录赋予权限了,页面中显示的目录路径都是相对路径,所以这个脚本需要放在站点的根目录下:
[root@localhost ~]# cd /data/wwwroot/discuz.com/
[root@localhost /data/wwwroot/discuz.com]# vim fileList.txt # 先把路径都放在一个文本文件中
./config
./data
./data/cache
./data/avatar
./data/plugindata
./data/download
./data/addonmd5
./data/template
./data/threadcache
./data/attachment
./data/attachment/album
./data/attachment/forum
./data/attachment/group
./data/log
./uc_client/data/cache
./uc_server/data/
./uc_server/data/cache
./uc_server/data/avatar
./uc_server/data/backup
./uc_server/data/logs
./uc_server/data/tmp uc_server/data/view
[root@localhost /data/wwwroot/discuz.com]# vim filePermission.sh
#!bin/bash
# 写个简单的循环脚本就搞定了
for file in `cat ./fileList.txt`
do
chmod 777 $file
done
[root@localhost /data/wwwroot/discuz.com]# sh ./filePermission.sh
执行完脚本后刷新页面就会发现状态都变为可写了. 没问题后就点击页面下方的”下一步“:
1、选择“全新安装 Discuz! X (含 UCenter Server)”
如果你之前没有安装过Discuz就选择此项。
2、选择“仅安装 Discuz! X (手工指定已经安装的 UCenter Server )”
如果你之前安装过Discuz,现在只是升级的话,选择此项并保证之前的 UCenter 是 UCenter 1.6.0 版本,如果之前安装的 UCenter Server 没有进行升级操作的话,一般为 1.5.1 或 1.5.2 版本,你需要首先升级 Ucenter 到 1.6.0版本, 否则安装程序会提示错误,无法继续。因为我是没安装过的所以这里以全新安装 Discuz为例。 点击“下一步”,进入安装数据库的界面,如下图所示:
这里只需要输入你数据库root用户的密码,然后再设置一个admin密码就可以了,发送告警邮件的邮箱写不写都可以,剩下的会自动进行安装:
安装完成后点击访问即可,如果你不需要安装Discuz推荐的应用的话:
访问:
然后回到web服务器上修改discuz的配置文件。将dbhost,dbuser,dbpw,dbname中的参数改为和mycat一一对应。实现读写分离:
[root@localhost /data/wwwroot/discuz.com]$ vim /data/wwwroot/discuz.com/config/config_global.php
// ---------------------------- CONFIG DB ----------------------------- //
$_config['db']['1']['dbhost'] = '192.168.200.149:8066';
$_config['db']['1']['dbuser'] = 'discuz';
$_config['db']['1']['dbpw'] = '123456';
$_config['db']['1']['dbcharset'] = 'utf8';
$_config['db']['1']['pconnect'] = '0';
$_config['db']['1']['dbname'] = 'ultrax';
$_config['db']['1']['tablepre'] = 'pre_';
$_config['db']['slave'] = '';
$_config['db']['common']['slave_except_table'] = '';
## 修改完成后重启nginx
[root@localhost /data/wwwroot/discuz.com]$ service nginx restart
Restarting nginx (via systemctl):
然后登录discuz论坛的admin用户,能够成功登录代表没问题:
9.搭建zrlog博客系统:
1.配置tomcat的虚拟主机,Tomcat在server.xml文件中配置虚拟主机:
[root@localhost ~]$ vim /usr/local/tomcat/conf/server.xml
# 在文件中增加以下内容:
<Host name="www.zrlog.com" appBase=""
unpackWARs= "true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/data/wwwroot/zrlog.com/" debug="0" reloadable="true" crossContext="true"/>
</Host>
2.创建相应的站点目录:
mkdir /data/wwwroot/zrlog.com
3.下载zrlog,并解压到站点目录下:
[root@localhost ~]$ cd /usr/local/src/
[root@localhost /usr/local/src]$ wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war
[root@localhost /usr/local/src]$ unzip zrlog-1.7.1-baaecb9-release.war
[root@localhost /usr/local/src]$ unzip zrlog-1.7.1-baaecb9-release.war -d /data/wwwroot/zrlog.com
[root@localhost /usr/local/src]$ cd !$
cd /data/wwwroot/zrlog.com
[root@localhost /data/wwwroot/zrlog.com]$ ls
admin assets error favicon.ico include install META-INF WEB-INF
[root@localhost /data/wwwroot/zrlog.com]$
4.为了共享80端口还需要配置nginx反向代理tomcat,编辑主机配置文件:
[root@localhost ~]$ vim /usr/local/nginx/conf/vhost/zrlog.com.conf
## 文件内容如下
upstream zrlog_com
{
ip_hash;
server localhost:8080;
}
server
{
listen 80;
server_name www.zrlog.com;
location /
{
proxy_pass http://zrlog_com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
[root@localhost ~]$ service nginx restart # 重启nginx
5.重启tomcat服务:
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh