Solo 网站安装教程

本贴最后更新于 1799 天前,其中的信息可能已经渤澥桑田

阿里云轻量级应用服务器

系统版本:CentOS7.3

开放端口(22 端口等一切安装完毕后最好删除):

系统更新

yum -y update

安装 JDK1.8

查询是否已经安装
java -version
-bash: java: command not found #代表未安装
安装
yum install java
java -version
安装成功

Java 安装成功

安装 nginx 及配置

安装依赖库

gcc gcc-c++

yum install -y gcc gcc-c++

gcc 安装成功

PCRE 库

yum install -y pcre pcre-devel

zlib

yum install -y zlib zlib-devel

openssl

yum install -y openssl openssl-devel
编译安装

创建 nginx 文件夹

mkdir /usr/local/server
mkdir /usr/local/server/nginx
mkdir /usr/local/server/nginx/temp
mkdir /usr/local/server/nginx/run
mkdir /var/temp
mkdir /var/temp/nginx
cd /usr/local/server/nginx

将 nginx-1.8.0.tar.gz 拷贝至 Linux 服务器此文件夹(可通过其它方式获取)

解压:

tar -zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0

configure 参数设置

注意:将临时文件目录指定为/usr/local/server/nginx/temp,需要在/usr/local/server/nginx 下创建 temp 目录

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--with-http_stub_status_module --with-http_ssl_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

编译安装

make
make install

启动 nginx(安装目录默认在/usr/local/nginx)

cd /usr/local/nginx/sbin/
./nginx

访问网站,出现如下代表 nginx 安装成功

配置 nginx 开机启动

我使用的是在启动脚本/etc/rc.local 里加语句

mkdir /var/run/nginx
touch /var/run/nginx/nginx.pid
cd /usr/local/nginx/sbin/
./nginx

赋予权限

chmod +x rc.local

配置站点

创建对应文件夹
mkdir /usr/local/www
cd /usr/local/www

上传自己的静态资源备份,成功后如下:

配置 nginx 关联域名和站点

编辑 nginx.conf

vi /usr/local/nginx/conf/nginx.conf

在 http 里加入

#主站
server {
	listen       80;
	server_name  tobeshrek.com;

	location / {
		root   /usr/local/www/tobeshrek.com;
		index  index.html index.htm;
	}

	error_page   500 502 503 504  /50x.html;
	location = /50x.html {
		root   html;
	} 
}
 # 静态资源站点
    server {
        listen 80;
	server_name resource.tobeshrek.com;   #将localhost修改为您证书绑定的域名,例如:www.example.com。
	rewrite ^(.*)$ https://$host$1 permanent;   #将所有http请求通过rewrite重定向到https。
	location / {
		index index.html index.htm;
	}
    }

重新加载配置文件

cd /usr/local/nginx/sbin
./nginx -s reload

访问成功

配置站点 SSL

开启 nginx 的 ssl 模块

创建 ssl 储存文件夹,如下:

mkdir /usr/local/nginx/conf/cert

将阿里云下载的免费 SSL 证书上传到该目录

在 nginx.conf 文件中配置,在 http 里修改和加入

#主站
    server {
        listen 80;
	server_name tobeshrek.com;   #将localhost修改为您证书绑定的域名,例如:www.example.com。
	rewrite ^(.*)$ https://$host$1 permanent;   #将所有http请求通过rewrite重定向到https。
	location / {
		index index.html index.htm;
	}
    }
    # 主站SSL加密配置
    server {
	listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
	server_name tobeshrek.com;  #将localhost修改为您证书绑定的域名,例如:www.example.com。
	
	ssl_certificate cert/2562917_tobeshrek.com.pem;   #将domain name.pem替换成您证书的文件名。
	ssl_certificate_key cert/2562917_tobeshrek.com.key;   #将domain name.key替换成您证书的密钥文件名。
	ssl_session_timeout 5m;
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
	ssl_prefer_server_ciphers on;   
	location / {
	root /usr/local/www/tobeshrek.com;   #站点目录。
	index index.html index.htm;   
	}
    }
 # 静态资源站点SSL加密
    server {
	listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
	server_name resource.tobeshrek.com;  #将localhost修改为您证书绑定的域名,例如:www.example.com。
	
	ssl_certificate cert/2812408_resource.tobeshrek.com.pem;   #将domain name.pem替换成您证书的文件名。
	ssl_certificate_key cert/2812408_resource.tobeshrek.com.key;   #将domain name.key替换成您证书的密钥文件名。
	ssl_session_timeout 5m;
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
	ssl_prefer_server_ciphers on;   
	location / {
	root /usr/local/www/resource.tobeshrek.com;   #站点目录。
	index index.html index.htm;   
	}
    }

重新启动 nginx

