写在前面:网上出现了各种gitosis配置,总觉得不太完善。这里综合各种文档整理出来一个配置。目前centos7.4可用

一、Git服务端配置
1.安装git

yum install git -y

安装之后顺便配置一下用户信息
git config –global user.name “yourname”
git config –global user.email “your@email.com”

2.创建git用户,并运行git服务

adduser git

I.网上有人说git用户的shell为/usr/bin/git-shell为git用户的登陆shell
使用git-shell可以作为简单的使用,即创建一个仓库,让其他人连接上,这是可以的。
但是设置这个是无法使用gitolite,因为这个shell不支持普通的命令

II.修改git密码
passwd git
#两次输入你的密码

3.安装gitosis
I.gitosis依赖于某些python工具库,所以先安装python工具库
yum install python-setuptools -y
II.下载并安装gitosis
git clone https://github.com/tv42/gitosis.git
cd gitosis
III.安装 我的python版本是2.7.5
sudo python setup.py install
IV.上传管理员公钥到服务器,例如上传到/tmp/id_rsa.pub 初始化gitosis并添加管理员
sudo -H -u git gitosis-init < /tmp/id_rsa.pub
V.权限 需要手工对该仓库中的 post-update 脚本加上可执行权限(我在实际中发现,权限已经是755了,这样的话可以跳过这一步)
sudo chmod 755 /home/git/gitosis-admin.git/hooks/post-update
VI.将gitosis-admin这个特殊的Git仓库克隆到本地中
git clone git@GITSERVER:gitosis-admin.git
其中 GITSERVER为你的服务器IP地址。不需要输入绝对路径,gitosis会自动帮助我们定位仓库基准地址。
这会得到一个名为 gitosis-admin 的工作目录,目录下包括 :
.git/
keydir/ 用户公钥目录
gitosis.conf gitosis配置,用来设置用户、仓库和权限的控制文件

如此就gitosis就安装配置成功了

4.添加新用户
– 将用户的公钥文件 keydir/USER.pub
– 添加他们的项目权限到gitosis.conf文件中

用户权限配置
gitosis.conf中分为三个对象:组、仓库、用户
组中的用户可以按照固定的读写规则访问组中的仓库

例如我们要给仓库project1配置两个组,一个可以读写,一个只读
用户test1,test2可以读写,test3只可以读,可以配置如下

[group mobile]
writable = project1
members = test1 test2

[group mobile_ro]
readonly = project1
members = test3

其中group代表一个组,writable是仓库名,members是此仓库的成员,可以有多个成员,用空格进行分割。
当然keydir要有三个pub文件 test1.pub test2.pub test3.pub

然后提交gitosis-admin项目

5.添加新仓库(*仓库名不要使用_下划线)
– 上面是添加用户并分权。现在是介绍添加新项目

在本地(代码仓库服务器)创建一个仓库,并push到git@localhost:project1.git,gitosis会在/home/git/repositories自动创建test.git这个仓库:
mkdir project1
cd project1
touch README
git init
git remote add origin git@localhost:project1.git
git add .
git commit -am ‘初始化’
git push origin master

此时,添加了权限的用户可以正常克隆代码了,例如:git clone git@192.168.0.181:project1.git

附录:创建公钥和私钥 git bash中 ssh-keygen 一路回车下去

参考另外一篇文章 LINUX实现SSH免密码登录

如果想要自动创建仓库并自动部署到web,参考文章:为GITOLITE自动创建仓库和自动部署网站

gitolite配置

1. 直接在网络脚本目录中找

cd /etc/sysconfig/network-scripts/
ls

可以看到目录中有至少两个 ifcfg-xxx 文件,其中 ifcfg-enpxxx 是我们要找的网卡配置文件。

如果设备上有多个网卡的话,可能会有多个 ifcfg-enpxxx ,后面的 xxx 可能是不同的数字与字母组合,任意选择一个去配置就好了,在上图的情况下,我们要修改的网卡文件就是 ifcfg-enp2s0

