linux
# 什么是supervisord

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。

# 怎么安装

CentOS: yum install supervisor

其它:

1:easy_install 安装:
easy_install supervisor

2:pip 安装:
pip install supervisor

3:Debian / Ubuntu可以直接通过apt安装:
apt-get install supervisor

# 如何配置

用yum安装的,需要看看conf里的include
[include]
files = supervisord.d/*.ini

在 supervisord.d 目录里创建 task.ini 即可,比如:

[program:daemon]
directory=/Data/webapps/aslibra.com/
command=/usr/bin/php index.php messages daemon
autostart=true
autorestart=true
stderr_logfile=/Data/logs/daemon_stderr.log
stdout_logfile=/Data/logs/daemon_stdout.log
user=www


directory 执行command之前切换到此目录
command 执行命令
autostart 自动启动
autorestart 自动重启
user 执行的用户

# 服务管理

记得把服务做成自动启动的
service supervisord restart
chkconfig supervisord on


# 服务监控

conf 文件有一个选项开启,可以有网页控制后台
;[inet_http_server]         ; inet (TCP) server disabled by default
;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)

解开注释即可,重启后,我们可以访问到,但不是公开的,所以可以用ssh转换一下
比如:
ssh root@your-server.com -L9001:127.0.0.1:9001
那你就可以访问 127.0.0.1:9001 就相当于在服务器访问 127.0.0.1:9001 了

# 详细配置参数参考

https://www.cnblogs.com/zhoujinyi/p/6073705.html
Tags: ,
Docker是个伟大的发明,以前,运维的理念是软件层次的,现在变成了功能层次的。

以前要开一个网站服务,需要安装php/mysql/nginx,自己编译,需要花时间收集下载地址或者文件,记录编译参数,做成批处理脚本减轻重复操作。好点的方式是有人做了个合集,比如lnmp的包,这个也让人省心不少,还有一些小激动,运行一个命令就安装好了。

如今,docker有各种各样的image,都配置好了软件,需要nginx,下载个nginx的image即可,运行就有,就两句话解决了。
需要php支持,安装一个php的image,一个个软件都变成了功能,自己组装,而且可以快速在另外一台服务器开启,环境是一模一样的,更加重要的是,每个功能都是独立容器运行的,不会威胁到系统安全,这个是非常让运维放心了。

比如,我们手机需要科学上网,几句话就解决了,下面在阿里云安装这个:

第一步,安装并运行docker

yum install docker


第二步,下载ikeV2的image

docker pull gaomd/ikev2-vpn-server


如果提示:
Using default tag: latest
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
可以运行 service docker start

第三步,运行

docker run -d --name ikev2-vpn-server --restart=always --privileged -p 500:500/udp -p 4500:4500/udp gaomd/ikev2-vpn-server


第四步,给iphone生成配置文件,换成自己的域名

docker run -i -t --rm --volumes-from ikev2-vpn-server -e "HOST=vpn.example.com" gaomd/ikev2-vpn-server generate-mobileconfig > ikev2-vpn-iphone.mobileconfig


第五步,把文件放网站,下载安装即可

iPhone里显示的名字比较古怪,需要自定义名字,可以修改mobileconfig里的定义 UserDefinedName,然后再下载
如果连接不上,那可能是阿里云的安全组,编辑vps的安全组,把500和4500的udp开放了即可

天哪,繁琐的IKEV2的安装就变成了几句话,非常的便利。
Tags: ,
本来定义好letsencrypt每个月更新的,结果发现并没有完成更新。
手动更新,发现是网络故障,无法更新软件,导致证书无法正常更新。

引用
  File "/opt/eff.org/certbot/venv/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/response.py", line 246, in _error_catcher
    raise ReadTimeoutError(self._pool, None, 'Read timed out.')
ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out.


这只能翻了,有socks5的访问可以用,但命令行只有http代理,所以需要转换一下:

yum install privoxy

安装好后,增加配置
vi /etc/privoxy/config

增加两行:
listen-address  10.0.0.3:8118
forward-socks5   /               127.0.0.1:7070 .


service privoxy restart

然后要记得开启socks5服务
命令行单独使用,可以在访问网络前,执行这个

http_proxy=10.0.0.3:8118
https_proxy=10.0.0.3:8118
export http_proxy https_proxy


正常了
引用
Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起,主要的目的也是为了推进网站从HTTP向HTTPS过度的进程,目前已经有越来越多的商家加入和赞助支持。


对于个人网站或者要求一般的网站都适合用Let's Encrypt的免费证书,安装简单。

主要步骤:
1 安装环境
2 申请证书
3 配置nginx
4 定期更新证书

1 安装环境

yum -y install git python
cd /Data/apps/
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto —-help


正常来说,运行最后一个没有出错就算没有问题啦

2 申请证书

首先你需要在你的网站根目录生成一个检查授权的目录,然后命令行直接申请证书
mkdir -p /Data/webapps/www.aslibra.com/.well-known/acme-challenge


配置nginx可以通过80端口访问到
server
{
    listen       80;
    server_name  www.aslibra.com aslibra.com test.aslibra.com;
    location /.well-known {
        root   /Data/webapps/www.aslibra.com/;
    }
    location / {
        rewrite ^/(.*)$ https://www.aslibra.com/$1 redirect;
    }
}


申请证书:
/Data/apps/letsencrypt/letsencrypt-auto certonly \
--webroot --email youremail@gmail.com \
-w /Data/webapps/www.aslibra.com \
-d www.aslibra.com \
-d aslibra.com \
-d test.aslibra.com

email是用来通知你证书过期的提醒
-d是同一个网站的各个域名,可以一起申请

申请成功会有提示:
引用
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/www.aslibra.com/fullchain.pem. Your cert
   will expire on 2017-09-16. To obtain a new or tweaked version of
   this certificate in the future, simply run letsencrypt-auto again.
   To non-interactively renew *all* of your certificates, run
   "letsencrypt-auto renew"
- If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le


3 配置nginx

server
{
    listen 443;
    ssl on;

    ssl_certificate /etc/letsencrypt/live/www.aslibra.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.aslibra.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/www.aslibra.com/chain.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 60m;

    server_name  www.aslibra.com aslibra.com test.aslibra.com;

#...


4 定期更新证书

创建一个脚本:
/Data/scripts/letsencrypt-renew.sh

#!/bin/bash
/Data/apps/letsencrypt/letsencrypt-auto renew
/Data/apps/nginx/sbin/nginx -s reload


定时任务加上:
0 23 28 * * root /Data/scripts/letsencrypt-renew.sh >>/Data/logs/letsencrypt.log


每个月28号运行一次,因为证书有效期是2个月,所以一个月更新一次即可
1 安装git

yum -y install git

2 建立git用户

useradd -s /usr/bin/git-shell git

3 创建证书登录,方便提交版本

cd /home/git/
mkdir .ssh
vi .ssh/authorized_keys
# 把本地用户的公钥加进来
chown git:git -R .ssh
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

4 创建仓库

mkdir test.git
cd test.git/
git --bare init

chown git:git -R test.git

5 本地下载并提交

aquan:git hqlulu$ git clone git@server.domain:/path/to/test.git
Cloning into 'test'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
aquan:git hqlulu$ cd test/
aquan:test hqlulu$ vi a.txt
aquan:test hqlulu$ git add a.txt
aquan:test hqlulu$ git commit -m test
[master (root-commit) 14d99af] test
1 file changed, 1 insertion(+)
create mode 100644 a.txt
aquan:test hqlulu$ git push
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'git@server.domain:/path/to/test.git'
aquan:test hqlulu$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 198 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To server.domain:/path/to/test.git
* [new branch]      master -> master


6 备份本地库到远程并且添加远程库同步

#复制本地库镜像,比如这个Xcode项目刚开始只是本地git库
git clone --mirror ~/Xcode/ABC/
Cloning into bare repository 'ABC.git'...
done.

#同步文件到服务器,也可以是别的方式
rsync -av ABC.git server.domain::DIR/

#回到本地项目,添加远程库
git remote add origin git@server.domain:/path/to/ABC.git

Tags: ,
分页: 1/33 第一页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