Web服务二级域名配置
目前在VPS服务器上配置了网页博客的typecho
还有为了方便写文章的图床chevetero
还准备专门在一个目录下放一些静态网页做成wiki
这就涉及到web服务的二级域名设置了,设想是博客放在www.hack1s.fun
静态的图片、资源文件放在static.hack1s.fun
最后静态页面的wiki放在wiki.hack1s.fun
网上搜到的一些资料主要都是用nginx的,但是因为已经配置好了apache,本来想着看看apache咋弄,但是找了半天没找到资料,最后还是从头搞了nginx的环境;
这篇内容记一下配置服务器上apache到多个二级域名的整个过程;
Apache配置SSL
之前使用的SSL是Let’s encrypt的免费版,可以自动配置SSL;
并且之前一般用静态网页都是使用nginx设置的;
首先获取到腾讯云的证书之后,解压在里面的apache文件夹下面有三个文件
.
├── 1_root_bundle.crt
├── 2_[domain].crt
└── 3_[domain].key
把这三个文件放在一个统一的位置,比如可以放在 /etc/apache2
下面;
之后首先要创建一个软链接
ln -sf /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf
之后编辑这个文件,增加几行内容
SSLEngine on
SSLCertificateFile [path to 2_domain.crt]
SSLCertificateKeyFile [path to 3_domain.key]
SSLCertificateChainFile [path to 1_root_bundle.crt]
开启强制https,编辑sites-available/000-default.conf
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^{.*} https://%{SERVER_NAME}$1 [L,R]
启用apache的ssl模块和rewrite模块并重启
a2enmod ssl
a2enmod rewrite
systemctl restart apache2
这样设置完之后至少是可以访问https了;
但是发现并没有强制重定向,访问http还是可以访问;
修改chevereto图片上传大小限制
由于chevereto是用docker compose配置的,需要修改内部的配置文件
sudo docker -it [id] /bin/bash
apt install vim
vim /var/www/html/.htaccess
在这个文件中增加
php_value post_max_size 64M
php_value upload_max_filesize 64M
之后再仪表盘中就可以修改最大上传大小了;
以上两部分内容是之前apache配置的;然后二级域名实在没找到怎么弄,又换了nginx;
nginx配置php
nginx配置php需要安装php-fpm这个服务;
sudo apt-get install nginx php-fpm
sudo vim /etc/php/7.2/fpm/pool.d/www.conf
编辑这个文件中的几个地方
# 36行 listen = 127.0.0.1:9000
# 62行 listen.allowed_clients = 127.0.0.1
# 113行 pm.max_children = 50
# 139行 pm.max_requests = 500
# 340行 request_terminate_timeout = 0
# 344行 rlimit_files = 1024
修改之后还需要去掉前面的分号;
之后编辑nginx的配置,nginx可以直接在config.d
这个文件夹下面创建单独的配置;为了支持PHP主要需要的就是在location里面增加转发到php-fpm的配置
location / {
try_files $uri $uri/ /index.php?$args;
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
这些设置完之后应该就可以访问php服务了
创建一个phpinfo尝试一下可以访问就ok了
<?php phpinfo();?>
nginx配置ssl
nginx设置ssl主要也是在站点文件中增加几行内容
nginx的域名得到的是两个文件
.
├── 1_[domain]_bundle.crt
└── 2_[domain].key
然后在想要设置ssl的文件中加入这么几行
ssl on;
ssl_certificate path to 1_[domain]_bundle.crt;
ssl_certificate_key path to 2_[domain].key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.1;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
还有就是监听的端口从80改成443
nginx设置二级域名
最后就是最后的效果了,前面一开头也说了预想的效果;
这里把文件都放在了/etc/nginx/conf.d
中,如果放在一个文件里有些不优雅,就每个二级域名单独一个文件
.
├── chevereto.conf
└── wordpress.conf
以wordpress.conf为例,里面的内容是
server {
listen 443;
server_name hack1s.fun;
ssl on;
ssl_certificate /etc/nginx/certs/1_hack1s.fun_bundle.crt;
ssl_certificate_key /etc/nginx/certs/2_hack1s.fun.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.1;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
root /var/www/html/wordpress;
location / {
try_files $uri $uri/ /index.php?$args;
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
另一个文件同理;
最后还有一点要说明的就是,二级域名和一级域名的证书是不能一样的,所以还需要再申请专门的证书给static.*
和wiki.*
uPic设置Chevereto图床
uPic是个Mac上的图床软件;
可以用brew直接装,这也是很神奇,明明github直接可以下release,但是App Store上会收费30r,而且还真有不少人买;
brew cask install upic
在upic里面新建一个自定义服务

之后设置api地址为域名/api/1/upload
请求方式POST、使用base64
文件字段名为source
URL路径的值为
['image','url']
然后在其他字段中新建一个Header和两个Body

需要填的就是下面这个表这样
Key | Value |
---|---|
Content-Type | multipart/form-data; charset=utf-8; |
Key | |
action | upload |
关于这个Key,可以从chevereto的设置里找到
登录->右上角用户名->仪表盘->设置->API
然后就可以看到这个API的值了
最后就是在Typora里设置图片使用uPic上传到图床

这样下来写的内容就可以线上线下都很方便的浏览了;