我是靠谱客的博主 神勇玉米,最近开发中收集的这篇文章主要介绍CentOS 7.4 64位 搭建Jdk8+Tomcat8+Nginx+Mysql+PHP环境,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、安装jdk1.8

1、安装前,一般会检查是否已经安装了jdk,检查方法:

rpm -qa |grep java

rpm -qa |grep jdk

rpm -qa |grep gcj

 如果有,可用下面的命令批量卸载所有带有Java的文件,下面这句命令的关键字是java,如果要换其他关键字,用其它关键字换掉java即可,如jdk。

rpm -qa | grep java | xargs rpm -e --nodeps

或者一个一个卸载(有几个卸载几个)

rpm -e --nodeps java-x.x.x-gcj-compat-x.x.x.x-xxjpp.xxx

rpm -e --nodeps java-x.x.x-openjdk-x.x.x.x-x.x.bxx.exx

  如果出现找不到openjdk source的话,还可以这样卸载

yum -y remove java java-x.x.x-gcj-compat-x.x.x.x-xxjpp.xxx

yum -y remove java java-x.x.x-openjdk-x.x.x.x-x.x.bxx.exx

2、通过yum安装

jdk的安装有很多方法,可以手 动下载解压安装,可以 用rpm安装,也可以用yum安装,我喜欢用yum,因为什么也不用操作,就像在windows点击安装文件安装一样,有简单的为什么要给自己找麻烦呢?

安装命令:

yum install java-1.8.0-openjdk.x86_64

 亦或安装的内容更全些可用

yum -y install java-1.8.0-openjdk*

验证是否安装成功

java -version

通过yum默认安装的路径为/usr/lib/jvm/java-版本号(如/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64)
 

二、安装Tomcat8

通过yum list tomcat*,可以看出,yum列表上的tomcat版本是7,所以要安装tomcat8,就不能用yum安装了,只能手动下载安装包了。 

1、从https://tomcat.apache.org/download-80.cgi下载tomcat8安装文件apache-tomcat-8.5.39.tar.gz,也可以在命令行直接用wget来获取,我是直接下载,然后通过wincp扔到服务器的/home文件夹下了。

2、进入下载目录,解压文件到之前创建的/opt/tomcat下。

tar -zxvf apache-tomcat-8.5.39.tar.gz -C /opt/tomcat --strip-components=1

3、设置tomcat8为系统服务.

在/usr/lib/systemd/system/目录或/etc/systemd/system目录下,创建tomcat.service文件,内容如下:

[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStart=/opt/tomcat/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID  
ExecStop=/bin/kill -s QUIT $MAINPID

#User=tomcat
#Group=tomcat

[Install]
WantedBy=multi-user.target

其中User和Group两行,如果为Tomcat设置专用用户,并将Tomcat的启动权限设置在该用户上,可启用这两行。在本次设置中,直接用root启动Tomcat,所以不需要这两行,因而加以注释。

4、启动Tomcat。

service tomcat start

 或

systemctl start tomcat

5、从浏览器访问http://IP:8080,出现Tomcat欢迎页即为成功。有 时候出来不了,就看看是不是端口问题。一是本机的防火墙,firewall或iptables;或者用的云服务器的话,里面的安全设置中也会有端口的设置。

6、补充:修改tomcat日志存放路径。原日志文件路径:/var/log/tomcat

1)编辑catalina.sh文件,将catalina.out文件路径修改为自定义路径:

if [ -z "$CATALINA_OUT" ] ; then
  CATALINA_OUT=/data/wwwlogs/tomcat/logs/catalina.out
fi

2)打开server.xml,将org.apache.catalina.valves.AccessLogValve日志路径改为自定义路径如下:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/wwwlogs/tomcat/logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

3)打tomcat安装目录下的conf目录,修改其中的logging.properties文件,将directory改为自己设定的目录。

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = /data/wwwlogs/tomcat/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8

2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = /data/wwwlogs/tomcat/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8

3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = /data/wwwlogs/tomcat/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8

4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = /data/wwwlogs/tomcat/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = UTF-8

4)使用CentOs7自带的logrotate分割catalina.out日志。在/etc/logrotate.d文件夹下,新建tomcat文件,内容如下:

/data/wwwlogs/tomcat/logs/catalina.out {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        dateext
        create 640 root root
        sharedscripts
        postrotate
                if [ -f /opt/tomcat/temp/tomcat.pid ]; then
                        kill -USR1 `cat /opt/tomcat/temp/tomcat.pid`
                fi
        endscript
}

三、安装nginx

1、安装Nginx源。

使用yum list nginx,可看到系统上的nginx版本是1.12.0的,我们想安装最新版的,就可以先执行下面这个命令。

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

安装该rpm后,我们就能在/etc/yum.repos.d/ 目录中看到一个名为nginx.repo 的文件。

Tomcat怎么更新库,谁能告诉我一下?

2、安装Nginx。

yum install -y nginx

3、检验安装,输入nginx -v,看到版本号,安装成功。

nginx -v

4、启动nginx。

service nginx start

