Linux 安装Jdk、mysql、apache、php、tomcat、nginx

Jdk

  安装分三步:第一步,上传跟 linux 位数相同的 jdk tar 包,解压;第二步:解压 tar 包,配置环境变量,且 source 一下 /etc/profile;第三步:检查版本

  第一步,咱就不废话:看看解压后,咱们可以重名下,数字太长不好看呀

# mv jdk1.8.0_191/ jdk1.8

jdk的bin目录路径:

  # pwd
/opt/jdk1.8/bin

   

  我们的环境变量配置到 jdk 的 /bin 目录就ok了

  vi /etc/profile  其实,这里,只需要引入 JAVA_HOME,jre是 jmeter 要用的,不用就别加也成

到最后面追加

#jdk1.8
JAVA_HOME=/opt/jdk1.8
JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

   这里要注意几点:

  • 等号别手贱加空格,shell 语法等号左右加空格就不能识别为变量了,出问题眼睛盯瞎了都盯不出来
  • JAVA_HOME 后的路径,别加 /bin ,因为后面的 export 才是真正将其引为全局变量的操作,前面加了。后面会找 bin 下面的 bin ,找得到就有鬼了。之前手贱自己加进去了,排查了十好几分钟
  • 配置好之后,别忘了 source 一下 /etc/profile 使它生效

最后:检查一下版本:

# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

如果想要换 jdk ,把 JAVA_HOME 注释掉,新起一行,换下新的 jdk 路径就好了

完美,叉会儿腰……

Mysql 

1、检查安装:
因为mysql数据库在Linux上实在是太流行了,所以目前下载的主流Linux系统版本基本上都集成了mysql数据库在里面,我们可以通过如下命令来查看我们的操作系统上是否已经安装了mysql数据库
[root@lml ~]# rpm -qa | grep mysql   // 这个命令就会查看该操作系统上是否已经安装了mysql数据库

有的话,我们就通过 rpm -e 命令 或者 rpm -e –nodeps 命令来卸载掉

 
[root@lml ~]# rpm -e mysql // 普通删除模式
[root@lml ~]# rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
在删除完以后我们可以通过 rpm -qa | grep mysql 命令来查看mysql是否已经卸载成功!!
 
2、通过yum来进行mysql的安装:
 
输入 下面的命令来查看yum上提供的mysql数据库可下载的版本:
 
[root@lml ~]# yum list | grep mysql
就可以得到yum服务器上mysql数据库的可下载版本信息:
 
 
使用:
yum install -y mysql-server mysql mysql-devel 
将mysql mysql-server mysql-devel都安装好(注意:安装mysql时我们并不是安装了mysql客户端就相当于安装好了mysql数据库了,我们还需要安装mysql-server服务端才行)
 
yum install -y mysql-server mysql mysql-devel

此时我们可以通过如下命令,查看刚安装好的mysql-server的版本

rpm -qi mysql-server

  

这时我们会看到第一次启动mysql服务器以后会提示非常多的信息,目的就是对mysql数据库进行初始化操作,当我们再次重新启动mysql服务时,就不会提示这么多信息了,如:
# service mysqld restart
停止 mysqld:                                             [确定]
正在启动 mysqld:                                          [确定]
我们在使用mysql数据库时,都得首先启动mysqld服务,我们可以 通过  chkconfig –list | grep mysqld 命令来查看mysql服务是不是开机自动启动,如:
# chkconfig --list | grep mysqld
mysqld             0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭

  

我们发现mysqld服务并没有开机自动启动,我们当然可以通过 chkconfig mysqld on 命令来将其设置成开机启动,这样就不用每次都去手动启动了
# chkconfig mysqld on
# chkconfig --list | grep mysql
mysqld             0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
 mysql数据库安装完以后只会有一个root管理员账号,但是此时的root账号还并没有为其设置密码,在第一次启动mysql服务时,会进行数据库的一些初始化工作,在输出的一大串信息中,我们看到有这样一行信息 :
 /usr/bin/mysqladmin -u root password 'new-password'  // 为root账号设置密码

所以我们可以通过 该命令来给我们的root账号设置密码(注意:这个root账号是mysql的root账号,非Linux的root账号)

# mysqladmin -u root password '123456'  // 通过该命令给root账号设置密码为 123456

  

创建新用户:

CREATE USER 'root'@'localhost' IDENTIFIED BY '123456';

登陆进入mysql:
mysql -u root -p 
 
新用户授权并刷新:(解决远程连接报 1130 的错误)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;

退出:

quit

简单的命令:

# service mysqld start    ##启动apache
# service mysqld stop    ##关闭 apache
# service mysqld restart    ## 重启 apache
# chkconfig mysqld on    ## 将 apache 设为开机启动
# ps -ef|grep mysqld    ## 查看 apache 是否启动

 

