格式化移动硬盘
- 首先使用
fdisk -l
查看当前磁盘情况,此处/dev/sdb是外接的移动硬盘 - 使用命令
fdisk /dev/sdb
开始执行分区 - 开机自动挂载,
nano /etc/fstab
添加一行/dev/sdb1 /home/freeman/homecloud/ ext4 defaults 0 0
修改主机名
修改以下两个文件中的的新的主机名,保存并重启。
sudo nano /etc/hostname
sudo nano /etc/hosts
添加命令别名
添加一行新的别名定义到文件~/.bashrc
,比如:alias l='ls -l'
,保存并重新登录。
安装sshd服务
-
sudo apt-get install openssh-server
, - 打开root账户ssh设置
sudo nano /etc/ssh/ssd_config
设置PermitRootLogin yes
安装编译环境
sudo apt-get install build_essential gcc g++
安装docker环境
- 安装指南
- 添加你的用户到docker用户组,避免使用sudo,
sudo usermod -aG docker $user
- 因为国内访问hub.docker.com速度非常慢,可以添加国内的镜像站点,目前有阿里云和daocloud提供,打开配置文件
/etc/default/docker
,修改设置如下:DOCKER_OPTS="--registry-mirror=https://xvfa2uzp.mirror.aliyuncs.com"
, 完成后重启服务sudo service docker restart
,使用查找命令验证修改后的速度docker search ubuntu
- 如何开机自动启动某个容器?将命令
docker start containername
添加到/etc/rc.local/
文件中。
安装python环境
- 设置pypi国内镜像,创建或编辑文件
~/.pip/pip.conf
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
安装nodejs环境
官方指南
将npm registry设置为淘宝npm源,全局安装n模块来管理和更新node和npm。
安装dotnet环境
安装 gitlab-ce服务
- docker 方式运行gitlab-ce服务,参见官方说明文档
安装letsencrypt服务
git clone https://github.com/kshcherban/acme-nginx
cd acme-nginx
python setup.py install
sudo acme-nginx -d domain.com -d www.domain.com
定时任务,每个月1日更新证书,因为更新证书需要root权限,所以需要使用root账户下的crontab
sudo crontab -e
0 0 1 * * acme-nginx -d domain.com -d www.domain.com
安装nginx
- 直接安装
sudo apt-get install nginx
安装MySQL 5.7
- docker方式安装
docker run -d \
--name mysql \
-p 3306:3306 \
-v /home/freeman/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=password \
mysql:5.7.14 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
打开root用户远程访问能力
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'; flush privileges;
修改配置文件
/etc/mysql/mysql.conf.d/mysqld.cnf
注释掉行bind-address = 127.0.0.1
使用speedtest-cli测试网速
speedtest-cli是一个用Python编写的轻量级Linux命令行工具,在Python2.4至3.4版本下均可运行。它基于Speedtest.net的基础架构来测量网络的上/下行速率。安装speedtest-cli很简单,只需要下载其Python脚本文件。
wget https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py;
chmod a+rx speedtest_cli.py;
sudo mv speedtest_cli.py /usr/local/bin/speedtest-cli;
sudo chown root:root /usr/local/bin/speedtest-cli;
然后就可以在命令行运行测试:speedtest-cli
,下图是一个样例测试结果,上行速度就代表你的ECS配置带宽。
安装配置HAProxy
访问 Debian/Ubuntu HAProxy packages 选择你需要安装的版本进行安装。以下以ubutntu 14.04 安装HAProxy 1.6为例,安装完成后执行 haproxy -v
命令查看版本。
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:vbernat/haproxy-1.6
sudo apt-get update
sudo apt-get install haproxy
启动和停止
sudo service haproxy start
启动服务sudo service haproxy stop
停止服务sudo service haproxy restart
重启服务配置WEB管理
打开配置文件
etc/haproxy/haproxy.cfg
,添加如下配置,打开WEB管理功能。
# 统计页面配置
listen admin_stats
bind *:1080
stats enable
stats uri /admin?stats
stats auth username:password
stats hide-version
stats admin if TRUE
stats refresh 30s
- 访问:http://127.0.0.1:1080/admin?stats打开如下WEB管理界面
使用公钥登录Bitbucket.org
首先使用命令ssh-keygen
(一路默认)在客户机生成秘钥,生成的公钥(id_rsa.pub)和私钥(id_rsa)保存在家目录下的.ssh
目录下,在bitbucket.org管理界面上新建SSH Key
,并打开公钥文件,将内容复制到该新建的SSH Key
上并保存。客户端通过 git clone git@bitbucket.org:freemanke/repo.git
等命令即可操作,不再需要输入用户名和密码。
运行ASP.NET Core应用时无法输出日志
在Ubuntu上运行ASP.NET Core应用时,需要先切换到应用所在根目录,否则因为系统默认使用终端当前目录作为工作目录,而无法找到配置和引用文件而发生错误。如下图root目录为终端当前目录而不是应用所在目录。
使用supervisor后台运行.NET Core应用
- 使用命令
sudo apt-get install supervisor
安装supervisor - 在supervisor配置目录下创建应用对应的配置文件
sudo touch /etc/supervisor/conf.d/yuehuapi.conf
, 编辑配置文件如下
[program:yuehuapi]
command=dotnet Fhit.Yuehu.Api.dll #要执行的命令directory=/home/freeman/fhit.yuehu.api/publish/ #命令执行的目录environment=ASPNETCORE__ENVIRONMENT=Production #环境变量
user=www-data #进程执行的用户身份
stopsignal=INT
autostart=true #是否自动启动
autorestart=true #是否自动重启
startsecs=1 #自动重启间隔
stderr_logfile=/var/log/yuehuapi.err.log #标准错误日志stdout_logfile=/var/log/yuehuapi.out.log #标准输出日志
- 开启supervisor WEB管理界面,
sudo nano /etc/supervisor/supervisord.conf
编辑supervisor服务配置文件,添加[inet_http_server]
配置端如下:
- 执行命令
sudo service suupervisor restart
重启服务 - 通过浏览地址:http://localhost:7002/ 查看当前应用状态
配置Nginx负载均衡
Ningx负载均衡官方算法包括
轮询 - 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。轮询模式会带来Session无法保持的问题,可以通过将Session保存到Redis缓存服务器上来解决Session的保持问题。
基于权重的轮询 - 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,如果后端服务器down掉,能自动剔除。
ip_hash - 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session不能跨服务器的问题。如果后端服务器down掉,要手工down掉。
服务器参数
down - 表示单前的server暂时不参与负载
weight - 权重,默认为1。 weight越大,负载的权重就越大。
max_fails - 允许请求失败的次数默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout - max_fails次失败后,暂停的时间
backup - 备用服务器,其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
轮询配置实例
upstream yuehuapi {
server 192.168.0.11:3723 max_fails=3 fail_timeout=30s;
server 192.168.0.12:3723 max_fails=3 fail_timeout=30s;
server 192.168.0.13:3723 max_fails=3 fail_timeout=30s;
}
server
{
listen 80;
server_name domain.com;
location / {
proxy_pass http://yuehuapi;
}
- 基于权重的轮询配置实例
upstream yuehuapi {
server 192.168.0.11:3723 weight=10;
server 192.168.0.12:3723 weight=20 down;
server 192.168.0.13:3723 weight=30;
server 192.168.0.14:3723 weight=50 backup;
server 192.168.0.15:3723 weight=40 max_fails=3 fail_timeout=30s;
}
server
{
listen 80;
server_name domain.com;
location / {
proxy_pass http://yuehuapi;
}
- ip_hash配置实例
upstream yuehuapi {
ip_hash;
server 192.168.0.11:3723;
server 192.168.0.12:3723;
}
server
{
listen 80;
server_name domain.com;
location / {
proxy_pass http://yuehuapi;
}