Oracle VM 开放 80/443 端口

  • Post category:技术

记录一下怎么配置 Oracle Cloud 的 VM 网络端口,感觉很不直观。端口开放需要同时开放 instance 内部防火墙和 Internet Gatway 的端口

开放 instance 内部 firewall 端口

Oracle 安装的 ubuntu 默认关闭了除 22 之外的全部端口,我倾向关闭 instance 的防火墙(开放全部端口)

sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -F

但也可以选择开放部分端口:

sudo apt install firewalld
sudo firewall-cmd --zone=public --permanent --add-port=80/tcp
sudo firewall-cmd --zone=public --permanent --add-port=443/tcp
sudo firewall-cmd --reload

开放 Internet Gatway 的端口

在 Virtual Cloud Network 下面,找到 default security list,添加两条 Ingress Rules 到 80,443 端口

Continue ReadingOracle VM 开放 80/443 端口

迁移 wordpress 图片到 Oracle Object Storage

  • Post category:技术

背景

最近才知道 Oracle Cloud 的 Always Free 政策,作为云服务的后来者,为吸引用户,这算很拼的了。

Oracle Cloud Always Free
Services you can use for an unlimited time.

  • Compute – 2 VM.Standard.E2.1.Micro 1GB RAM
  • Databases – 2 DBs, 20 GB each
  • Load balancer – 1 instance with 10 Mbps
  • Block Volume – 2 volumes, 100 GB total (used for compute)
  • Object Storage – 10 GB
  • Bandwidth – 10TB egress per month
  • Notifications – 1 million delivery options per month, 1000 emails sent per month
  • Full, detailed list – https://www.oracle.com/cloud/free/

终身免费得到两台 VM 和两台 DB,非常赞了。对刚入门玩 VPS 的用户,也是很够用了。可惜我前阵子刚续费了 AWS EC2,这两台 VM 以后再看别的用途吧。

今天重点看下 AWS S3 的替代品 — Oracle Object Storage。我在 S3 放置网站的 static files,主要是用户上传的 Media 资源,并不算多,也就 2-3 个 G。而 S3 的费用主要有两部分:存储费和流量费。如果转去 Oracle 的话,有 10G 的免费存储,和 10TB 每个月的流量。 我至少一年内都不用花这部分的钱了。

恰好我用的 S3-Uploads 插件支持改 API 到 S3 compatible provider, 所以花时间重新 upload 了一遍到 Oracle。

配置 Oracle Object Storage

因为步骤和 S3 差不多,所以简单描述下:

  1. 创建新的 IAM user
  2. 创建新的 user group, 把前面的 user 加入 group
  3. 创建新的 compartment,这也是资源分组的概念。
  4. 创建新的 Object Storage bucket,
    • 设置到前面的 compartment 组
    • 别忘了设置 public
  5. 创建 policy,允许 group 的人访问 bucket。自己替换成你设置的组名。
    Allow group <group_name> to manage buckets in compartment <compartment_name>
    Allow group <group_name> to manage objects in compartment <compartment_name>
  6. 回到 user 页面,在下面选择 Customer Secret Keys 就可以创建和 S3 相兼容的 key 和 secret 了。创建完后的弹窗复制 secret,回到外面表格复制 key。
  7. 回到 bucket 页面,找到你的 bucket name 和 namespace
  8. 这里找到你的 region code 代码

安装 S3-Uploads

在 wordpress 主目录下面执行

composer require humanmade/s3-uploads

添加 这一行到 wp-config.php 加载 wp_setting.php 之前

require_once __DIR__ . '/vendor/autoload.php';

激活插件:

wp plugin activate S3-Uploads

配置 S3-Uploads 到 Oracle

  1. 创建一个新文件 wp-content/mu-plugins/s3-endpoint.php , 加入下面内容。其中需要填入 namespace 和 region code。
<?php
// Filter S3 Uploads params.
add_filter( 's3_uploads_s3_client_params', function ( $params ) {
        $params['endpoint'] = 'https://<bucket_namespace>.compat.objectstorage.<region_code>.oraclecloud.com';
        $params['use_path_style_endpoint'] = true;
        $params['debug'] = false; // Set to true if uploads are failing.
        return $params;
} );
  1. wp-config.php 加入下面配置, 填入上面获得的信息。
define( 'S3_UPLOADS_BUCKET', '' );
define( 'S3_UPLOADS_REGION', '' ); 
define( 'S3_UPLOADS_KEY', '' );
define( 'S3_UPLOADS_SECRET', '' );
define( 'S3_UPLOADS_BUCKET_URL', 'https://objectstorage.<region_code>.oraclecloud.com/n/<namespace>/b/<bucket_name>/o' );

测试并上传

在 wordpress 主目录输入:wp s3-uploads verify 插件会尝试上传一个测试文件,并且删除掉。看到以下信息就证明成功啦:

$ wp s3-uploads verify
Attempting to upload file s3:///uploads/643041837.txt
File uploaded to S3 successfully.
Attempting to delete file. s3:///uploads/643041837.txt
File deleted from S3 successfully.

然后我们就可以把所有 uploads 搬去 Oracle:

wp s3-uploads upload-directory wp-content/uploads uploads

结束!回到你的 wordpress 看看吧

Continue Reading迁移 wordpress 图片到 Oracle Object Storage

两步安装 SSL 证书

  • Post category:技术

前言

之前一直以为商用 SSL 证书是要花钱买的, 原来 Let’s Encrypt 是可以免费领取的. 当然免费的东西只有 90 天有效期, 网上有很多工具帮助你自动续期.

Let’s Encrypt is a non-profit certificate authority run by Internet Security Research Group (ISRG) that provides X. 509 certificates for Transport Layer Security (TLS) encryption at no charge. The certificate is valid for 90 days, during which renewal can take place at any time.

我找到的这个工具叫 acme.sh, 简单的bash 脚本, 不需要额外安装。

安装 acme.sh

使用也还蛮简单, 就申请证书, 安装两步。 注意生成的证书得放在 nginx 目录下面

# download acme.sh
curl https://get.acme.sh | sh

# issue certificate
acme.sh --issue -d example.com -w /var/www/.letsencrypt

# install
acme.sh --install-cert -d example.com \
--key-file       /etc/nginx/ssl/site.key  \
--fullchain-file /etc/nginx/ssl/site.cert \
--reloadcmd     "sudo service nginx reload"

update Nginx 配置

server {
        listen 443 ssl;
        ... 

        ssl_certificate /etc/nginx/ssl/site.cert;
        ssl_certificate_key /etc/nginx/ssl/site.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # do not use SSLv3 ref: POODLE
}
server {
    listen 80;
    root /var/www/.letsencrypt/;
    index index.html;

    location / {
            rewrite ^/(.*)$ https://$host$request_uri permanent;
    }

    location ^~ /.well-known/ {
            try_files $uri $uri/ =404;
    }
}

SSL 证书续期

在 install 的时候在 crontab 会自动加上一个 daily job, 每天半夜检查更新证书

30 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null

Continue Reading两步安装 SSL 证书