服务器环境配置

下面介绍全新安装的CentOS系统服务器安装配置商城软件服务环境的方法。演示主机操作系统为CentOS 7.3,SSH登录客户端为Xshell 5,需用户自行到官网下载。本文仅演示默认配置,各种服务器调优方法请参考其它文章


登录服务器

1、首先打开安装好的Xshell 5软件

2、点击【文件】--> 【新建】,在弹出的对话框中填写名称(名字随意),主机填写服务器IP,端口填写实际端口号

3、点击左边的【连接】--> 【用户身份验证】项,填写服务器的root账号和密码,点击确定

4、在弹出的对话框中点击【连接】

5、登录成功界面


创建新账户

1、创建普通账号

演示创建一个名称为diyhi的用户。#号为注释,不用输入

useradd diyhi #创建普通账号

passwd diyhi #根据提示设置密码,需要输入2次

2、设置账户权限

Linux默认是没有将用户添加到sudoers列表中的,需要root手动将账户添加到sudoers列表中,才能让普通账户执行sudo命令

A.输入visudo命令。这个命令是打开 /etc/sudoer文件,这时编辑框为命令模式,这时输入字母i进入插入模式,就可以编辑文件了

B.按方向键(下)将配置文件拖到root ALL=(ALL) ALL项

C.在这个文件的末尾添加 diyhi ALL=(ALL) ALL (中间的空格是Tab 键)

D. 然后保存(就是先按一 下Esc键,然后输入  :wq  )退出

Vi的工作模式

Vi有三种工作模式,分别为:命令模式、插入模式(编辑模式)和末行模式,三种模式分别进行不同的操作,它们之间可以进行切换。

1.命令模式:进入Vi后,首先进入的就是命令模式,等待用户输入编辑命令,此时输入的字母将作为编辑命令来解释。

2.插入模式:在命令模式下输入插入命令i、附加命令a、打开命令o等命令可以进入插入模式,在插入模式下,用户输入可以对文本进行编辑,输入的任何字符都被当作文件内容保存起来。【Esc】键可以返回命令模式。

3.末行模式:在命令模式下,按【:】键可以进入末行模式,Vi光标会显示在窗口的最后一行,以“:”作为末行模式的提示符,等待用户输入命令。末行命令执行后,Vi自动回到命令模式。


安装lrzsz软件上传下载文件

输入命令 sudo yum -y install lrzsz

输入命令 rz 会自动弹出上传对话框,上传文件存放在当前用户工作目录路径下

输入命令 sz 后面带上文件路径,可以弹出文件下载框


安装ZIP压缩/解压文件

输入命令 yum install -y unzip zip

解压zip文件方法例如解压shop.zip文件

输入命令 unzip -o shop.zip

配置密钥key免密码登录

为刚才创建的用户diyhi设置使用密钥方式登录

1、在Xshell主界面,点击【新建】,填写名称并输入服务器的IP地址和端口号,如下

2、点击【用户身份验证】->方法选择为【Public Key】->【浏览】->【生成】-> 选择密钥类型和密钥长度->【下一步】,如下图:



3. 出现提示“公钥对已成功生成”后,点击【下一步】,如下图:

4. 输入自己定义的密钥名称(不需要输入密码),点击【下一步】,如下图:


5. 创建公钥。点击【保存为文件】,用户将公钥保存到自己定义的位置,比如保存为C:\diyhi_public.pub,然后点击【完成】,如下图:

私钥也建议用户备份,点击【导出】按钮可导出私钥

6. 输入命令mkdir /home/diyhi/.ssh   在diyhi用户目录下创建隐藏文件夹

将刚才保存的公钥文件C:\diyhi_public.pub上传到刚才创建的.ssh目录

使用lrzsz软件的rz命令上传

输入命令 touch authorized_keys   在.ssh 目录下新建authorized_keys文件

输入命令 cat diyhi_public.pub >> authorized_keys   然后把diyhi_public.pub文件内容追加到authorized_keys文件中

输入命令 cat authorized_keys   查看authorized_keys文件

7. 设置.ssh 目录和密钥权限

chmod 700 /home/diyhi/.ssh   确保 $HOME/.ssh 目录只有所有者才有权写入

chmod 600 /home/diyhi/.ssh/authorized_keys   确保其它用户对 authorized_keys 文件没有修改权限

