个人网站搭建 服务器http切换到https 网站协议切换到https
背景和引言
博主自行搭建一个个人网站,国内的服务器和域名都要实名或者备案,觉得太麻烦了;于是用的是国外的,用的是知速云+cf。写这篇文章主要是想记录一下几天踩过的坑,帮助大家更快搭建好自己的网站。(同时也方便自己日后回顾)
MySQL安装
推荐通过docker进行安装,方便管理。
安装Docker
1)yum 包更新到最新
sudo yum update
(2)安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
(3)设置yum源为阿里云
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(4)安装docker
sudo yum install docker-ce
(5)安装后查看docker版本
docker -v
启动docker
systemctl start docker
有些linux版本会报错,使用service docker start
安装MySQL镜像
拉取镜像
docker pull mysql:5.7
这里以5.7版本为例,因为我的就是安装的5.7,如需安装最新版本,可使用以下命令
docker pull mysql:latest
安装成功后,就开始运行。这里有很大的学问,不建议您使用mysql默认的端口,这样子很容易被别人暴力破解,然后向你索要比特币。
创建容器,设置端口映射、目录映射
docker run -di --name=c_mysql -p 3333:3306 -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
别直接复制!自顶一下端口号和密码,其他都可以不改!
参数说明:
-p 3333:3306:将容器的 3306 端口映射到宿主机的 3333 端口。(navicat连接的时候,就通过3333端口连接)-v /root/mysql/logs:/logs:将主机目录(/root/mysql)下的 logs 目录挂载到容器中的 /logs。日志目录-v /root/mysql/data:/var/lib/mysql :将主机目录(/root/mysql)下的data目录挂载到容器的 /var/lib/mysql 。数据目录-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
进入容器,操作mysql
docker exec –it 容器id /bin/bash
安装JDK
我们在 user 目录下建立一个新的 java文件夹,用来存放 JDK文件。
cd /usr/
mkdir java
cd java
之后我们准备开始下载 JDK1.8。
为了省事,这里我们给出下载好的 jdk1.8的百度云链接。链接里面有一个 tar包,一个 rpm包。任选一个下载即可,具体的操作方法后面都会说明。
tar包是打包好的压缩包,解压就行 rpm包是安装包,需要安装
链接:https://pan.baidu.com/s/1lhJYRfjtpoUPFORMPUnIHg
提取码:404k
因为是外网,网速属实是一言难尽。我们还是推荐使用刚才的百度云链接下载。
如果是服务器,文件下载完成后,使用 WinSCP软件将 tar包或者 rpm包上传到自己的服务器。如果不会使用 WinSCP,请参考这篇博客 使用WinSCP上传文件到指定服务器 如果是虚拟机,可以通过共享文件等方式将文件共享到虚拟机,或者配置远程连接,再使用 WinSCP等软件上传文件到虚拟机。如果不会配置远程连接的,请参考这篇博客 虚拟机CentOS7设置远程连接 文件的位置就放在刚才建立好的 java文件夹,接下来我们开始安装jdk。
// tar包进行解压
tar -zxvf jdk-8u241-linux-x64.tar.gz
// rpm包进行安装
rpm ivh jdk-8u241-linux-x64.rpm
配置环境变量
JDK1.8已经安装完成,最后一步工作就是配置环境变量了。
Linux系统下配置环境变量有很多种方法,我们只需要选择其中一种即可。这里我们选择修改系统配置的文件 /etc/profile。
如果/etc/profile文件不可编辑,我们需要先修改其为可编辑才行
sudo chmod -v u+w /etc/profile
我们使用 Linux自带的输 vim编辑器来进行编辑。输入命令
vim /etc/profile
将如下配置添加至文件中。输入命令
export JAVA_HOME=/usr/java/jdk1.8.0_241
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
配置添加完成后,按 “Esc”键,输入 “:wq”,就可以保存文件并返回了。
验证是否安装成功
重新加载配置文件
source /etc/profile
验证java
java
javac
java -version
项目打包到服务器
我这里的项目是SpringBoot,在IDEA的命令窗口中运行:
mvn clean package
就可以得到可以运行的jar包了。(在target目录中) 然后再通过ftp软件将jar包上传到服务器即可。
运行jar包
nohup java -jar 对应名称.jar >temp.txt 2>&1 &
会将相关日志输出到temp.txt中,方便查看。
Nginx安装
这边推荐通过wget的形式安装,当时看的一篇文章介绍了4种方式,结果折腾了半天都无法正常运行。(一开始是通过yum安装,搞了好久都没成功,卸载后,又通过其他方式进行安装)
//一键安装上面四个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
手动创建用户和用户组
groupadd nginx
useradd nginx -g nginx -s /sbin/nologin -M
下载并解压安装包
cd /usr/local
mkdir nginx
cd nginx
//下载tar包
wget http://nginx.org/download/nginx-1.20.2.tar.gz
tar -xvf nginx-1.20.2.tar.gz
安装nginx
//进入目录
cd nginx-1.20.2
//执行命令
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --user=nginx --group=nginx
//执行make命令
make
//执行make install命令
make install
修改环境变量
vim /etc/profile
添加到尾部
export PATH=$PATH:$NGINX_HOME/sbin # 注意这里,不要直接复制,而是将:$NGINX_HOME/sbin 之前命令的后面!
export NGINX_HOME=/usr/local/nginx/nginx-1.20.2
重新加载环境变量
source /etc/profile
修改配置服务文件
vi /lib/systemd/system/nginx.service
配置信息
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx reload
ExecStop=/usr/local/nginx/sbin/nginx quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
创建服务
systemctl enable nginx.service
测试
浏览器输入ip地址,看看是否进入nginx首页
一些常见的Nginx命令
systemctl start nginx #启动nginx
systemctl stop nginx #关闭nginx
systemctl restart nginx #重启nginx
systemctl reload nginx #重新加载nginx配置文件
systemctl enable nginx #开机自启
域名+https
这边踩坑很严重,弄了好几天才完成。当时域名是再cf上买的,然后就顺带用上了它们的cdn功能,但是国内访问真的一言难尽,如果访问的用户是国内的话,我的评价是:真的不如不用!!!当时花了一天的时间去搜索如何解决,后面真的放弃了。
HTTPS
这边推荐使用certbot。 安装起来算是最简单的了。
通过certbot实现https
前提:你的网站现在通过域名可以正常访问。(certbot会自动证书和密钥并且帮我们修改nginx配置文件内容)
安装 EPEL
yum -y install epel-release
yum install python2-certbot-nginx
安装完毕后,运行
certbot --nginx
# 如果没有配置nginx的环境变量可能会报错:
# Saving debug log to /var/log/letsencrypt/letsencrypt.log
# Error while running nginx -c /etc/nginx/nginx.conf -t.
# 那么我们就自己指定nginx的运行目录:certbot --nginx --nginx-server-root=nginx配置文件对应的目录
命令执行后首先会提示输入一个邮箱地址,主要作用是订阅一些通知,输入后回车。
[root@izuf6fco0zwyipdq9485s2z ~]# certbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
▽
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): demo@mail.com // 演示邮箱
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
回车后 Certbot 就会自动请求下载 Let’s Encrypt 证书,并设置 Nginx 配置文件。期间会有一些同意相关协议和选择哪个网站配置的交互,这个看输出文字就能明白意思。
Cleaning up challenges
Deploying Certificate to VirtualHost: //这边会显示你的网站配置文件目录
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Redirecting all traffic on port 80 to ssl in //这边会显示你的网站配置文件目录
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://kisstime.top
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=kisstime.top
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
.../fullchain.pem
Your key file has been saved at:
.../privkey.pem
Your cert will expire on 2019-02-14. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
接着命令交互会提示是否将所有 HTTP 重定向到 HTTPS,我这边选择全部重定向也就是「2」。 OK,当完成上面最后一步后,输入如上信息后就表明 HTTPS 配置成功了!我们可以通过提示中的 SSL Server Test 网址来测试网站是否能够 HTTPS 来进行访问
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=kisstime.top
引用
1.Linux系统安装JDK1.8 详细流程 2.通过 Certbot 安装 Let’s Encrypt 证书,来实现全站的 HTTPS 访问