Linux\CentOS系统下的服务器搭建,下载编译环境,安装vsFtpd、nginx、MySQL、JDK、Tomcat、PHP

按照以下步骤操作就可以搭建一个可运行java、php文件的Linux系统


一、下载编译环境

mv /etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup

 mv /etc/yum.repos.d/CentOS-fasttrack.repo/etc/yum.repos.d/CentOS-fasttrack.repo.backup
 2、进入目录
 cd /etc/yum.repos.d/
 3、设置更新地址
 curl -O http://mirrors.163.com/.help/CentOS6-Base-163.repo
 4、安装前设置
 yum clean all
 yum makecache
 安装gcc时出现这个错误时:yum[Errno 256] No more mirrors to try
 5、开始安装
 yum install bind-utils
 yum install wget
 yum install gcc

 bind-utils:DNS是一种将域名解析为IP地址的服务。如解析百度的地址得到111.13.100.92
             bind是linux系统下的一个DNS服务程序。bind-utils是bind软件提供的一组DNS工具包。里面有一些DNS工具包
 wget:Linux系统中的wget是一个下载文件的工具,wget [参数] [URL地址]:用于从网络上下载资源,没有指定目录,下载资源会默认为当前的目录
 gcc:编程所需

二、安装vsFtpd
1、安装vsFtpd
 rpm -qa | grep ftpd   查看当前系统是否安装ftp服务
 yum  search  ftpd     查询远端yum源中是否有ftpd‘
 yum  install  vsftpd  安装vsftpd
 rpm -ql vsftpd  查看vsFtpd安装情况
 修改vsftpd服务启动
 chkconfig  --list  vsftpd   
 cd /etc/init.d
 chkconfig  --add  vsftpd
 chkconfig  --level 3   vsftpd   on    开启级别3上启动

 启动vsftpd服务:
 netstat -na|more    查看是否开启默认的FTP端口21
 /etc/init.d/vsftpd   start   
 netstat -na|more

 修改iptables防火墙配置
 测试是否为防火墙
 /etc/init.d/iptables stop   暂时关闭防火墙
 cd  /etc/sysconfig/
 vi   iptables
 在:
 -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 21 -j ACCEPT
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT

 重启防火墙服务
 /etc/init.d/iptables restart

 出现如下错误提示:
 [右] 500 OOPS: cannot change directory:/home/abc
 解决方法:
 sestatus -b | grep ftp
 永久开启该规则,这里需要等待一会
 setsebool -P ftp_home_dir on


 成功后,就可以使用客户端工具(FlashFXP)上传文件


三、安装nginx
1、解压
 tar zxvf nginx-1.9.4.tar.gz
 cd nginx-1.9.4

 从原码方式进行安装

 2、查看帮助信息
 ./configure --help|more

 3、检查安装环境
 ./configure --prefix=/opt/nginx
 会出现错误,缺少PCRE库
 yum install pcre-devel

 出现错误提示./configure:error:the HTTP gzip module requires the zlib library
 yum install zlib-devel
 说明:每次错误后需要重新执行configure(包含配置参数)
 完成后执行:configure

 make

 以root身份执行
 /bin/su -
 cd /home/zhuwentao/nginx-1.9.4
 make install

 启动nginx(必须要以root身份启动)
 /opt/nginx/sbin/nginx

 查看是否启动成功
 ps -ef|grep nginx

 修改iptables的设置,开启80端口
 vi /etc/sysconfig/iptables

 在 -A INPUT m state --state NEW -m tcp -p tcp.....
 里面加上80端口

 重启防火墙
 /etc/init.d/iptables restart

 在浏览器中输入192.168.56.1
 如果能出现Welcome to nginx!界面则代表成功了,Nginx安装完成
 默认情况下:
 conf —— 配置文件夹
 html —— 默认服务器的Webroot
 sbin —— Nginx核心
 logs —— 日志文件夹

 做一个网页来测试
 vi test.html
 如果出现404错误

 也许是html的路径问题,此html不是安装目录下的html文件夹
 cd /opt/nginx/html
 要在该路径下新建html文件,才不报404错误

 开机自动启动Nginx
 vi /etc/rc.local中加入一行
 /opt/nginx/sbin/nginx