chown -R diyhi:diyhi /home/diyhi/.ssh   同时更改文件和目录的所有者和用户组为diyhi

8. 调整sshd配置文件/etc/ssh/sshd_config以支持密钥认证登录

输入命令 vim /etc/ssh/sshd_config   打开配置文件

将sshd_config中的如下内容

#PubkeyAuthentication yes # 默认为注释,启用公钥认证

#AuthorizedKeysFile.ssh/authorized_keys # 验证公钥的存放路径

修改为

PubkeyAuthentication yes #启用公钥认证

RSAAuthentication yes #启用 RSA 认证 注意:本项在CentOS7.4中已弃用

修改完成后,输入命令 systemctl restart sshd.service 重启ssh服务让配置文件生效

9.进行登录验证

在Xshell中使用diyhi账户登录

上面画面显示正常登录后,为了安全,把系统的root账户登录功能和密码登录功能关闭,同时修改登录端口

输入命令 vim /etc/ssh/sshd_config   打开配置文件

将sshd_config中的如下内容

PasswordAuthentication yes # 禁止密码认证,默认是打开的

#PermitRootLogin no默认为注释,设置是否允许root通过ssh登录

#Port 20 默认为注释

修改为

PasswordAuthentication no #禁止使用密码登录

PermitRootLogin no #禁止root用户登录

Port 20002 #修改为20002

修改完成后,输入命令 systemctl restart sshd.service 重启ssh服务让配置文件生效


同时Xshell 5的登录配置文件也要将端口修改为20002

Firewall防火墙

1.输入命令yum install firewalld   执行安装

输入命令yum install firewalld systemd -y   执行安装firewall-cmd

2.启动firewalld

输入命令 systemctl start firewalld   启动防火墙

输入命令 firewall-cmd --permanent --zone=public --add-port=20002/tcp #ssh   开放SSH登录端口

输入命令 firewall-cmd --permanent --zone=public --add-port=80/tcp #80   开放80网站端口

输入命令 firewall-cmd --reload   执行完命令要刷新才能生效

Firewall使用命令示例
systemctl start firewalld 启动
systemctl enable firewalld 开机启动
systemctl stop firewalld 关闭
systemctl disable firewalld 取消开机启动
firewall-cmd --state 查看运行状态
firewall-cmd --reload 重新加载
firewall-cmd --get-services 显示服务列表
firewall-cmd --enable service=ssh 允许SSH服务通过
firewall-cmd --disable service=ssh 禁止SSH服务通过
firewall-cmd --enable ports=8080/tcp 打开TCP的8080端口
firewall-cmd --enable service=samba --timeout=600 临时允许Samba服务通过600秒
firewall-cmd --list-services 显示当前服务
firewall-cmd --list-all 列出所有的开放端口
firewall-cmd --permanent --zone=public --add-port=80/tcp 添加80端口
firewall-cmd --permanent --zone=public --add-service=http 添加http服务
firewall-cmd --zone=public --query-port=80/tcp 检查80端口是否生效
firewall-cmd --zone=public --remove-port=80/tcp 删除80端口
firewall-cmd --permanent --remove-port=80/tcp 永久删除80端口
firewall-cmd --add-service= ftp --permanent 永久开放ftp服务
firewall-cmd --remove-service= ftp --permanent 永久ftp关闭

安装JDK

1.将JDK安装包jdk-8u152-linux-x64.tar.gz上传到/home/diyhi目录

也可以在线下载JDK,直接用wget命令在官网上会下载失败,必须在wget命令加上一个特殊的cookie,可以参考以下命令下载对应用版本,本次演示下载适用CentOS 7.3 64位操作系统的最新版

输入命令 wget --no-cookie --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/jdk-8u152-linux-x64.tar.gz -O jdk-8u152-linux-x64.tar.gz

2.下载或上传完成后开始安装

输入命令 tar -xzf jdk-8u152-linux-x64.tar.gz   解压文件到当前文件夹

输入命令 mkdir /usr/java   在根目录/usr/目录下创建java目录

输入命令 cd /usr/java   切换到安装目录

输入命令 cp -a /home/diyhi/jdk1.8.0_152 /usr/java   将解压出来的文件夹复制到java目录

输入命令 vi /etc/profile   打开环境变量配置文件

