CentOS 6.9环境下配置Nginx,Python,Mysql,Java,Redis环境及问题记录

1 安装环境、安装需求、安装方式

1.1 安装环境

架构 X86-64
内存 8G
磁盘 200GB
发行版 Centos 6.9

1.2 安装需求

mysql   5.7.19  
nginx   1.12.2
redis   3.05    
python  2.7
java    1.7
tomcat  7.0.79

1.3 安装方式

软件安装使用编译安装的方式,安装目录:/usr/local/zcmserver,源码放置目录:/usr/local/zcmserver/src;

2 准备工作

在正式环境配置之前需要做一些准备工作。

2.1 关闭selinux

为何要关闭?概括起来就是配置selinux非常麻烦,投入回报率太低,所以一般运维都会直接给它关掉了事。

vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效

2.2 软件下载

下载nginx:
wget http://nginx.org/download/nginx-1.12.2.tar.gz

下载MySQL:
wget http://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.19.tar.gz

下载cmake(MySQL编译工具):
wget http://www.cmake.org/files/v3.9/cmake-3.9.6.tar.gz

下载pcre (支持nginx伪静态,rewrite模块需要 pcre 库):

wget http://nchc.dl.sourceforge.net/project/pcre/pcre/8.41/pcre-8.41.tar.gz

下载openssl(nginx扩展,ssl 功能需要):

wget http://www.openssl.org/source/openssl-1.1.0g.tar.gz

下载zlib(nginx扩展,gzip模块需要 zlib 库):

wget http://zlib.net/zlib-1.2.11.tar.gz

下载tcl(安装redis之前需要安装tcl,因为redis的make test是使用tcl编写的):

wget http://downloads.sourceforge.net/tcl/tcl8.6.7-src.tar.gz

下载redis:

wget http://download.redis.io/redis-stable.tar.gz

下载boost:

wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

下载python:

wget https://www.python.org/ftp/python/2.7.11/Python-2.7.14.tar.xz

下载mysql-python :

wget http://jaist.dl.sourceforge.net/project/mysql-python/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz

2.3 依赖安装

在正式进行编译安装之前,需要安装一些依赖软件

yum install -y apr* autoconf automake bison bzip2 bzip2* cloog-ppl compat* cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gtk+-devel gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng libpng* libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libX* libtiff libtiff* make mpfr ncurses* ntp openssl nasm nasm* openssl-devel patch pcre-devel perl php-common php-gd policycoreutils ppl telnet t1lib t1lib* wget zlib-devel

2.4 修改主机名(个人喜好)

hostname #查看主机名 localhost.localdomain即为默认的主机名。
su #用root用户登录,如果不是root用户,使用su命令切换为root用户
cd /etc/sysconfig #然后修改/etc/sysconfig下的network文件
vi network
NETWORKING=yes
HOSTNAME= localhost.localdomain #这里修改为想要改成的主机名
cd /etc #修改hosts文件
vi hosts 
127.0.0.1 localhost (想要修改的主机名)
reboot #重启

2.5 配置线上服务器IP(个人业务需要)

vim /etc/profile
export IP_FOR_CODING=XXXX
source /etc/profile

3 安装mysql

3.1 安装cmake

cd /usr/local/zcmserver/src
tar zxvf cmake-3.9.6.tar.gz
cd cmake-3.9.6
./configure
make
make install

3.2 安装mysql

准备工作

groupadd mysql #添加mysql组
useradd -g mysql mysql -s /bin/false #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统
mkdir -p /data/mysql #创建MySQL数据库存放目录

chown -R mysql:mysql /data/mysql #设置MySQL数据库存放目录权限
mkdir -p /usr/local/zcmserver/mysql #创建MySQL安装目录

源码编译和安装

cd /usr/local/zcmserver/src #进入软件包存放目录
tar zxvf mysql-5.7.19.tar.gz #解压

cd mysql-5.7.19 #进入目录
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/zcmserver/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc #配置
make #编译
make install #安装

cmake 时报错 CMake Error at cmake/boost.cmake:81 (MESSAGE)

原因

从MySQL 5.7.5开始Boost库是必需的

解决办法