四、安装MySQL
 tar zxvf  mysql-5.6.26.tar.gz
 cd mysql-5.6.26

 安装Cmake
 yum install cmake

 cmake \
 -DCMAKE_INSTALL_PREFIX=/opt/mysql5.6 \
 -DDEFAULT_CHARSET=utf8 \
 -DDEFAULT_COLLATION=utf8_general_ci \
 -DMYSQL_DATADIR=/opt/mysql5.6/data \
 -DMYSQL_UNIX_ADDR=/opt/mysql5.6/mysql.sock \

 每次重新cmake前需要删除CMakeCache.txt文件

 安装ncurses-devel
 yum install ncurses-devel

 安装g++
 yum install  gcc-c++

 安装bison
 yum install bison

 编译MySQL
 make

 安装MySQL
 cd /home/abc/mysql-5.6.26
 make install   #root用户执行

 初始化数据库引擎
 cd /opt/mysql5.6
 scripts/mysql_install_db --basedir=/opt/mysql5.6 --datadir=/opt/mysql5.6/data

 提示 /usr/bin/perl: bad interpreter   需要Perl

 yum install perl

 系统需要mysql用户(如果未创建),则:
 /usr/sbin/useradd  mysql

 chown mysql:mysql -R /opt/mysql5.6

 编辑mysql配置文件
 vi my.cnf
 basedir = /opt/mysql5.6
 datadir = /opt/mysql5.6/data
 socket = /opt/mysql5.6/mysql.sock


 启动mysql服务
 support-files/mysql.server start

 bin/mysql -u root #测试

 mysql> show variables like '%char%';
 检查是否是utf8

 加入系统服务
 cp  support-files/mysql.server  /etc/init.d/mysql
 cd   /etc/init.d
 chkconfig --list mysql
 chkconfig --add mysql
 chkconfig --list mysql

五、安装JDK和Tomcat
 普通用户
 tar zvxf jdk-8u60-linux-i586.tar.gz
 cd jdk1.8.0_60

 root用户
 mkdir /opt/java
 mv /home/abc/jdk1.8.0_60   /opt/java/.

 普通用户
 tar zvxf apache-tomcat-8.0.26.tar.gz

 root用户
 mv /home/abc/apache-tomcat-8.0.26   /opt/.

 cd /opt/apache-tomcat-8.0.26/bin
 vi setclasspath.sh
 增加 
 export JAVA_HOME=/opt/java/jdk1.8.0_60

 启动测试Tomcat
 ./startup.sh  

 关闭防火墙做测试
 /etc/init.d/iptables stop

 用浏览器浏览http://192.168.56.1:8080

 在/opt下建立文件夹 web/jsp
 mkdir -p /opt/web/jsp
 mkdir -p /opt/web/jsp/WEB-INF

 cd /opt/apache-tomcat-8.0.26/conf/
 修改apache-tomcat-8.0.26的server.xml增加虚拟路径配置
  <Context docBase="/opt/web/jsp" path="/test" debug="0"  reloadable="false" />

 在/opt/web/jsp/下新建index.jsp文件内容为
 <%=new java.util.Date()%>

 重启Tomcat服务器
 ./shutdown.sh
 ./startup.sh

 访问 http://192.168.56.1:8080/test 测试

 修改/opt/nginx/conf/nginx.conf

 在http段中加入负载均衡设置
     upstream web_app {
         server 127.0.0.1:8080 weight=1 max_fails=2  fail_timeout=30s;
         #server 127.0.0.1:8081 weight=1 max_fails=2  fail_timeout=30s;
     }

 在加入服务器设置

     server{
         listen     81;
         server_name    localhost;
         index  index.jsp  index.html  index.htm;
         root  /opt/web/jsp;
         location / {
             proxy_next_upstream http_502 http_504 error timeout  invalid_header;
             proxy_set_header Host  $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
             proxy_pass http://web_app;
             expires      3d;
         }
         location ~^/(WEB-INF)/{
             deny all;
         }
     }

 重新启动nginx
 ps -ef|grep nginx
 kill -9  <nginx-pid>
 /opt/nginx/sbin/nginx

 编辑防火墙加入81端口
 vi /etc/sysconfig/iptables
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 81 -j ACCEPT


 在/etc/rc.local中加入
 /opt/apache-tomcat-8.0.26/bin/startup.sh

 遗留问题:负载均衡后的session处理,通过内存数据库服务器处理。
 其中一个:memcached