3.在境变量配置文件最后的一行加入下面三行参数

				
				export JAVA_HOME=/usr/java/jdk1.8.0_152
				export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
				export PATH=$JAVA_HOME/bin:$PATH
				
			

4.刷新配置文件

输入命令 source /etc/profile

5.查看java是否安装成功

输入命令 java -version

安装Tomcat

1.将apache-tomcat-8.5.20.tar.gz上传到/home/diyhi目录

输入命令 tar -xzf apache-tomcat-8.5.20.tar.gz   解压文件到当前文件夹

输入命令 mkdir /usr/local/tomcat8   在根目录/usr/目录下创建java目录

输入命令 cd /usr/local/tomcat8   切换到安装目录

2.将解压出来的文件夹复制到tomcat8目录

输入命令 cp -a /home/diyhi/apache-tomcat-8.5.20 /usr/local/tomcat8

3.启动Tomcat

输入命令 sh /usr/local/tomcat8/apache-tomcat-8.5.20/bin/startup.sh

关闭Tomcat

输入命令 sh /usr/local/tomcat8/apache-tomcat-8.5.20/bin/shutdown.sh

在浏览器上输入网址 http://服务器的IP:8080/   能打开默认网页说明配置成功(请提前将8080端口加入到Firewall防火墙)

在有的虚似服务器上Tomcat启动时间可能超过10分钟,请耐心等到待。下一节将配置解决Tomcat启动慢的问题

4.创建tomcat启动用户并授权

输入命令 getent group tomcat || groupadd -r tomcat

输入命令 getent passwd tomcat || useradd -r -d /opt -s /bin/nologin -g tomcat tomcat

5.更改文件权限

输入命令 chown -R tomcat:tomcat /usr/local/tomcat8

6.配置开机启动Tomcat脚本

A.增加tomcat.service 在/usr/lib/systemd/system目录下增加tomcat.service,目录必须是绝对目录

输入命令 cd /usr/lib/systemd/system

输入命令 vim tomcat.service

B. 将下面的配置内容复制到tomcat.service文件中-Xms 设置虚拟机可用内存堆的初始大小。-Xms512M表示虚拟机启动时分配的内存大小为512M   -Xmx 设置虚拟机的最大可用大小。-Xmx512M表示虚拟机能使用最大内存为512M请根据服务器的实际情况配置,本次演示将设置为-Xms512M -Xmx512M,服务器内存充足时请将这两个参数设置为比较大的值;其它调优参数请参考网上相关资料

				
				[Unit]   
				Description=Tomcat8
				After=syslog.target network.target remote-fs.target nss-lookup.target   
				      
				[Service]
				User=tomcat
				Group=tomcat
				
				Type=forking   
				Environment='JAVA_HOME=/usr/java/jdk1.8.0_152'   
				Environment='CATALINA_PID=/usr/local/tomcat8/apache-tomcat-8.5.20/bin/tomcat.pid'   
				Environment='CATALINA_HOME=/usr/local/tomcat8/apache-tomcat-8.5.20'   
				Environment='CATALINA_BASE=/usr/local/tomcat8/apache-tomcat-8.5.20'   
				Environment='CATALINA_OPTS=-Xms512M -Xmx512M -server'   
				   
				WorkingDirectory=/usr/local/tomcat8/apache-tomcat-8.5.20/
				   
				ExecStart=/usr/local/tomcat8/apache-tomcat-8.5.20/bin/startup.sh   
				ExecReload=/bin/kill -s HUP $MAINPID   
				ExecStop=/bin/kill -s QUIT $MAINPID   
				PrivateTmp=true   
				      
				[Install]   
				WantedBy=multi-user.target  
				
			

保存配置文件后执行systemctl daemon-reload命令刷新

输入命令 systemctl daemon-reload

因为配置pid,在启动的时候会再tomcat根目录生成tomcat.pid文件,停止之后删除。同时tomcat在启动时候,执行start不会启动两个tomcat,保证始终只有一个tomcat服务在运行。

使用配置好的系统服务管理Tomcat
systemctl enable tomcat 配置开机启动
systemctl start tomcat 启动tomcat
systemctl stop tomcat 停止tomcat
systemctl restart tomcat 重启tomcat
systemctl disable tomcat 删除开机启动
systemctl daemon-reload 刷新