Apache

  一、安装

  yum 安装 apache,遇见提示,输入 'y'

# yum install httpd

  启动apache,出现如下提示:

# service httpd restart
Stopping httpd: [  OK  ]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.18.46.17 for ServerName

  

  解决方案:取消注释,重新启动

vi /etc/httpd/conf/httpd.conf
ServerName www.example.com:80  (将这一行的注释取消)

   结果:

# service httpd restart
Stopping httpd: [  OK  ]
Starting httpd: [  OK  ]

   简单的命令:

# service httpd start    ##启动apache
# service httpd stop    ##关闭 apache
# service httpd restart    ## 重启 apache
# chkconfig httpd on    ## 将 apache 设为开机启动
# ps -ef|grep httpd    ## 查看 apache 是否启动

  进入我们的 ip:port (未修改配置的话,默认 80 端口)

  

  二、工作模式转换

  apache 有三种工作模式,分别为:prefok  event  worker,yum 安装的默认工作模式为:prefok。

  查看工作模式的命令:

#  httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

  

  转换工作模式的方式:修改配置文件的 httpd 文件命名(一般来讲,这几个文件是在 /etc/httpd 里面)

# cd /usr/sbin/
# ll -rwxr-xr-x 1 root root 367136 Jun 19 2018 httpd -rwxr-xr-x 1 root root 379688 Jun 19 2018 httpd.event -rwxr-xr-x 1 root root 379688 Jun 19 2018 httpd.worker

   要转换成 worker 模式:

mv httpd httpd.prefork
mv httpd.worker httpd

  重启 service httpd restart,重启apache可能会报错,如下图:

   解决方案:安装php-zts

yum -y install php-zts

  ok :

# service httpd restart
Stopping httpd: [  OK  ]
Starting httpd: [  OK  ]

  三、配置监控

   主要是改配置文件内的 service-status,解除注释,并将 Allow from 改成 all,重启

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from all
</Location>

<Location /server-info>
    SetHandler server-info
    Order deny,allow
    Deny from all
    Allow from all
</Location>

ExtendedStatus On  ## 这一行是可以展开更多的监控信息

   配置的监控信息如下:

PHP

   yum 安装 php 

  1、安装 php 依赖

yum install gcc libxml2-devel openssl-devel curl-devel -y

  2、依旧是安装依赖(遇见提示,按 'y')

yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath mhash libmcrypt libmcrypt-devel php-fpm php-redis php-solr

  3、安装 php (安装依赖与安装 php 之间无先后顺序)

yum install php

  4、对 php 增加可执行权限

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

  5、开启 php

# service php-fpm start
Starting php-fpm: [  OK  ]

  6、验证 php 是否ok,在 apache 的 工程路径: /var/www/html 下 ,新建一个 info.php

<?php
    phpinfo()
?>

  7、将 apache 重启,在浏览器内输入:ip/info.php (ip指的是 apache 的ip和端口,我这里默认是80就省略)

 

  出现 php 的具体信息,就代表 php 安装完成,并且成功和 apache 建立了关联。

 

Tomcat

  tomcat 是基于 java 的,所以,必须安装好 java ,并且配置好环境变量,这里我们不赘述,看一下 java 版本如何:

  tomcat 我们这里选取最新版本进行安装,因为配置监控信息,tomcat 8-9 的监控配置是不一样的,其中 tomcat 7 配置监控最简单,只需要根据提示即可,不需要另外的其他操作

  一、安装

  1、在官网上下好 tar 包,上传到服务期内,解压即可。

  2、配置好 tomcat 的配置文件,主要是更改3个端口,这三个端口如果启动多个 tomcat 可能会出现冲突:8080,8009,8005

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

<Server port="8005" shutdown="SHUTDOWN">

 我们既然如果只是启动其中一个,其实就没有必要去修改端口咯,这是只是贴出来如果部署分布式,需要修改的端口位置。

  3、启动 tomcat ,我们可以将其作为 一个 service 去启动,这样就不用每次都到目录下启动,这里偷个懒百度实践下。

  原理:我们的 service [服务名] [选项] ,其实在启动服务的时候是执行 /etc/init.d/ 下的脚本文件 ,就像我们执行 service httpd restart ,那么就是执行 /etc/init.d/ 下的 httpd 脚本文件

  问题点找到了,那么我们怎么将 tomcat 的启动过程,编写成类似 httpd 这样的脚本呢?我们可以依照 httpd 或者其他的脚本仿写一个:

  这里要注意几点:

  • 引入 java 环境变量先,且更改 tomcat9 的路径
  • 编辑好了之后,把这个文件服务执行权限:chmod +x tomcat9
  • 这里只引入了几个功能:restart 、start、stop,其他的功能还未加进去
