概述
一、安装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 "%r" %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-manager或dnf 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环境所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复