7.配置Tomcat

输入命令 cd /usr/local/tomcat8/apache-tomcat-8.5.20/conf   进入tomcat安装目录

输入命令 vim server.xml   打开配置文件

1.增加网页编码参数URIEncoding="UTF-8" 2.修改使用nginx转发后客户端IP写入日志

				
				<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" 
				redirectPort="8443" URIEncoding="UTF-8" />
               
               <!--
		        directory:日志文件放置的目录  在tomcat下面有个logs文件夹
		        prefix:日志文件的名称前缀
		        suffix:日志文件的后缀名
		        pattern:日志内容格式  %h:服务器名称,如果resolveHosts=false则为IP地址
		        resolveHosts: 等于true时,tomcat会将这个服务器IP地址通过DNS转换为主机名; 等于false时,直接写服务器IP地址
		        
		        pattern详细参数:
        		%a - 远程IP地址
        		%A - 本地IP地址
        		%b - 发送的字节数(Bytes sent), 不包括HTTP headers的字节,如果为0则展示'-'
								%B - 发送的字节数(Bytes sent), 不包括HTTP headers的字节
								%h - 远程主机名称(如果resolveHosts为false则展示IP)
								%H - 请求协议
								%l - 远程用户名,始终为'-'(Remote logical username from identd)
								%m - 请求的方法(GET, POST等)
								%p - 接受请求的本地端口
								%q - 查询字符串,如果存在,有一个前置的'?'
								%r - 请求的第一行(包括请求方法和请求的URI)
								%s - response的HTTP状态码(200,404等)
								%S - 用户的session ID
								%t - 日期和时间,Common Log Format格式
								%u - 被认证的远程用户, 不存在则展示'-'
								%U - 请求URL路径
								%v - 本地服务名
								%D - 处理请求的时间,单位为毫秒
								%T - 处理请求的时间,单位为秒
								%I - 当前请求的线程名(can compare later with stacktraces)
								%{xxx}i 请求headers的信息
								%{xxx}o 响应headers的信息
								%{xxx}c 请求cookie的信息
								%{xxx}r xxx是ServletRequest的一个属性
								%{xxx}s xxx是HttpSession的一个属性
				      			-->
               
               <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
               prefix="localhost_access_log" suffix=".txt" 
               pattern="%{X-FORWARDED-FOR}i %l %u %t &quot;%r&quot; %s %b" />
               
			

8.上传网站程序

将/usr/local/tomcat8/apache-tomcat-8.5.20/webapps/ROOT目录下的所有文件删除

将网站程序上传到/usr/local/tomcat8/apache-tomcat-8.5.20/webapps/ROOT  目录

注意/usr/local/tomcat8/apache-tomcat-8.5.20/webapps/ROOT目录下上传的网页项目文件也必须为tomcat用户所有,如果出现文件权限不可读写,可以尝试执行命令 chown -R tomcat:tomcat /usr/local/tomcat8 进行修改

解决虚拟服务器CentOS7中Tomcat8.x启动慢问题

输入命令 yum install rng-tools   安装rngd服务

输入命令 systemctl start rngd   启动服务

如果你的CPU不支持DRNG特性或者像我一样使用虚拟机,可以使用/dev/unrandom来模拟

输入命令 cp /usr/lib/systemd/system/rngd.service /etc/systemd/system

输入命令 vim /etc/systemd/system/rngd.service service

将ExecStart=/sbin/rngd -f修改为 ExecStart=/sbin/rngd -f -r /dev/urandom

输入命令 systemctl daemon-reload   重新载入服务

输入命令 systemctl restart rngd   重启服务

安装nginx

1.下载对应当前系统版本的nginx包(package)

输入命令 wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

2.建立nginx的yum仓库

输入命令 rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm

3.下载并安装nginx

输入命令 yum install nginx

4.启动nginx

输入命令 systemctl start nginx

使用配置好的系统服务管理Nginx
systemctl enable nginx 配置开机启动
systemctl start nginx 启动nginx
systemctl stop nginx 停止nginx
systemctl restart nginx 重启nginx
systemctl disable nginx 删除开机启动
systemctl daemon-reload 刷新

5.配置nginx

默认的配置文件在 /etc/nginx 路径下,使用该配置已经可以正确地运行nginx;如需要自定义,修改其下的 nginx.conf 等文件即可