六、安装PHP
tar zvxf php-5.6.13.tar.gz
 cd php-5.6.13

 ./configure \
 --prefix=/opt/php5.6.13 \
 --with-config-file-path=/opt/php5.6.13 \
 --disable-ipv6 \
 --disable-debug \
 --disable-rpath \
 --enable-fpm \
 --with-mysql=/opt/mysql5.6 \
 --with-mysql-sock=/opt/mysql5.6/mysql.sock \
 --with-mysqli=/opt/mysql5.6/bin/mysql_config \
 --with-pdo-mysql=/opt/mysql5.6 \
 --with-gd \
 --enable-gd-native-ttf \
 --with-jpeg-dir \
 --with-png-dir \
 --with-zlib-dir \
 --with-freetype-dir \
 --enable-sysvmsg \
 --enable-sysvsem \
 --enable-sysvshm \
 --enable-shmop \


 错误提示
 configure: error: xml2-config not found. Please check your libxml2  installation.

 安装libxml2-devel
 yum install libxml2-devel

 错误提示
 configure: error: jpeglib.h not found.

 安装GD处理图形库
 yum install libjpeg libjpeg-devel libpng libpng-devel freetype  freetype-devel

 错误提示
 configure: error: Don't know how to define struct flock on this  system, set --enable-opcache=no
 编辑  vi  /etc/ld.so.conf
 加入
 /usr/local/lib
 /opt/mysql5.6/lib

 更新动态库(so)信息
 ldconfig


 make -j9
 用root用户
 cd /home/abc/php-5.6.13
 make install

 配置php应用服务器(fpm)
 cp /opt/php5.6.13/etc/php-fpm.conf.default  /opt/php5.6.13/etc/php-fpm.conf

 cp /home/zhuwentao/MyDirTest/php-5.6.13/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

 chmod +x /etc/init.d/php-fpm

 chkconfig --add php-fpm
 chkconfig --list php-fpm

 启动PHP应用服务器
 ps -ef|grep php
 /etc/init.d/php-fpm start
 ps -ef|grep php

七、Nginx与PHP的共同工作
 cd /opt/nginx/conf
 编辑nginx.conf修改php的配置
 修改,并去掉#号
 fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
 为
 fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

 配置Nginx启动服务脚本
 https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/
 vi /etc/init.d/nginx

 加入上述网址中的内容
 修改Nginx的相关路径

 nginx="/usr/sbin/nginx"   变为

 nginx="/opt/nginx/sbin/nginx"

 修改NGINX_CONF_FILE="/etc/nginx/nginx.conf"  变为
 NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"

 修改start()段中的“make_dirs”  注释掉

 chmod +x /etc/init.d/nginx

 测试启动脚本
 ps -ef|grep nginx
 /etc/init.d/nginx stop
 ps -ef|grep nginx
 /etc/init.d/nginx start

 cd /etc/init.d
 chkconfig --add nginx
 chkconfig --list nginx

 vi /etc/init.d/nginx
 修改     # chkconfig:   - 85 15
 变为     # chkconfig:   2345 85 15
 chkconfig --del nginx
 chkconfig --add nginx
 chkconfig --list nginx

 vi  /etc/rc.local
 注释启动脚本中的nginx的启动
 #/opt/nginx/sbin/nginx

 vi /opt/nginx/html/index.php

 <?php
 phpinfo();
 ?>



八、安装MySQL管理工具phpMyAdmin
下载phpMyAdmin-4.5.0.2-all-languages.zip并上传到服务器

 解压zip包需要unzip
 yum install unzip

 cd ~
 unzip phpMyAdmin-4.5.0.2-all-languages.zip

 mv phpMyAdmin-4.5.0.2-all-languages   /opt/nginx/html/phpMyAdmin

 浏览器中访问  
 http://192.168.56.1/phpMyAdmin  提示缺少mbstring库的支持

 需重新编译php,在原有的编译选项后面加上   --enable-mbstring \


 具体步骤 

 cd ~
 cd php-5.6.13

 make clean

 ./configure \
 --prefix=/opt/php5.6.13 \
 --with-config-file-path=/opt/php5.6.13 \
 --disable-ipv6 \
 --disable-debug \
 --disable-rpath \
 --enable-fpm \
 --with-mysql=/opt/mysql5.6 \
 --with-mysql-sock=/opt/mysql5.6/mysql.sock \
 --with-mysqli=/opt/mysql5.6/bin/mysql_config \
 --with-pdo-mysql=/opt/mysql5.6 \
 --with-gd \
 --enable-gd-native-ttf \
 --with-jpeg-dir \
 --with-png-dir \
 --with-zlib-dir \
 --with-freetype-dir \
 --enable-sysvmsg \
 --enable-sysvsem \
 --enable-sysvshm \
 --enable-shmop \
 --enable-mbstring \

 make -j9
 等待 ...

 make install
 等待 ...

 重启php应用服务器
 /etc/init.d/php-fpm restart

 再次访问http://192.168.56.1/phpMyAdmin

 使用root用户登录(默认没有密码)  出现提示:
       空密码登录被禁止 (参见 允许空密码)
 需要修改phpMyAdmin配置文件
 cd /opt/nginx/html/phpMyAdmin
 cp config.sample.inc.php   config.inc.php
 vi config.inc.php  修改相关配置


 修改
 $cfg['blowfish_secret'] = '';
 为
 $cfg['blowfish_secret'] = 'adfdsalksjj123a$';   任意字符串即可


 修改
 $cfg['Servers'][$i]['AllowNoPassword'] = false;
 为
 $cfg['Servers'][$i]['AllowNoPassword'] = true;