Azure VM添加Public IP (PIP)

在维护azure vm的时候踩过的坑,记录一下。

由于某些业务需要开放大量的端口,直接在portal上一个一个添加endpoint是不可能的,这时候PIP的作用就凸显出来了,原来的机器上我就是这么部署的,直到我修改了hostname重启后就连不上了,这时候我在portal上重启也没用,根据技术支持的建议,我删掉了VM并保留磁盘,重新创建了新的VM,但是新的VM给的IP是VIP,是在防火墙后面的,必须手动去添加白名单端口,于是我试着查找资料,最终总结如下:

首先获取azure订阅文件

https://manage.windowsazure.cn/publishsettings

然后在powershell中导入订阅

Import-AzurePublishSettingsFile –PublishSettingsFile "C:\Windows Azure EnterpriseWilliam.publishsettings"

使用azure cli的asm模式添加PIP

azure login -e AzureChinaCloud -u username -p password //登陆azure
azure config mode asm //切换到服务管理模式
azure network reserved-ip create pipname chinaeast/chinanorth //创建pip

获取现有vm name

azure config mode arm //切换为资源管理模式
azure vm list //获取vm name
azure group list //获取resource-group name

使用powershell向现有VM添加PIP

Get-AzureVM -ServiceName resource-group name -Name vm name | Set-AzurePublicIP -PublicIPName pip name | Update-AzureVM

查看PIP详情

Get-AzureRole -ServiceName resource-group name -Slot Production -InstanceDetails

至此完毕。

解决Mysql无法启动

Mysql有的时候,会莫名丢失sock文件,造成无法启动,查阅了大量的资料,记录一下,方便以后查阅。

mysql.sock丢失

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

首先查看mysql的日志,如果没有开启,去/etc/my.cnf开启

expire_logs_days = 10
log_error = /var/log/mysql/error.log

然后重启mysql,这时候错误日志已经生成了,查看日志一般都可以解决。

一般情况下去 /etc/mysql/ 删除my.cnf 重启就可以了

 

利用aws s3快速迁移网站数据

为了满足日益增大的需求,特意将图床服务独立出来,放在一台新的机器上,由于数据打包出来比较大(5.6G),此处需要一个合理方案无错迁移文件到新机器上,我采用old server => aws s3 => new server 同步的方式
首先在两台服务器上安装aws cli

apt-get install python-pip
pip install awscli

以下将新旧服务器分别命名为Old和New
在Old执行 aws configure配置AWS S3的KEY,KEY从IAM处配置获取(此处不再描述如何获取)
然后cd到图床的目录,执行

aws s3 cp images s3://bucket/folder --recursive

将执行多文件递归上传
然后在New上同样配置好AWS S3的KEY,cd到想要的目录,然后

aws s3 cp s3://bucket/folder images --recursive

同步完成,再配置一下.htaccess文件,迁移完毕。

Varnish和Nginx配置高效缓存服务器并支持SSL

1.官方源安装varnish

apt-get install apt-transport-https
curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add -
echo "deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.1" \
     >> /etc/apt/sources.list.d/varnish-cache.list
apt-get update
apt-get install varnish

2.修改varnish默认端口

sudo vi /etc/default/varnish

3.安装nginx

sudo apt-get install nginx

4.配置反向代理配置

server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;

location / {
proxy_pass http://127.0.0.1:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header Host $host;
} }

sudo service nginx restart