6.绑定域名

输入命令 vim /etc/nginx/conf.d/default.conf

				
				#配置301跳转,将用户访问diyhi.com自动跳转到www.diyhi.com
				server {
				        listen 80;
				        server_name diyhi.com;
				        return 301 $scheme://www.diyhi.com$request_uri;
				}
				#配置请求转发,将网页访问80端口转发到Tomcat的8080端口
				server{
				        listen  80;
				        server_name www.diyhi.com;
			            location /{
			                proxy_set_header Host $host;
			                proxy_set_header X-Real-Ip $remote_addr;
			                proxy_set_header X-Forwarded-For $remote_addr;
			                proxy_pass $scheme://127.0.0.1:8080;
							client_max_body_size 200M; #允许上传文件大小,默认是1M
			                
			
			                proxy_read_timeout 86400s;
			                proxy_http_version 1.1;
			                proxy_set_header Upgrade $http_upgrade;
			                proxy_set_header Connection "upgrade";
			            }
			            
			            #location ~ /(file/topic|file/links)/.*\.(rar|zip|7z|tar|txt|pdf)$ {  
						#指定目录中的特定后缀文件防盗链
						location ~ /(file/topic)/.*\.(mp4|avi|mkv|wmv|wav|rm|rmvb|mp3|flac|ape|zip|rar|7z|txt|docx|doc|pptx|ppt|xlsx|xls)$ {    
							secure_link $arg_md5,$arg_expires;
						    #表示 MD5(密钥 + 不包含主机名和请求参数的剩余部分文件路径 + 过期时间) 1234567890123456是密钥,必须是16位字符并且和管理后台的'基本设置'中'文件防盗链密钥'一致
							secure_link_md5 1234567890123456$uri$arg_expires;
							     
						        
						    #当匹配成功的时候 secure_link 是非空非0的
								
						    # 没有匹配到返回 ""
						    if ($secure_link = "") {
						        return 403;
						    }
								
						    # 没有匹配到返回0
						    if ($secure_link = "0") {
						        return 410;
						    }
						    #文件名重命名
		     				add_header Content-Disposition "attachment;filename=$arg_fileName";
		     						
		     				proxy_set_header Host $host;
		                	proxy_set_header X-Real-Ip $remote_addr;
		                	proxy_set_header X-Forwarded-For $remote_addr;
							proxy_redirect off;
							proxy_pass http://127.0.0.1:8080;	
						}
				}
				
			

配置完成保存。 调用nginx -t测试配置文件是否正确

7.日志

访问日志默认路径 /var/log/nginx/access.log

错误日志默认路径 /var/log/nginx/error.log

安装MySQL

1. MySQL选择下载版本 https://dev.mysql.com/downloads/repo/yum/


2.下载MySQL源(后缀是noarch.rpm)

输入命令 wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

3. 安装mysql源

输入命令 yum localinstall mysql57-community-release-el7-11.noarch.rpm

4. 检查mysql源是否安装成功

输入命令 yum repolist enabled | grep "mysql.*-community.*"

看到上图所示表示安装成功

5. 安装MySQL

输入命令 yum install mysql-community-server

6. 启动MySQL服务

输入命令 systemctl start mysqld

7.查看MySQL的启动状态

输入命令 systemctl status mysqld

系统服务管理MySQL
systemctl enable mysqld 配置开机启动
systemctl start mysqld 启动MySQL
systemctl stop mysqld 停止MySQL
systemctl restart mysqld 重启MySQL
systemctl disable mysqld 删除开机启动
systemctl daemon-reload 刷新

8.找出root默认密码

mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改

输入命令 grep 'temporary password' /var/log/mysqld.log

9.使用数据库root用户登录

输入命令 mysql -u root -p

输入密码 mNAk/r(3L=h+

10.修改默认密码

演示将默认密码修改为Mysql&123456789

输入命令 ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql&123456789';

输入命令 set password for 'root'@'localhost'=password('Mysql&123456789');

新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问

输入命令 flush privileges;

11.注意:mysql5.7默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误,如下图所示:

12.退出登录

输入命令 exit

13.配置默认编码为utf8mb4

修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示:

				
				[mysqld]
				character_set_server= utf8mb4
				init_connect='SET NAMES utf8mb4'