腾讯云主机 Ubuntu 系统使用 sftp 上传文件

laptop-desk-code.jpg | center | 827x551

概述

经常有操作系统与云服务器间传递文件的需求,通常采用的方式有:搭建ftp服务器、云盘同步工具、winscp、sftp等,其中我比较喜欢winscp 和 sftp 的方式,当然,如果你说两边都装个QQ,同是windows系统的前提下也无可厚非。

今天,介绍的是采用sftp方式与腾讯云Ubuntu系统间同步文件的开启方式。

解决方法

腾讯云主机 Ubuntu 系统默认开通的用户是:ubuntu,
此账户无法使用sftp上传文件。

我们的解决方式是,启用root 账户!

启用前需要修改配置文件

执行命令:

vim /etc/ssh/sshd_config

将下面两个参数修改为 yes

PermitRootLogin yes

PasswordAuthentication yes

修改 root 账户密码

sudo passwd

使用FilleZilla连接云主机

image.png | left | 637x621

更新时间

  • 【2018-5-11 14:52:18】添加背景说明。

相关链接

腾讯云主机 Ubuntu 安装 WordPress

laptop-desk-code.jpg | center | 827x551

概述

Ubuntu 16.04 安装 WordPress 主要分三步:安装 Nginx 并解析域名 ,安装 PHP ,安装 MySQL。在此基础上本文还扩充了添加SSL证书、www跳转到主域名、域名的DNS解析等内容。

安装 Nginx 并解析域名

首先,更新依赖包:

切换到root账户,否则更新包会有如下错误

ubuntu@VM-ubuntu:~$ apt-get update
Reading package lists... Done
W: chmod 0700 of directory /var/lib/apt/lists/partial failed - SetupAPTPartialDirectory (1: Operation not permitted)
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied)
W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)

切换到 root 账户

sudo su

更新依赖包:

apt-get install update

等待更新完毕!安装 Nginx

apt-get install nginx

安装过程中如果提示(Y/N)的时候,一律输入y

此时,在浏览器中输入IP地址,如果安装成功,则可以看到默认的 Nginx 页面:

image.png | left | 714x313

然后,设置域名的DNS解析

image.png | left | 827x517

解析成功后,在浏览器输入域名可以看到刚才的 Nginx 默认页。

最后,修改 Nginx 配置文件

配置文件路径:/etc/nginx/sites-available/default

......

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files uri uri/ =404;
        }

......

修改36行的 root /var/www/html;root /var/www/myblog;

添加SSL证书

申请免费SSL证书:

地址:https://freessl.org/

申请步骤:

输入要申请证书的域名:

image.png | left | 827x356

按照要求,验证域名所有权:

image.png | left | 827x669

验证完成,下载证书文件。

证书文件

证书文件包含两个:

image.png | left | 243x80

这两个文件的含义是:

文件名 内容
cert.pem 服务端证书
chain.pem 浏览器需要的所有证书但不包括服务端证书,比如根证书和中间证书
full_chain.pem 包括了cert.pem和chain.pem的内容
private.key 证书的私钥

一般情况下full_chain.pemprivate.key就够用了

Nginx 安装SSL 证书

创建ssl证书目录:

cd /etc/nginx
mkdir ssl

在此路径下添加两个文件:

root@VM-ubuntu:/etc/nginx/ssl# vim mydomain.crt
root@VM-ubuntu:/etc/nginx/ssl# vim mydomain.key

mydomain.crt 对应文件 full_chain.pem 中的内容。
__mydomain.key __对应文件 private.key 中的内容。

修改站点配置文件,启用SSL证书

编辑站点配置文件:

root@VM-ubuntu:/etc/nginx/sites-available# vim default 

服务器部分,注释掉80端口监听,开启443端口监听并指定SSL证书路径:

server {
        #listen 80 default_server;
        #listen [::]:80 default_server;

        # SSL configuration
        #
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        ssl on;
        ssl_certificate /etc/nginx/ssl/mydomain.crt;
        ssl_certificate_key /etc/nginx/ssl/mydomain.key;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
........

修改完成后,检查配置文件语法并重启服务器:

root@VM-ubuntu:/etc/nginx/sites-available# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@VM-ubuntu:/etc/nginx/sites-available# service nginx restart

刷新浏览器后,可以查看证书信息:

image.png | left | 768x660

网站安全性检查

检查网站安全性等级:https://www.ssllabs.com

Test your server:

image.png | left | 760x622

SSL A+配置

生成一个 DH group。

sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

再来就是针对 SSL 做一些自定义的设置:(添加 Security enhancements 中的内容)

 # SSL configuration
        #
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        ssl on;
        ssl_certificate /etc/nginx/ssl/rqc.im.crt;
        ssl_certificate_key /etc/nginx/ssl/rqc.im.key;

##### Security enhancements begin

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
        ssl_ecdh_curve secp384r1;
        ssl_session_cache shared:SSL:10m;
        ssl_session_tickets off;
        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 1.1.1.1 114.114.114.114 valid=300s;
        resolver_timeout 5s;
        add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
        add_header X-Frame-Options DENY;
        add_header X-Content-Type-Options nosniff;
        ssl_dhparam /etc/nginx/ssl/dhparam.pem;

##### Security enhancements end

修改完成后,检查配置文件语法并重启服务器:

root@VM-ubuntu:/etc/nginx/sites-available# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@VM-ubuntu:/etc/nginx/sites-available# service nginx restart

重新测试网站SSL等级:

image.png | left | 827x401

http 跳转到 https

默认安装完成之后,如果用户打开 http://mydomain 页面会显示错误,不会自动跳转到https。
解决方式是:多曾加一个 server block,监听 80 端口,返回 301 重定向。

server {

    listen 80 default_server;
    listen [::]:80 default_server;
    server_name mydomain.com www.mydomain.com;
    return 301 https://server_namerequest_uri;

}

设置完成之后,同样检查语法,重启Nginx:

root@VM-ubuntu:/etc/nginx/sites-available# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@VM-ubuntu:/etc/nginx/sites-available# service nginx restart

安装 PHP 7.2

首先添加 PPA

sudo apt-get update

sudo apt-get install software-properties-common
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php

sudo apt-get update

然后,安装 PHP7.2

sudo apt-get -y install php7.2-fpm php7.2-common php7.2-mbstring php7.2-xmlrpc php7.2-gd php7.2-xml php7.2-mysql php7.2-cli php7.2-zip php7.2-curl

安装完毕之后配置 php-fpm :

vim /etc/php/7.2/fpm/php.ini

//;cgi.fix_pathinfo=1 改为
cgi.fix_pathinfo=0

安装 MySQL 5.7

输入安装命令:

sudo apt-get install mysql-server

期间需要设置mysql密码
查看安装的版本:

mysql --version

检查MySQL的运行状态:

sudo systemctl status mysql

登录Mysql

$ mysql -u root -p
Enter Password:

在 mysql 执行:

CREATE DATABASE myblog DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

CREATE USER 'blogname' IDENTIFIED BY 'blogpwd';

GRANT ALL PRIVILEGES ON myblog.* TO 'blogname';

FLUSH PRIVILEGES;
EXIT;

MySQL 常用命令(了解)

停止MySQL服务:

sudo systemctl stop mysql

MySQL的启动命令:

sudo systemctl start mysql

MySQL重启命令:

sudo systemctl restart mysql

设置MySQl安全服务(了解)

命令行环境执行:

mysql_secure_installation

设置步骤:
1. 第一步是启用密码验证插件 Y
2. 验证级别:2
3. 用户当前的密码强度是50,可以选择修改密码,此处可以选择忽略。
4. 移除匿名用户:y
5. root账户只允许本地登录:y
6. 移除默认的test数据库:y
7. 重新加载权限表

重新配置 Nginx

vim /etc/nginx/sites-available/default

打开配置文件,配置:

server {
    listen 80;
    listen [::]:80;
    root /var/www/wordpress;

    index index.php index.html index.htm index.nginx-debian.html;
    # 注意我们添加了 index.php
    server_name  example.com www.example.com;

    client_max_body_size 100M;

    location / {
        try_files uri uri/ /index.php?args;             }      location ~ \.php {
         include snippets/fastcgi-php.conf;
         fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
         fastcgi_param SCRIPT_FILENAME document_rootfastcgi_script_name;
         include fastcgi_params;
    }
}

安装 WordPress

下载 WordPress 安装包解压后上传到网站目录(此处可参考我的另一篇文章《腾讯云主机 Ubuntu 系统使用 sftp 上传文件》)。

可以在浏览器中一步步按照指示安装。

也可以复制 wp-config-sample.php 修改名称为 wp-config.php

打开 wp-config.php 文件:

配置数据库连接字符串:

// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', '数据库名称');

/** MySQL数据库用户名 */
define('DB_USER', '登录用户');

/** MySQL数据库密码 */
define('DB_PASSWORD', '登录密码');

/** MySQL主机 */
define('DB_HOST', 'localhost');

/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');

/** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');

另外添加如下配置:

/* 配置 WordPress 文件上传 */
define('FS_METHOD', 'direct');
define('FS_CHMOD_DIR', 0777);
define('FS_CHMOD_FILE', 0777);

设置完成,打开浏览器。

相关链接

Ubuntu 使用 Fish Shell

1. Fish shell安装启动

1.1 Ubuntu 安装 Fish Shell

命令行运行代码:sudo apt-get install fish

1.2 启动fish

命令行输入代码:fish进入Fish Shell环境,退出使用代码:exit

Fish Shell环境如下图:
image.png-10kB

2. Fish shell的特色功能

2.1 命令提示功能:

灰色的部分是提示内容:

image.png-9.5kB

命令和参数都能智能提示:命令未输完前按下Tab键智能提示,并列出可选的命令:

image.png-16.1kB

2.2 自动检查命令是否正确

红色命令错误,蓝色命令正确:

错误命令:

image.png-4.6kB

正确命令:

image.png-4.5kB

2.3 路径有效显示下划线,无效显示红色

有效命令,显示下划线:

image.png-5.3kB

无效命令依然显示红色:

image.png-4.7kB

3. 常用快捷键

  1. 命令补全:→ 或者 Ctrl+F

4. 参考文章:

  1. Fish shell 入门教程

Win10 帮助手册

记录使用 Windows10 过程中遇到的一些问题。此文持续更新!

  1. Win10设置开机启动项:
    • 打开启动文件夹:在运行里输入:shell:startup
    • 把软件的快捷方式放到打开的目录中。
  2. Win10设置资源管理器打开时默认显示此电脑:
    • Win10打开资源管理器默认显示快速访问,修改成我的电脑:查看→选项→常规→打开文件资源管理器时打开设置成:此电脑
  3. Win10锁屏壁纸、桌面壁纸存档路径:
    • 不断更新的锁屏壁纸存放路径:C:\Users\【用户名】\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_【随机码】\LocalState\Assets
    • 默认每个文件是没有后缀名的,添加后缀.jpg就可以查看。
    • 默认桌面壁纸存档路径:C:\Windows\Web
  4. Win10打开控制面板:
    • 打开方式一:直接对Cortana说:打开控制面板
    • 打开方式二:在左下角点击鼠标右键。

最后更新时间:2016-6-11

Ubuntu 下安装oh-my-zsh

默认状况下Termial样式

Ubuntu系统默认状况下的终端样式如下:

Ubuntu default terminal's style

有个知名的神奇:Oh-My-Zsh 可以让终端及美观又实用:

Oh-My-Zsh agnoster theme install powerline font

今天就一步步的记录我安装Oh My Zsh 的过程

安装Oh-My-Zsh

安装Oh-My-Zsh之前必须安装zsh,否则会收到如下提示:

Zsh is not installed! Please install zsh first!

安装zsh:

  1. sudo apt-get install zsh安装zsh
  2. zsh --version确认是否安装成功
  3. sudo chsh -s $(which zsh)设置zsh为默认shell
  4. 注销重新登录

设置完成之后,终端变成如下样式:

ubuntu zsh style

  1. echo $SHELL确认zsh是否是默认SHELL,输出/usr/bin/zsh

安装Oh-My-Zsh

  1. 使用curl方式安装:
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
  1. 默认安装完成Oh-My-Zsh的样式如下:(重启终端后有效)

First install Oh-My-Zsh UI

  1. Oh-My-Zsh的默认配置文件在:~/.zshrc
  2. 编辑~/.zshrc修改主题为:agnoster,效果:

修改:

Oh-My-Zsh agnoster theme configuration

修改后:

Oh-My-Zsh agnoster theme example

修改Oh-My-Zsh agnoster匹配字体

从上图我们可以明显的发现,显示效果中有乱码,这是因为字体没适配。我们需要下载支持Powerline的字体。

  • 下载地址:https://github.com/powerline/fonts
  • 下载完成双击安装

默认Ubuntu 终端使用的是 Ubuntu mono regular字体 13字号,体会成Ubuntu Mono derivative Powerline字体后,效果如下:

Oh-My-Zsh agnoster theme install powerline font

进一步优化

精简 user@hostname:添加export DEFAULT_USER="username"~/.zshrc中,可以隐藏固定的 user@hostname 信息。

hide username and hostname

Gentoo 命令手册

更新Portage树

Portage树存放位置:/usr/portage

从镜像站更新Portage树

root # emerge --sync

从Gentoo的每日Portage树快照更新

root # emerge --webrsync

查询、下载、安装、更新软件

查询软件

标题全部或部分匹配关键词

user $ emerge --search something

查询描述匹配关键字

user $ emerge --searchdesc something

也可以使用

user $ emerge -S something

安装软件

root # emerge --ask dev-something/something

查询某个包没有安装的依赖包

root # emerge --pretend something

软件的二进制包下载位置:/usr/portage/distfiles/

只下载二进制文件,不安装

root # emerge --fetchonly something

卸载软件

root # emerge --unmerge something

如果配置文件被修改过将会保留下来,下次安装直接使用

安装此包时所安装的所有依赖包都会保留下来,如需删除使用如需命令

root # emerge --umerge --depclean something

更新系统

root # emerge --update --ask @world

此命令会展示并询问升级清单,但是不会升级它们的依赖包

已安装软件的清单:/var/lib/portage/world

升级软件及其依赖包(不包含编译及安装时所需的依赖包)使用命令:

root # emerge --update --deep @world

如果同样需要升级编译及安装时的依赖包,使用命令:

root # emerge --update --deep --with-bdeps=y @world

一些系统的安全升级可以一同使用

root # emerge --update --deep --with-bdeps=y --newuse @world

元数据包

删除孤立包的流程:

root # emerge --update --deep --newuse @world

root # emerge --depclean

root # revdep-rebuild

其中revdep-rebuild命令是由app-portage/gentookit包提供,需要提前安装:

root # emerge --ask app-portage/gentookit

Linux 环境 profile 与 bashrc 的区别

Linux系统下经常需要设置环境变量、命令别名等会涉及到/etc/profile~/.profile~/.bashrc文件,这些文件区别不大可,但是越相近越容易混淆。

简单来说他们的区别:

  1. /etc/profile 全集环境变量,对所有用户有效。登入系统时会首先读取这个文件。根据内容会读取/etc/profile.d/etc/inputrc目录中的设定文档。
  2. ~/.profile 可以用来设定用户的路径及环境变量等。只在登陆系统时才会执行一次。

  3. ~/.bashrc 用来设定路径、命令别名等,没事执行shell脚本时都会执行。

设置完成可以通过指令source .bashrc 或者source .profile来使变量生效。可以通过env命令查看系统变量。

Gentoo 安装Git教程

自从看到上篇文章《Archlinux Vs Gentoo》开始,彻底着了Gentoo的道。在一番折腾之后把能换的系统全装了Gentoo,之前的常用软件要一个个的重装。真是生命不止,折腾不休!

本篇主要记录在Gentoo系统上安装git,及基本的配置,主要参考Gentoo wiki Git篇。同时也会介绍怎样设置ssh,让每次的push、pull简单高效。

安装git

安装dev-vcs/git:

root # emerge --ask dev-vcs/git

git基本设置

每个用户必须首先设置用户名及邮箱,例如:

user  git config --global user.name "rqc"   user  git config --global user.email "hi@rqc.im"  

至此,git基本设置已经完成。不过,每次使用git push、git pull等命令时,都需要频繁的输入用户名及密码,如此繁琐完全不符合git的简单高效。建议还是按照以下步骤进行设置,以ssh方式连接git。

ssh方式连接git

  1. 查看本地是否存在ssh密钥:

user $ ls -al ~/.ssh

如果存在删除或直接进行步骤③

  1. 生成ssh密钥:

user $ ssh-keygen -t rsa -C "hi@rqc.im"

  1. 复制 ~/.ssh/id_rsa.pub 文档内容至github或coding账户中。
  2. 测试连通性

user $ ssh -T git@git.coding.net

至此已经完成设置,不过还是要确认远程仓库的地址是否是ssh地址

  1. 查看远程连接地址

user $ git remote -v

如果是https地址,需要通过以下命令更换:

user $ git remote set-url origin git@git.coding.net:rqc/test.git