2. 通过 ip 命令查找

ip addr show
这是查看 IP 地址的指令,相当于原来的 ifconfig 。

修改网卡配置
不管用哪个方法,都应该能得到网卡的名字 enpxxx ,以上图的 enp2s0 为例做修改:

vi /etc/sysconfig/network-scripts/ifcfg-enp2s0

动态的很好配置

ONBOOT=yes
BOOTPROTO=dhcp

静态的ip为
BOOTPROTO=none

IPADDR=192.168.1.100
GATEWAY=192.168.1.1
NETMASK=255.255.255.0

其如果ping 外网不通,返回类似 unknown host 的字样,那说明还需要配置一下 DNS 地址。

vi /etc/resolv.conf

在文件末尾加入下面这一行内容:

nameserver 8.8.8.8

转载 https://www.aliyun.com/jiaocheng/137913.html

在最近一段时间,公司的架构从php5.6.22升级到了php7.1.12,但是在期间又开发了一套新的框架,但是这个框架需要使用memcache的扩展,当时找到我叫我帮忙安装一下,我心想不就是一条pecl命令安装就可以吗?这么简单就马上答应了。然后安装时就遇到报错了(主要报错如下):

fatal error: ext/standard/php_smart_str.h: No such file or directory
#include “ext/standard/php_smart_str.h”
^
compilation terminated.
make: *** [memcache.lo] Error 1
ERROR: `make’ failed

然后就去翻查了一下资料,pecl好像不支持安装memcache扩展。这样只能找其他办法解决了,在期间也踩了很多坑,后来找到了一个github上的可支持php7的memcache扩展

接下来就是安装步骤了:

  • 拉去memcache扩展

cd /usr/local/src/
git clone https://github.com/websupport-sk/pecl-memcache

  • 编译安装memcache扩展

cd pecl-memcache/
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make && make install

Installing shared extensions:    /usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/

  • 上面已经安装完成memcache扩展,接下来把它加入php.ini中

vim  /etc/php.ini

extension_dir = “/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/”
extension = “memcache.so”

  • 重启php-fpm使配置生效

/etc/init.d/php-fpm reload

一下是php7.2的安装位置

/usr/local/php7.2/bin/phpize

这个是swoole 4.2.9安装命令

./configure –with-php-config=/usr/local/php7.2/bin/php-config –enable-openssl –with-openssl-dir=/usr/local/openssl –enable-sockets –enable-mysqlnd

这个是开发的时候安装debug-log的情况

./configure –with-php-config=/usr/local/php7.2/bin/php-config –enable-openssl –with-openssl-dir=/usr/local/openssl –enable-sockets –enable-mysqlnd –enable-debug-log

–enable-swoole-debug | –enable-debug-log(>=4.2.0) debug是这样开启的
make clean && make && sudo make install

一:问题描述
服务器莫名其妙出现很多sendmail <defunct>进程,
导致的后果:服务器奔溃,tomcat自动关闭。

二:问题查找过程
1.pstree可以看到是crond在守护这三个进程。
2.查找相关资料,结果显示是crond每隔一分钟会调用一次sendmail。
使用ps -ef|grep  进程名称   可以查看进程
三:问题处理
需要阻止crond定时调用sendmail,在etc下找到crontab文件,将MAILTO置为空,即MAILTO=””
,然后reboot重启服务器。
四:处理中遇到的其他问题
defunct:
1、用kill -9也杀不死该进程
2、用killall -9 也杀不死所有的进程
3、该进程下面有一个defunct进程,俗称 “僵尸”进程
4、阿里云面板重启解决

杀死僵尸进程的两种方法:备注下面两种方法本人测试行不通
1.重启服务器
2.杀死父进程
3.如何找到defunct僵尸进程的父进程?很简单,一句命令就够了:ps -ef | grep defunct_process_pid

原文:https://blog.csdn.net/shshjj/article/details/76177542

sendmail defunct 进程重复启动问题