#!/bin/bash  

# description: Tomcat9 Start Stop Restart  

# processname: tomcat9  

# chkconfig: 234 20 80  

JAVA_HOME=/opt/jdk1.8

export JAVA_HOME  

PATH=$JAVA_HOME/bin:$PATH  

export PATH  

CATALINA_HOME=/opt/tomcat9

case $1 in  

start)  

sh $CATALINA_HOME/bin/startup.sh  

;;   

stop)     

sh $CATALINA_HOME/bin/shutdown.sh  

;;   

restart)  

sh $CATALINA_HOME/bin/shutdown.sh  

sh $CATALINA_HOME/bin/startup.sh  

;;   

esac      

exit 0

  最后我们看看效果:

# service tomcat9 start
Using CATALINA_BASE:   /opt/tomcat9
Using CATALINA_HOME:   /opt/tomcat9
Using CATALINA_TMPDIR: /opt/tomcat9/temp
Using JRE_HOME:        /opt/jdk1.8
Using CLASSPATH:       /opt/tomcat9/bin/bootstrap.jar:/opt/tomcat9/bin/tomcat-juli.jar
Tomcat started.

 

完美。叉会儿腰……  好像偏题了,接下来干点儿啥呢?配置个监听吧,先把其改成 nio 的工作模式,再启动个 sever-status监听

  二、修改工作模式并且启动监听

  问题来了,在哪修改工作模式,模式一般都是在配置文件内找:去 tomcat 路径下的 conf 内找找看:vi /opt/tomcat9/conf/server.xml

  这里,咱们先不配置工作模式,看看默认的是啥,如果默认就是 nio 就不配置了咯,nio 是异步阻塞,某种程度上可以增进性能; bio 是同步阻塞的模式,一个线程只能处理一个请求。

那么,先配置监听吧,过程就不贴了,直接进入要更改的项:

  1、vi /opt/tomcat9/conf/tomcat-users.xml  

  这里要注意,这是配置 manager 权限,不要把这两行粘贴到最后去了,要粘贴在 </tomcat-users> 之上 ,这是 xml 的格式,贴到外面了肯定就不生效

<role rolename="manager-gui"/>
<user username="tomcat9" password="123456" roles="manager-gui"/>

  2、vi /opt/tomcat9/webapps/manager/META-INF/context.xml  ,把 Contest 的内容全部注释,如下所示

<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127.d+.d+.d+|::1|0:0:0:0:0:0:0:1" />
  <Manager sessionAttributeValueClassNameFilter="java.lang.(?:Boolean|Integer|Long|Number|String)|org.apache.catalina.filters.CsrfPreventionFilter$LruCache(?:$1)?|java.util.(?:Linked)?HashMap"/>
-->

  3、重启 tomcat ,看效果,不难发现,这里就是 nio 的模式,无需修改。

  自从 tomcat 8 以来,默认的就是 nio 的模式,这里我们就不需要修改了,那 tomcat 7 就需要修改工作模式

  vi /opt/tomcat9/conf/server.xml

<Connector port="8082"protocol="org.apache.coyote.http11.Http11NioProtocol"
               connectionTimeout="20000"
               redirectPort="8443" />

 

 Nginx

   编译安装 Nginx ,并且配置监听。为啥要编译呢?因为要启动监听就必须编译安装

一、安装依赖

使用源码编译安装,包括具体的编译参数信息。

正式开始前,编译环境gcc g++ 开发库之类的需要提前装好。

安装make:

yum -y install gcc automake autoconf libtool make

安装g++:

yum install gcc gcc-c++

一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩。

1.选定源码目录

可以是任何目录,本文选定的是/usr/local/src

cd /usr/local/src

2.安装PCRE库

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz 下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:

复制代码
cd /usr/local/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz

tar -zxvf pcre-8.39.tar.gz

cd pcre-8.39

./configure

make && make install
复制代码

3.安装zlib库

http://zlib.net/zlib-1.2.11.tar.gz 下载最新的 zlib 源码包,使用下面命令下载编译和安装 zlib包:

复制代码
cd /usr/local/src

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

tar -zxvf zlib-1.2.11.tar.gz

cd zlib-1.2.11

./configure

make && make install
复制代码

4.安装ssl(某些vps默认没装ssl)

复制代码
cd /usr/local/src

wget https://www.openssl.org/source/openssl-1.1.0b.tar.gz

tar -zxvf openssl-1.1.0b.tar.gz
cd openssl-1.1.0b
./config

make && make install
复制代码

 

二、安装Nginx

  把 Nginx 安装到 /usr/local/nginx 目录下的详细步骤:

复制代码
cd /usr/local/src
 
wget http://nginx.org/download/nginx-1.10.2.tar.gz 

