记录一下个人博客的web服务器从apache换成nginx的过程。
前言
关于apache和nginx的对比有很多,小七就不在这里赘述了,之前大一搭建博客的时候还没有接触过nginx就用了apache,后来考RHCE的时候也学习配置的是apache,最近开始学习nginx,考虑到对于小七自己的静态博客和渣渣服务器性能来说,nginx应该更合适一些,因此这里就把web服务器换成了nginx。
备份快照
在阿里云的官网控制台里面创建快照备份。如果不小心翻车了,还能用快照恢复。

停用apache服务
$ systemctl stop httpd.service
$ systemctl disable httpd.service
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.

安装nginx
导入yum源
cat >> /etc/yum.repo.d/nginx.repo << EOF
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/x86_64/
gpgcheck=0
enabled=1
EOF
yum clean all
yum repolist
yum install nginx -y

这里小七使用的是nginx提供的yum源,因此版本可能会稍微新一点。
想要安装最新版的同学可以前往官网下载源码进行编译安装。
官网地址:http://nginx.org/en/download.html
启用nginx服务并设置开机启动
$ systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
$ systemctl start nginx.service

访问服务器IP。可以看到nginx已经开始工作。

这里有可能会出现
Failed to read PID from file /run/nginx.pid的错误原因是
nginx还没有完全启动,systemd就去读取该进程的PID导致无法读取报错,解决方法是让systemd晚一点读取。mkdir /etc/systemd/system/nginx.service.d cat >> /etc/systemd/system/nginx.service.d/override.conf << EOF [Service] ExecStartPost=/bin/sleep 0.1 EOF # 重启服务再次查看 systemctl daemon-reload systemctl restart nginx.service systemctl status nginx.service
配置nginx
由于小七安装的版本里面的配置文件默认并没有nginx的web的相关配置,所以我们一次把http、https和http自动跳转https配好。
查看版本

配置https
从申请ssl认证的供应商那里下载nginx服务器对应的https认证证书,并存放在/etc/pki/CA/certs目录下。(如果没有就新建该目录)
如果不知道怎么申请的可以查看这篇博客:

编辑配置文件:
这里小七直接放出整个配置文件给大家参考:
默认的配置文件位于/etc/nginx/nginx.conf
# 执行进程操作的用户,默认nginx
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;
# Settings for a TLS enabled server.
# 这里我们把80和443端口一起配置
server {
listen 80 default_server;
listen 443 ssl;
listen [::]:443 ssl;
# 这里填写自己的域名
server_name tiny777.com www.tiny777.com;
# 判断端口,如果是http的80端口就跳转到https的443端口
if ($server_port = 80) {
#return 301 https://$server_name$request_uri;
return 301 https://$host$request_uri;
}
# 这里是对应的html文件的目录
root /etc/nginx/html;
index index.html index.htm;
# 这里是https证书的密钥和证书存放位置
ssl_certificate "/etc/pki/CA/certs/tiny777.com.pem";
ssl_certificate_key "/etc/pki/CA/certs/tiny777.com.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
# 这里是支持的加密方式
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
root /etc/nginx/html;
index index.html index.htm;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
最后我们重启nginx服务,就能查看到博客已经可以正常工作了。