cd /usr/local/nginx/sbin
./nginx -s quit
./nginx

访问域名,成功,Chrome 会有把小锁

安装 Docker

Docker 介绍

执行命令安装

yum  -y install docker

更换中科大的源

官方文档

vi /etc/docker/daemon.json
{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

ecs -> :wq 保存

重启 docker

systemctl restart  docker

安装 MySQL

# 安装mysql:5.6,直接docker run 他会自动去官方镜想下载
# MYSQL_ROOT_PASSWORD=你的数据库密码
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=你的数据库密码 -d mysql:5.6
# docker安装的mysql默认允许远程连接,可以使用Navicat等软件连接数据库
# 进入容器mysql
docker exec -it mysql bash
# 进入数据库 p后面跟你的密码
mysql -uroot -pXXX
#操作
#退出数据库
exit
#退出容器
exit

安装 Solo 开源博客

solo 官方 docker 安装文档

进入 MySQL 创建 solo 数据库
#如果进入时提示容器为运行则,运行数据库镜像
docker run mysql
# 进入容器mysql
docker exec -it mysql bash
# 进入数据库 p后面跟你的密码
mysql -uroot -pXXX
# 创建数据库(数据库名:solo;字符集utf8mb4;排序规则utf8mb4_general_ci)
create database solo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
# 出现Query OK, 1 row affected (0.00 sec)表示成功
#退出数据库
exit
#退出容器
exit
拉取镜像,成功如下图
docker pull b3log/solo

运行 solo 镜像

docker run --detach --name solo --network=host \
    --env RUNTIME_DB="MYSQL" \
    --env JDBC_USERNAME="root" \
    --env JDBC_PASSWORD="你的数据库密码" \
    --env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
    --env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=true&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
    b3log/solo --listen_port=8080 --server_scheme=https --server_host=blog.tobeshrek.com --server_port=

配置 nginx 反向代理

ssl 文件传到服务器/usr/local/nginx/conf/cert 目录下

# solo博客站点
upstream backend {
	server localhost:8080; # Solo 监听端口
}
server {
listen 80;
server_name blog.tobeshrek.com;   #将localhost修改为您证书绑定的域名,例如:www.example.com。
rewrite ^(.*)$ https://$host$1 permanent;   #将所有http请求通过rewrite重定向到https。
location / {
	index index.html index.htm;
}
}
# 静态资源站点SSL加密
server {
	listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
	server_name blog.tobeshrek.com;  #将localhost修改为您证书绑定的域名,例如:www.example.com。

	ssl_certificate cert/2785998_blog.tobeshrek.com.pem;   #将domain name.pem替换成您证书的文件名。
	ssl_certificate_key cert/2785998_blog.tobeshrek.com.key;   #将domain name.key替换成您证书的密钥文件名。
	ssl_session_timeout 5m;
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
	ssl_prefer_server_ciphers on;   
	location / {
		proxy_pass http://backend$request_uri;
		proxy_set_header  Host $host:$server_port;
		proxy_set_header  X-Real-IP  $remote_addr;
		client_max_body_size  10m;
	}
}

重载 nginx 配置文件

cd /usr/local/nginx/sbin
./nginx -s reload

安装成功

安装 FTP 服务器->vsftpd

yum 安装
 yum -y install vsftpd            #安装  
 rpm -qa |grep vsftp              #查看是否安装了vsftp  
 rpm -e vsftpd-3.0.2-25.el7.x86_64  #卸载
放行阿里云控制台防火墙

20、21、30000/30999

一些指令(按情况执行对应指令)
 systemctl stop firewalld.service #停止firewall  
 systemctl disable firewalld.service #禁止firewall开机启动  
 service vsftpd start        #启动vsftpd服务  
 service vsftpd restart     #重启vsftpd服务  
 service vsftpd status     #查询vsftpd服务状态  
 chkconfig vsftpd on      #设置自启

创建 chroot_list 文件

 vi /etc/vsftpd/chroot_list

测试一下能否登录 FTP 了,先安装一个 ftp 客户端组件

 yum -y install ftp  #安装ftp  
 ftp localhost  #尝试登录  
 tail -f /var/log/secure #查看日志文件
配置文件放行 root 用户
 #  在/etc/vsftpd 目录下  
 #  修改user_list和ftpusers文件  
 #  注释root用户,放行root用户

vsftpd.conf 文件配置,加上以下几行

 # 227  解决227路由问题
 pasv_enable=YES  
 pasv_min_port=30000  
 pasv_max_port=30999  
 pasv_address=106.15.91.0 #你的外网IP地址

/etc/vsftpd/目录结构

  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1436 引用 • 10056 回帖 • 490 关注
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • Dirk

    不错 回去试试 sym 没按明白