一、安装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日志路径改为自定义路径如下:
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;
}
}
---------------------
作者:SHUIPING_YANG
来源:CSDN
原文:https://blog.csdn.net/zhezhebie/article/details/73497150
版权声明:本文为博主原创文章,转载请附上博文链接!
我试了,依然没解决。
5)最后我发现,在default.conf文件中,对php解析那一段 ,也就是 location ~ \.php$代码块中,原来定义的root是html,我不知道为什么它其它地方定义的都是 /usr/share/nginx/html,单单这里写成了html,而且还单独写了,把这里的html改成/usr/share/nginx/html后重启nginx,发现成功了。但这样一个问题,居然折磨了我整整两天。
五、关于mysql
因为我们数据库服务器用的是阿里的RDS,一般我也不在该服务器上操作mysql数据库,所以本机不需要安装mysql。
关于mysql的安装,可以网上搜索,因为本机没有安装,不能详述安装过程及可能的问题,所以在此不再记录。
其中注意一点,在项目动时,如果出现以下警告:
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极速模式和谷歌济浏览器不行。
百度了很多文章,有说是自定义过滤器的问题,有说是服务器配置的问题,有说删除掉(这个确实可行,我试了,确实可以,但感觉不是解决之道,所以未采用)。这篇文章,跟我的情况很相似,但它的方案并未解决我的问题:https://blog.csdn.net/sky_cui/article/details/86703706
各种方案我试了均未最终解决我的问题。
最终我是将服务器上的tomcat8.5.40版本换成了8.0版本, 来暂时解决该问题。
补充一句,我在本机上测试,tomcat8.5.40和9均有这个问题,具体原因仍不详,怀疑是服务器解析协议的问题。
如果有已经找到问题根源所在的,请留言,不胜感激。