下面介绍全新安装的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自动回到命令模式。
输入命令 sudo yum -y install lrzsz
输入命令 rz 会自动弹出上传对话框,上传文件存放在当前用户工作目录路径下
输入命令 sz 后面带上文件路径,可以弹出文件下载框
输入命令 yum install -y unzip zip
解压zip文件方法例如解压shop.zip文件
输入命令 unzip -o shop.zip
为刚才创建的用户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
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关闭 |
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
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 "%r" %s %b" />
将/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 进行修改
输入命令 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 重启服务
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
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'