浏览器中输入http://IP看到nginx的欢迎界面,表示启动成功。端口问题参照tomcat端口的解决方法。

5、补充:修改nginx日志存放路径。原日志文件路径:/var/log/nginx

1)修改/etc/nginx/nginx.conf文件中error_log内容和access_log内容。如nginx.conf中包含其它配置文件,如 “include /etc/nginx/conf.d/*.conf;”,在这些配置文件中的日志路径一并修改。 

user  nginx;
worker_processes  auto;

error_log  /data/wwwlogs/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /data/wwwlogs/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
    
}

2)用logrotate切割nginx日志,在/etc/logrotate.d下,已经存在了nginx文件,只需要将里面日志文件路径根据自己的路径修改一下即可。 

/data/wwwlogs/nginx/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        dateext
        create 640 root root
        sharedscripts
        postrotate
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        endscript
}

四、安装PHP。

1、更新RPM包。

用yum list php列出可以看到,php的版本是5.4的,如果要装5.6或7,需要先更新下面两个RPM。

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm 
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm 

2、安装PHP5.6。

yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64

3、安装php-fpm,并设置为开机启动。 

yum install php56w-fpm
systemctl start php-fpm.service
systemctl enable php-fpm.service

补充:php-fpm日志存放文件路径修改。原路径为:/var/log/php-fpm

1)修改/etc/php-fpm.d/www.conf,将相关日志路径修改自定义路径下。 

slowlog = /data/wwwlogs/php-fpm/www-slow.log
php_admin_value[error_log] = /data/wwwlogs/php-fpm/www-error.log

2)修改 /etc/logrotate.d下php-fpm文件,将日志路径改为自定义路径。

/data/wwwlogs/php-fpm/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
	/bin/kill -SIGUSR1 `cat /var/run/php-fpm/php-fpm.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

4、修改nginx配置文件。

按照以上方式安装的nginx,配置文件在/etc/nginx下nginx.conf,如下:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
    
}

各种优化配置,不是这篇文章的重点,在此不讨论。可看到此配置文件包含conf.d下的conf文件,按照上述安装方式安装后,conf.d目录下有一个默认的default.conf文件,如下:

server {
    listen       80;
    server_name  localhost; 

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;   

    location / {
	root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ .php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ .php$ {
        root   /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /.ht {
    #    deny  all;
    #}
}

注意原文件与上面文件的不同:

1)此处去掉了PHP代理方式代码块前的注释,并将root由原来的html改为了/usr/share/nginx/html,也就是自己nginx设定的根目录;同时将fastcgi_param  SCRIPT_FILENAME改为了 $document_root$fastcgi_script_name,改后如下:

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

5、测试php。

写一个php的测试文件,放到nginx的目录下,默认目录为:/usr/share/nginx/html,然后访问,如果能顺利解析,则为成功。

6、可能出现的问题。

在此次安装过程中,刚形始一直无法访问php,浏览器显示页面不存在,nginx日志报如下错误:

[error] 19810#19810: *18 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 123.234.432.321, server: localhost, request: "GET /abc.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "12.34.56.78"

从网上查,大概如下几类:

1)大部是是说将fastcgi_param  SCRIPT_FILENAME改为$document_root$fastcgi_script_name,改动后,错误依旧,但这个确实要改;

2)目录权限问题, 大概是说放置在nginx的html目录下的子目录或文件的访问权限设置过高吧,我的不是这个问题;

3)还是权限问题,各种说法,确实太多,无法详细说明。说明一点的是,我安装nginx和php-fpm均是用root用户,运行时,nginx用的用户是nginx,php-fpm用的是apache,网上安全建议里说要改成nobody的,因为我这里不重点讨论安全问题,所以在此略过,相关的配置方法可从网上百度后进行配置。我这里说明的是,我不是这个问题。

4)好容易找到一个不一样的说法的说是将root位置由location中提到server中,如图:

server {
    listen       80;
    server_name  localhost;

    access_log  /var/log/nginx/log/host.access.log  main;
    root   /usr/share/nginx/html;  #原本这个设置是在下面localtion里面的

    location / {
        index  index.php index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~* .php$ {
        fastcgi_index   index.php;
        fastcgi_pass    127.0.0.1:9000;
        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;  #网上很多人说这个地方有的没配置,但是我是按照php官方的来配置的,就有这个
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    }


}

我试了,依然没解决。

5)最后我发现,在default.conf文件中,对php解析那一段 ,也就是 location ~ .php$代码块中,原来定义的root是html,我不知道为什么它其它地方定义的都是 /usr/share/nginx/html,单单这里写成了html,而且还单独写了,把这里的html改成/usr/share/nginx/html后重启nginx,发现成功了。但这样一个问题,居然折磨了我整整两天。

五、安装mysql

关于mysql的安装,其实查看官方文档比较有用。

https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

1)下载mysql的rpm包,可以在https://dev.mysql.com/downloads/repo/yum/中直接下载相应的包,扔到服务器上,也可以点击下载时,直接复制下载链接,然后在服务器上用wget下载。版本选择自己合适的即可。

wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm

2)安装rpm,根据自己下载的版本,执行如下命令:

rpm -Uvh mysql80-community-release-el7-3.noarch.rpm

3)使用yum安半时,默认安装的会是最新版本的mysql,对应上述rpm包,默认会安装mysql8.0,如果我们想安装其他版本,如5.7,需要对默认的安装设置进行修改。首先列出所有可安装的版本进行查看:

yum repolist all | grep mysql

可查看到所有版本:

其中8.0版本是enabled,其他是disabled,要更改默认的安装版本,有三种方式可以选择:使用 yum-config-managerdnf config-manager 命令,或者编辑 /etc/yum.repos.d/mysql-community.repo 文件。我们依次来介绍三种方法。

A、使用yum-config-manager,在命令行提示符下,依次执行如下命令即可。

shell> yum-config-manager --disable mysql80-community
shell> yum-config-manager --enable mysql57-community

 如果提示yum-config-manager命令不存在,是因为系统默认没有安装这个命令,这个命令在yum-utils 包里,可以通过命令yum -y install yum-utils 安装就可以了。

shell> yum install yum-utils

B、使用dnf config-manager,在命令行提示符下,依次执行如下命令即可。

shell> sudo dnf config-manager --disable mysql80-community
shell> sudo dnf config-manager --enable mysql57-community

有关提示dnf命令找不到,和A一样,百度相关命令安装dnf即可。

C、手动修改文件 /etc/yum.repos.d/mysql-community.repo,使用vi或vim打开相关文件,将对应内容进行修改,如将下面内容中enabled=1改为enabled=0,即禁用8.0的默认安装:

[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

而将5.7的enabled设置为1,以默认安装5.7版本。

# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

修改完成后,可通过如下命令查看修改是否正确:

shell> yum repolist enabled | grep mysql

 可看到默认安装版本将会是5.7版本:

(EL8 系统注意) 对于基于EL8 的系统 ,如 RHEL8和Oracle Linux 8 ,系统中自带有 MySQL 模块,并默认为enabled。 除非这个模块被禁用,否则它会屏蔽MySQL 的 repositories。要梦游用这个自带模块,可以使用如下命令:  (对于可用dnf命令的系统,将yum替换为dnf):

shell> yum module disable mysql

非EL8系统不用执行上述操作,现在开始安装:

shell> yum install mysql-community-server

安装时间会有点长,安装完成后,执行如下命令启动mysql:

shell> systemctl start mysqld

可通过如下命令查看当前mysql服务状态:

shell> systemctl status mysqld

MySQL服务初始化 (以MySQL 5.7为例): 在第一次启动服务时, 将执行如下动作, 假设MySQL服务器的data目录为空:

  • 服务初始化.

  • 在data目录中生成SSL证书和密钥文件.

  • 安装并启用validate_password插件

  • 创建超级用户 'root'@'localhost' ,设置其密码并保存至log文件中,可通过如下命令查看设置的密码:

shell> rep 'temporary password' /var/log/mysqld.log

使用查找到密码登录,然后在mysql命令行修改root密码,mysql密码必须包含大写、小写字母、数字和特殊符号。

shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

因安装时创建的root用户的host为localhost,所以无法通过该用户远程连接,如果要远程连接,将该用户的host改为%即可。

mysql> update user set host = '%' where user ='root';

mysql> flush privileges;

注意:在项目启动时,如果出现以下警告:

WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. 

原因是当前版本的MySQL要求使用SSL,解决方法是在数据库连接字串里加上useSSL=true即可。

 六、关于Tomcat8.5.40不解析样式的问题。

在本次项目部署后,发现前台访问后,样式不加载,在谷歌浏览器F12出现如下警告信息:

Resource interpreted as stylesheet but transferred with MIME type text/html 

查看资源类型确实发现css 文件的响应类型变成了text/html,而不是text/css,而程序是没有错的,因为在原来的tomcat7和tomcat8.0中都没有问题。

用IE访问可以,但360极速模式和谷歌济浏览器不行。

百度了很多文章,有说是自定义过滤器的问题,有说是服务器配置的问题,有说删除掉<!DOCTYPE html>(这个确实可行,我试了,确实可以,但感觉不是解决之道,所以未采用)。这篇文章,跟我的情况很相似,但它的方案并未解决我的问题:https://blog.csdn.net/sky_cui/article/details/86703706 

各种方案我试了均未最终解决我的问题。 

最终我是将服务器上的tomcat8.5.40版本换成了8.0版本, 来暂时解决该问题。

补充一句,我在本机上测试,tomcat8.5.40和9均有这个问题,具体原因仍不详,怀疑是服务器解析协议的问题。

如果有已经找到问题根源所在的,请留言,不胜感激。

最后

以上就是神勇玉米为你收集整理的CentOS 7.4 64位 搭建Jdk8+Tomcat8+Nginx+Mysql+PHP环境的全部内容,希望文章能够帮你解决CentOS 7.4 64位 搭建Jdk8+Tomcat8+Nginx+Mysql+PHP环境所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部