tar -zxvf nginx-1.10.2.tar.gz 

cd nginx-1.10.2
复制代码

1、配置Nginx的安装参数

./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.39 --with-zlib=/usr/local/src/zlib-1.2.11 --with-openssl=/usr/local/src/openssl-1.1.0b  --prefix=/usr/local/nginx --with-http_stub_status_module

2、编译安装

make && make install

3、启动Nginx

/usr/local/nginx/nginx 

网页访问查看是否正常启动:因为 80 端口被 apache 占用,所以这里我们用 81 端口

4 、同样的,我们可以将 nginx 作为一个 service 来启动:

  

编写nginx文件,放入/etc/init.d/

nginx文件内容如下,黄色部分为自己实际nginx安装的路径。

#!/bin/bash

# nginx Startup script for the Nginx HTTP Server

# it is v.0.0.2 version.

# chkconfig: - 85 15

# description: Nginx is a high-performance web and proxy server.

# It has a lot of features, but it's not for everyone.

# processname: nginx

# pidfile: /var/run/nginx.pid

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

nginxd=/usr/local/nginx/sbin/nginx

nginx_config=/usr/local/nginx/conf/nginx.conf

nginx_pid=/var/run/nginx.pid

RETVAL=0

prog="nginx"

# Source function library.

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

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

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

[ -x $nginxd ] || exit 0

# Start nginx daemons functions.

start() {

if [ -e $nginx_pid ];then

   echo "nginx already running...."

   exit 1

fi

   echo -n $"Starting $prog: "

   daemon $nginxd -c ${nginx_config}

   RETVAL=$?

   echo

   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx

   return $RETVAL

}

# Stop nginx daemons functions.

stop() {

        echo -n $"Stopping $prog: "

        killproc $nginxd

        RETVAL=$?

        echo

        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid

}

# reload nginx service functions.

reload() {

    echo -n $"Reloading $prog: "

    #kill -HUP `cat ${nginx_pid}`

    killproc $nginxd -HUP

    RETVAL=$?

    echo

}

# See how we were called.

case "$1" in

start)

        start

        ;;

stop)

        stop

        ;;

reload)

        reload

        ;;

restart)

        stop

        start

        ;;

status)

        status $prog

        RETVAL=$?

        ;;

*)

        echo $"Usage: $prog {start|stop|restart|reload|status|help}"

        exit 1

esac

exit $RETVAL

第二步:

执行

chkconfig --add /etc/init.d/nginx
chmod 755 /etc/init.d/nginx
chkconfig --add nginx

如果想随系统启动就执行

/sbin/chkconfig --level 345 nginx on

第三步

nginx启动、停止、无间断服务重启,可选  start | stop | restart | reload | status |  help

service nginx start

service nginx stop

service nginx reload

三、配置Nginx的监控

配置文件路径:

vi /usr/local/nginx/nginx.conf

添加如下代码:

#设定Nginx状态访问地址

复制代码
location /NginxStatus {

    stub_status on;

    access_log on;

    auth_basic "NginxStatus";

    #auth_basic_user_file conf/htpasswd;

}
复制代码

配置完成重启Nginx,命令:

/usr/local/nginx/nginx  -s reload

6、状态查看

配置完成后在浏览器中输入http://ip:监听端口/NginxStatus查看,显示信息如下:

7、 参数说明

  active connections – 活跃的连接数量

  server accepts handled requests — 总共处理了107520387个连接 , 成功创建107497834次握手, 总共处理了639121056个请求

  每个连接有三种状态waiting、reading、writing

  reading —读取客户端的Header信息数.这个操作只是读取头部信息,读取完后马上进入writing状态,因此时间很短。

  writing — 响应数据到客户端的Header信息数.这个操作不仅读取头部,还要等待服务响应,因此时间比较长。

  waiting — 开启keep-alive后等候下一次请求指令的驻留连接.

  正常情况下waiting数量是比较多的,并不能说明性能差。反而如果reading+writing数量比较多说明服务并发有问题。


补充:
  查看Nginx并发进程数:ps -ef | grep nginx | wc -l
  查看Web服务器TCP连接状态:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

四、nginx与php关联

  nginx 与 php 怎么关联起来呢?我们先去 nginx 的工程路径下:/usr/local/nginx/html 新建一个同样的 info.php

  然后, vi /usr/local/nginx/nginx.conf,将以下几行注释去掉,并且将 /scripts 改成 $document_root ;root 后面跟的是工程路径 ,默认是 html 下,如果要部署项目,可以自己定义去转发到相对应的路径下

    location ~ .php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

   最后,重启 nginx ,就可以看到

  ip:port/info.php。如果一直是 nofound ,那么就是 上面一步没配好

原文地址:https://www.cnblogs.com/xiaowenshu/p/10253788.html