下载安装Boost库,然后重新cmake并在后面的选项中加上选项 -DWITH_BOOST=/usr/local/zcmserver/boost

cd /usr/local/zcmserver/src
tar –zxvf boost_1_59_0.tar.gz
cp –a /usr/local/zcmserver/src/boost_1_59_0 /usr/local/zcmserver/boost

切回mysql源码目录

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/zcmserver/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc  -DWITH_BOOST=/usr/local/zcmserver/boost  #配置
make #编译
make install #安装

3.3相关配置

rm -rf /etc/my.cnf #删除系统默认的配置文件(如果默认没有就不用删除)
cd /usr/local/zcmserver/mysql/bin
./mysqld --initialize --user=mysql --datadir=/data/mysql --basedir=/usr/local/zcmserver/mysql --socket=/usr/local/zcmserver/mysql/mysql.sock
生成了一个临时密码  :XXXXX
ln -s /usr/local/zcmserver/mysql/my.cnf /etc/my.cnf #添加到/etc目录的软连接
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld #把Mysql加入系统启动
chmod 755 /etc/init.d/mysqld #增加执行权限
chkconfig mysqld on #加入开机启动
vi /etc/rc.d/init.d/mysqld #编辑
basedir=/usr/local/zcmserver/mysql #MySQL程序安装路径
datadir=/data/mysql #MySQl数据库存放目录
:wq! #保存退出
service mysqld start #启动
vi /etc/profile #把mysql服务加入系统环境变量:在最后添加下面这一行
export PATH=$PATH:/usr/local/zcmserver/mysql/bin
:wq! #保存退出
source /etc/profile #使配置立刻生效

下面这些行把myslq的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时可以不用指定mysql的库文件地址。

ln -s /usr/local/zcmserver/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/zcmserver/mysql/include/mysql /usr/include/mysql
ln -s /usr/local/zcmserver/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18
mkdir /var/lib/mysql #创建目录
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock #添加软链接

如果忘了 root原始密码的解决办法

mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
use mysql;
flush privileges;
alter user 'root'@'localhost' IDENTIFIED BY 'XXXXXXX'

修改默认的mysql端口(默认的3306是高危端口):

vi /etc/my.cnf,#将下面前面的注释解除,添加下面的信息。
basedir = /usr/local/zcmserver/mysql
datadir = /data/mysql
port = xxxx

修改字符编码,mysqld下面添加
character-set-server=utf8

如果数据库通过工具连接不上:

1.查看端口号是否开放
2.用户的权限是否是本地
3.数据库端口是否被绑定到了本地 (参考http://blog.csdn.net/Abaneo/article/details/72853513)
(最后发现阿里云有安全组策略,修改之)

4 安装nginx

4.1 安装pcre

cd /usr/local/zcmserver/src
mkdir /usr/local/zcmserver/pcre
tar zxvf pcre-8.41.tar.gz
cd pcre-8.41
./configure --prefix=/usr/local/zcmserver/pcre
make
make install

4.2 安装openssl

cd /usr/local/zcmserver/src
mkdir /usr/local/zcmserver/openssl
 tar zxvf openssl-1.1.0g.tar.gz
cd openssl-1.1.0g
./config --prefix=/usr/local/zcmserver/openssl
make
make install
vi /etc/profile
export PATH=$PATH:/usr/local/openssl/bin
:wq!
source /etc/profile

4.3 安装zlib

cd /usr/local/zcmserver/src
mkdir /usr/local/zlib
tar zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=/usr/local/zcmserver/zlib
make
make install

4.4 安装Nginx

groupadd www
useradd -g www www -s /bin/false
cd /usr/local/zcmserver/src
tar zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure --prefix=/usr/local/zcmserver/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=/usr/local/zcmserver/src/openssl-1.1.0g --with-zlib=/usr/local/zcmserver/src/zlib-1.2.11 --with-pcre=/usr/local/zcmserver/src/pcre-8.41
make
make install
/usr/local/zcmserver/nginx/sbin/nginx #启动Nginx

编译nginx的时候注意:–with-openssl=/usr/local/zcmserver/src/openssl-1.0.2e –with-zlib=/usr/local/zcmserver/src/zlib-1.2.8 –with-pcre=/usr/local/zcmserver/src/pcre-8.37指向的是源码包解压的路径,而不是安装的路径,否则会报错

连接配置文件

ln -s /usr/local/zcmserver/nginx/conf/nginx.conf /etc/nginx.conf

4.5 设置nginx开机启动

vi /etc/rc.d/init.d/nginx #编辑启动文件添加下面内容

#!/bin/sh

# chkconfig: - 85 15

# nginx - this script starts and stops the nginx daemon

# config: /usr/local/zcmserver/nginx/conf/nginx.conf

# pidfile: /usr/local/zcmserver/nginx/logs/nginx.pid

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/local/zcmserver/nginx/sbin/nginx"

prog=$(basename $nginx)

NGINX_CONF_FILE="/usr/local/zcmserver/nginx/conf/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {

# make required directories

user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`

if [ -z "`grep $user /etc/passwd`" ]; then

useradd -M -s /bin/nologin $user

fi

options=`$nginx -V 2>&1 | grep 'configure arguments:'`

for opt in $options; do

if [ `echo $opt | grep '.*-temp-path'` ]; then

value=`echo $opt | cut -d "=" -f 2`

if [ ! -d "$value" ]; then

# echo "creating" $value

mkdir -p $value && chown -R $user $value

fi

fi

done

}

start() {

[ -x $nginx ] || exit 5

[ -f $NGINX_CONF_FILE ] || exit 6

make_dirs

echo -n $"Starting $prog: "

daemon $nginx -c $NGINX_CONF_FILE

retval=$?

echo

[ $retval -eq 0 ] && touch $lockfile

return $retval

}

stop() {

echo -n $"Stopping $prog: "

killproc $prog -QUIT

retval=$?

echo

[ $retval -eq 0 ] && rm -f $lockfile

return $retval

}

restart() {

#configtest || return $?

stop

sleep 1

start

}

reload() {

#configtest || return $?

echo -n $"Reloading $prog: "

killproc $nginx -HUP

RETVAL=$?

echo

}

force_reload() {

restart

}

configtest() {

$nginx -t -c $NGINX_CONF_FILE

}

rh_status() {

status $prog

}

rh_status_q() {

rh_status >/dev/null 2>&1

}

case "$1" in

start)

rh_status_q && exit 0

$1

;;

stop)

rh_status_q || exit 0

$1

;;

restart|configtest)

$1

;;

reload)

rh_status_q || exit 7

$1

;;

force-reload)

force_reload

;;

status)

rh_status

;;

condrestart|try-restart)

rh_status_q || exit 0

;;

*)

echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

exit 2

esac
:wq! #保存退出
chmod 775 /etc/rc.d/init.d/nginx #赋予文件执行权限
chkconfig nginx on #设置开机启动
/etc/rc.d/init.d/nginx restart #重启

5 安装python2.7

5.1 编译安装python2.7

mkdir /usr/local/zcmserver/python
wget https://www.python.org/ftp/python/2.7.11/Python-2.7.14.tar.xz
xz -d Python-2.7.14.tar.xz
tar Python-2.7.14.tar
cd Python-2.7.14
./configure --prefix=/usr/local/zcmserver/python
make && make install

5.2 安装 setuptools + pip

这里需要注意,一定要使用 python2.7 来执行相关命令。

cd /usr/local/zcmserver/python/bin
# First get the setup script for Setuptools:

wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py

# Then install it for Python 2.7 :
./python2.7 ez_setup.py

# Nowinstall pip using the newly installed setuptools:
./easy_install-2.7 pip

./pip2.7 install virtualenv
./virtualenv smartsales

# Check the system Python interpreter version:
python --version
# This will show Python 2.6.6

# Activate the my27project sandbox andcheck the versionof the default Python interpreter in it:
source smartsales/bin/activate
python --version
# This will show Python 2.7.14
deactivate

使用这种安装方法来安装python2.7,可以不影响centos6.9原有的python2.6

5.3 安装mysql python

下载mysql-python

wget http://jaist.dl.sourceforge.net/project/mysql-python/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz
tar xvzf MySQL-python-1.2.3.tar.gz
cd MySQL-python-1.2.3
vi site.cfg
把 mysql_config = /usr/local/mysql/bin/mysql_config 这一行前的#去掉,并且把mysql_config的路径设置正确。
source cloudphone/bin/activate
python setup.py build
python setup.py install

5.4 安装WSGI容器

在这里nginx仅仅是充当一个反向代理服务器,使用python的Flask框架编写的网站程序将会以webservice的形式运行,webservice也有多种形式,例如FastCGI,WSGI等,这本次安装中我们使用WSGI的模式,使用的容器是gunicorn,同时这里使用supervisor来管理服务器进程。 所以最终网站的部署模式是:

nginx+gunicorn+flask+supervisor

安装gunicorn和supervisor

pip install gunicorn
pip install supervisor
echo_supervisord_conf > supervisor.conf  # 生成 supervisor 默认配置文件
vim supervisor.conf                      # 修改 supervisor 配置文件,添加 gunicorn 进程管理

在supervisor.conf的底部添加下面的内容:

[program:myapp]
command=/usr/local/zcmserver/python/bin/myapp/bin/gunicorn -w4 -b0.0.0.0:6000 manage:app          ; supervisor启动命令 w4表示启动4个进程
directory=/opt/myapp                                                                                ; 项目的文件夹路径
startsecs=0                                                                                        ; 启动时间
stopwaitsecs=0                                                                                      ; 终止等待时间
autostart=false                                                                                    ; 是否自动启动
autorestart=false                                                                                  ; 是否自动重启
stdout_logfile=/opt/myapp/log/gunicorn.log                                    ; log 日志
stderr_logfile=/opt/myapp/log/gunicorn.err                                ; 错误日志

supervisor的基本使用命令

supervisord -c supervisor.conf                            通过配置文件启动supervisor
supervisorctl -c supervisor.conf status                    察看supervisor的状态
supervisorctl -c supervisor.conf reload                    重新载入 配置文件
supervisorctl -c supervisor.conf start [all]|[appname]    启动指定/所有 supervisor管理的程序进程
supervisorctl -c supervisor.conf stop [all]|[appname]      关闭指定/所有 supervisor管理的程序进程

首先使用 supervsior 启动 gunicorn,运行命令 supervisord -c supervisor.conf 然后利用上面的supervisorctl命令管理容器进程。

6 安装git

yum install git-core

7 安装redis

7.1 安装Redis

cd /usr/local/zcmserver/src

tar -zxvf redis-stable.tar.gz #解压

mv redis-stable  /usr/local/zcmserver/redis #移动文件到安装目录

cd /usr/local/zcmserver/redis  #进入安装目录

make #编译

make install #安装

cd  /usr/local/bin #查看是否有下面文件,如果没有,拷贝下面文件到/usr/local/bin目录

cd /usr/local/zcmserver/redis

mkdir -p /usr/local/bin

cp -p redis-server /usr/local/bin

cp -p redis-benchmark /usr/local/bin

cp -p redis-cli /usr/local/bin

cp -p redis-check-dump /usr/local/bin

cp -p redis-check-aof /usr/local/bin

ln -s  /usr/local/zcmserver/redis/redis.conf  /etc/redis.conf  #添加配置文件软连接

redis 配置

vi /etc/redis.conf  #编辑
daemonize yes  #设置后台启动redis
bind 0.0.0.0
port 6542
pidfile /var/run/redis.pid
loglevel verbose
logfile "/usr/local/zcmserver/redis/var/redis.log"
dir /usr/local/zcmserver/redis/var
requirepass greatsmart

:wq! #保存退出
redis-server /etc/redis.conf  #启动redis服务

redis-cli shutdown  #关闭redis

vi /etc/sysctl.conf #编辑,在最后一行添加下面代码

vm.overcommit_memory = 1

:wq! #保存退出

sysctl -p #使设置立即生效

7.2 设置redis开机启动

vi /etc/init.d/redis #编辑,添加以下代码
#!/bin/sh
# chkconfig: 2345 10 90
# redis    Startup script for redis processes

redis_path="/usr/local/bin/redis-server"

redis_conf="/etc/redis.conf"

redis_pid="/var/run/redis.pid"

# Source function library.

. /etc/rc.d/init.d/functions

[ -x $redis_path ] || exit 0

RETVAL=0

prog="redis"

# Start daemons.

start() {

if [ -e $redis_pid -a ! -z $redis_pid ];then

echo $prog" already running...."

exit 1

fi

echo -n $"Starting $prog "

# Single instance for all caches

$redis_path $redis_conf

RETVAL=$?

[ $RETVAL -eq 0 ] && {

touch /var/lock/subsys/$prog

success $"$prog"

}

echo

return $RETVAL

}

# Stop daemons.

stop() {

echo -n $"Stopping $prog "

killproc -d 10 $redis_path

echo

[ $RETVAL = 0 ] && rm -f $redis_pid /var/lock/subsys/$prog

RETVAL=$?

return $RETVAL

}

# See how we were called.

case "$1" in

start)

start

;;

stop)

stop

;;

status)

status $prog

RETVAL=$?

;;

restart)

stop

start

;;

condrestart)

if test "x`pidof redis`" != x; then

stop

start

fi

;;

*)

echo $"Usage: $0 {start|stop|status|restart|condrestart}"

exit 1

esac

exit $RETVAL
:wq! #保存退出

chmod 755 /etc/init.d/redis  #添加脚本执行权限

chkconfig --add redis  #添加开启启动

7.3 设置redis配置文件参数

mkdir -p /usr/local/zcmserver/redis/var  #创建redis数据库存放目录

vi /etc/redis.conf  #编辑

daemonize yes  #以后台daemon方式运行redis

pidfile "/var/run/redis.pid"  #redis以后台运行,默认pid文件路径/var/run/redis.pid

port 6543  #默认端口

bind 127.0.0.1 #默认绑定本机所有ip地址,为了安全,可以只监听内网ip

timeout 300 #客户端超时设置,单位为秒

loglevel verbose  #设置日志级别,支持四个级别:debug、notice、verbose、warning

logfile stdout  #日志记录方式,默认为标准输出,logs不写文件,输出到空设备/deb/null

logfile "/usr/local/zcmserver/redis/var/redis.log"  #可以指定日志文件路径

databases 16  #开启数据库的数量

save 900 1

save 300 10

save 60 10000


#创建本地数据库快照,格式:save * *

#900秒内,执行1次写操作

#300秒内,执行10次写操作

#60秒内,执行10000次写操作

rdbcompression yes #启用数据库lzf压缩,也可以设置为no

dbfilename dump.rdb  #本地快照数据库名称

dir "/usr/local/zcmserver/redis/var/"   #本地快照数据库存放目录

requirepass doodod123  #设置redis数据库连接密码

maxclients 10000 #同一时间最大客户端连接数,0为无限制

maxmemory 1024MB #设定redis最大使用内存,值要小于物理内存,必须设置

appendonly yes  #开启日志记录,相当于MySQL的binlog

appendfilename "appendonly.aof"   #日志文件名,注意:不是目录路径

appendfsync everysec #每秒执行同步,还有两个参数always、no一般设置为everysec,相当于MySQL事物日志的写方式

:wq! #保存退出

8.配置jdk环境及tomcat

配置JDK环境

scp java 安装包 到 /usr/java
scp jdk-7u80-linux-x64.tar.gz root@xxxxx:/usr/local/java
tar zxvf jdk-7u80-linux-x64.tar.gz

修改配置文件

vim /etc/profile

export JAVA_HOME=/usr/local/java/jdk1.7.0_80
export JAVA_BIN=/usr/local/java/jdk1.7.0_80/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
:wq
source /etc/profile

配置tomcat

scp tomcat 压缩包到 /usr/local/zcmserver/src
scp apache-tomcat-7.0.79.tar.gz root@xxxxx:/usr/local/zcmserver/src
tar zxvf apache-tomcat-7.0.79.tar.gz
mv apache-tomcat-7.0.79 /usr/local/zcmserver/tomcat

修改server xml

按需求配置

修改iptables

vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8100 -j ACCEPT

9 安装screen

yum install screen

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值