##linux php 服务器环境配置 centos7

###修改ssh登录端口

1、登录服务器,打开sshd_config文件

vim /etc/ssh/sshd_config

2、找到#Port 22,默认是注释掉的,先把前面的#号去掉,再插入一行设置成你想要的端口号,注意不要跟现有端口号重复

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.

Port 22
Port xxxxx

3、保存后退出,执行重启命令

#centos7.0以前
service sshd restart
#centos7.0以及更新
systemctl restart sshd.service

4、如果是阿里云在阿里云平台开放相应端口访问
5、如果开启防火墙iptables

firewall-cmd --zone=public --add-port=80/tcp --permanent 

#查看所有打开的服务或端口
firewall-cmd --list-all
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

5、新开一个终端窗口测试xxxx端口是否可以正常连接服务器,如果成功则将Port 22删除,之所以先设置成两个端口,测试成功后再关闭一个端口,是为了方式在修改conf的过程中,万一出现掉线、断网、误操作等未知情况时候,还能通过另外一个端口连接上去调试以免发生连接不上必须派人去机房,导致问题更加复杂麻烦。

增加登录账号

添加用户,Centos 没有任何交互动作!创建用户完毕后,必须修改密码否则无法登陆

# useradd dev #创建用户 
# passwd dev #修改密码 
更改用户 dev 的密码 。 
新的 密码: 
重新输入新的 密码: 
passwd:所有的身份验证令牌已经成功更新。

# useradd user1
# useradd user2
# useradd user3

###不允许root直接登陆

1、修改相关文件

vi /etc/ssh/sshd_config

SSH执行以上命令,修改sshd_config文件

2、禁止root登陆

查找“#PermitRootLogin yes”,将前面的“#”去掉,短尾“Yes”改为“No”,并保存文件。
3、执行命令 systemctl restart sshd.service 重启 sshd 服务。
###GIT

$ yum install git

生成rsakey

$ssh-keygen -b 2048 -t rsa

连续回车3次

$cat /roor/.ssh/id_rsa.pub
ssh-rsa
AAAAB3NzaC1yc2EfsdafdsfsdgfgfgfdgfdgafkSrxVLC9UDKq27mg5vhfghAaWcgFgllZhfg2DLnGotmeL/08bp6jMW/ekSq1BY1eiouiluiliuliul2Rr84x0bB5YShhpgJwuPbwr/fsdfsdfsdfkiytiliunzdfkuykyuIZgVvgPTzNdN/RDwJMsafsdvgsdsfsdfdsfsdaflozStYcWjrwzYxsroDPBy4zjd0gH5zMYhj+vS4OOAZZ8rtHEfx+sTE0= root@localhost.localdomain

将内容本地另存成id_rsa.pub发给张洪晨
###git服务器配置
将.pub文件附加到此路径下
pubkey路径

~/gitosis-export/keydir
或
/home/git/repositories/gitosis-admin.git/gitosis-export/keydir

****如果遇到放置后无效的情况
1检查该服务器是否有重复的.pub设置文件
2检查 git authorized_keys文件设置是否存在主机设置若存在则手动修复ras文件或者删掉当前主机设置 ,gitosis会自动添加新的设置进去
路径 /home/git/.ssh
###创建web目录

$ mkdir /home/www
$ cd /home/www
$ git clone  ssh://git@repo.xxxx.com:xxxx/xxx.git

###配置apache环境

安装xampp

# wget https://downloadsapachefriends.global.ssl.fastly.net/xampp-files/7.1.7/xampp-linux-x64-7.1.7-0-installer.run
# chmod +x xampp-linux-x64-7.1.7-0-installer.run

配置xampp

# vi /opt/lampp/etc/httpd.conf

如果本机即是负载又是应用服务器,则还需要更改本季apache的服务端口为其他端口,把80端口让给负载均衡服务

开启mysql远端访问

在Linux系统下,开发PHP一般都是LAMP环境,对于开发环境来讲,没有必要花太大精力去单独配置LAMP环境,采用xampp一键安装包是一个很好的方式。在Linux系统上安装xampp的过程这里就不说了,主要讲述下安装完成之后如何访问的问题。

安装完成之后,默认只能在本机访问,如果通过远程浏览器去访问的话,是访问不到的。为了达到外部访问并且通过一些第三方数据库可视化工具(如navicat)连接的目的,需要做以下工作:

1.进入到/opt/lampp/etc/extra/httpd-xampp.conf 中,使用Vim :set nu给 18行后添加 Require all granted代码,保存后退出,重启服

Alias /phpmyadmin "/opt/lampp/phpmyadmin"

# since XAMPP 1.4.3
<Directory "/opt/lampp/phpmyadmin">
    AllowOverride AuthConfig Limit
    Require all granted##修改这里
    ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>

务opt/lampp/lampp restart,这样可以通过外部浏览器访问xampp的配置界面,在配置界面进入phpmyadmin 选项,这时候会显示登录phpmyadmin页面(也可以直接通过http://你的ip/phpmyadmin来访问PHPmyadmin),使用root用户登入,默认密码为空。

*** 如果想直接使用xampp 和 php 等命令 需要将 /opt/lampp:/opt/lampp/bin 添加到环境变量
vi /etc/profile
export PATH=/opt/lampp:/opt/lampp/bin:$PATH

2.修改mysql数据库中User表里面root用户的host字段,从localhost改为%,重启服务,这时候采用navicat等工具就可以远程连接并操作数据库了。

配置主机访问

<Directory "/home/www/xxx.xxx.com">
                        Options FollowSymLinks
                        AllowOverride None
                        Order deny,allow
                        #Allow from all
                        #在apache2.4里要用这个代替Allow from all
                        Require all granted
        </Directory>

###安装memcached服务端

memcached服务端服务端的安装相对简单,对于centos 7 64位的操作系统,使用yum命令来安装就可以了。安装后将它加入开机自启动。
1、安装memcached服务端

* yum install -y memcached

2、启动memcached服务端

/usr/bin/memcached -d -l 127.0.0.1 -p 11211 -m 64 -u root

3、加入开机自启动

vi /etc/rc.d/rc.local

在/etc/rc.d/rc.local,最后面增加下面的代码:

#memcahed
/usr/bin/memcached -d -l 127.0.0.1 -p 11211 -m 64 -u root

这个命令的意思就是,-d 守护进程模式(退出终端窗口之后使程序还在运行),-l 指定IP地址127.0.0.1 ,-p 指定端口号11211,-m 为memcached分配多少内存(单位:M),-u 指定使用哪个用户启动memcached。
注意,如果开机没有启动,请检查你的/etc/rc.d/rc.local有没有执行权限,如果没有执行权限,请用下面的命令增加:

chmod +x /etc/rc.d/rc.local

4、查看memcached服务端是否在运行

ps -ef | grep memcached
###或
pstree -p | grep memcached

如果能够看到存在memcached进程,那就说明我们的 memcached 服务端已经安装成功了。

###安装memcached客户端

1、libmemcached 客户端库的安装
libmemcached 客户端库的安装相当简单,编译安装,下载地址如下:

wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz

这次用的是yum安装,下面是命令:

yum -y install libmemcached-devel

2、为PHP7安装php-memcached扩展
切换到服务器资源下载的目录

# cd /opt/source/

用git下载专门的php7扩展。如果是PHP7,所以一定要使用php-memcached的php7分支,不然装了php-memcached也不能用。

# git clone https://github.com/php-memcached-dev/php-memcached -b php7
# cd php-memcached
# /opt/lampp/bin/phpize #执行下面的命令生成configure文件

阿里云配置的centos7 64位操作系统是没有安装zlib的,所以要安装zlib。如果你已经安装过了,就无需安装了。

yum -y  install zlib-devel
  • 如果不安装zlib,跳过直接执行下一步会报错。错误为:
checking for zlib location... configure: error: memcached support requires ZLIB. Use --with-zlib-dir=<DIR> to specify the prefix where ZLIB headers and library are located
./configure --with-libmemcached-dir=/usr --with-php-config=/opt/lampp/bin/php-config --disable-memcached-sasl
  • 这里要注意的是,如果没有采用yum来安装libmemcached,而是直接下载包来安装的,那么–with-libmemcached-dir上它指定的目录可能会是:/usr/lib/libmemcached或/usr/include/libmemcached,那么在你采用了yum安装了libmemcached后,运行./configure的时候会报错
checking for libmemcached location... configure: error: Unable to find memcached.h under /usr/lib/libmemcached。

如果你使用的是直接下载包来安装libmemcached,那么你就在这里使用–with-libmemcached-dir=/usr/lib/libmemcached。
如果,你使用的是yum安装libmemcached,那么你就在这里使用–with-libmemcached-dir=/usr。

  • 命令执行后,会提示你已经生成的memcached.so可以在/opt/lampp/lib/php/extensions/no-debug-non-zts-20151012/找到。
    在php.ini中添加下面的行,然后重启apache
extension=memcached.so
最后你打开phpinfo就能看到你的memcached的php扩展安装成功了。

### mongodb 安装

#curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.6.tgz tar -zxvf mongodb-linux-x86_64-3.4.6.tgz # 解压

mv mongodb-linux-x86_64-3.4.6/ /usr/local/mongodb # 将解压包拷贝到指定目录

MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:

export PATH=/bin:$PATH

mongodb-install-directory 为你 MongoDB 的安装路径。如本文的 /usr/local/mongodb 。

创建数据库目录

MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建data目录,并在data目录中创建db目录。

以下实例中我们将data目录创建于根目录下(/)。

注意:/data/db 是 MongoDB 默认的启动的数据库路径(--dbpath)。

mkdir -p /home/mongodb/data/db

命令行中运行 MongoDB 服务
我们的数据库目录是 /home/mongodb/data/db
/usr/local/mongodb/bin/mongod -port 27017 --dbpath /home/mongodb/data/db/ --logpath /home/mongodb/data/logs/mongodb.log &
use admin
 switched to db admin
 db.createUser(
 {
 user: “dba”,
 pwd: “dba”,
 roles: [ { role: “userAdminAnyDatabase”, db: “admin” } ]
 }
 )
###node环境
####源地址:https://nodejs.org/zh-cn/download/

#进入或创建安装包源码目录

$cd /opt/source
 $ wget https://nodejs.org/dist/v8.9.4/node-v8.9.4-linux-x64.tar.xz $ xz -d node-v8.9.4-linux-x64.tar.xz
 $ tar -xf node-v8.9.4-linux-x64.tar
 $ mv node-v8.9.4-linux-x64 /usr/local/node
 $ ln -s /usr/local/node/bin/node /usr/local/bin/node
 $ ln -s /usr/local/node/bin/npm /usr/local/bin/npm
 $ node -v
 v8.9.4
####pm2 node监控
安装

npm install -g pm2

配置环境变量

vi /etc/profile

在最后添加

export NODE_HOME=/usr/local/node/bin
export PATH=centos9轻量服务器死机原因查找方法_mongodbPATH

运行

source /etc/profile

####配置sh脚本监控

$ vi /home/www/php_cron/monitorprocess

######监控脚本
```
#!/bin/sh  
#chkconfig: 2345 80 05   
#description: monitorprocess   
#process=('alimq_c.php' 'emp_order_notice.php' 'arrownock_notice.php')

pr='emp_order_notice.php'
echo $pr
ps -fe|grep $pr | grep -v "/bin/sh"|grep -v grep
if [ $? -ne 0 ] ; then  
#/opt/lampp/bin/php "/opt/lampp/xxx/php_cron/$pr" &
#/usr/local/bin/php "/home/www/php_cron/$pr" &
echo -e "$pr startup" #将该行替换成你自己的服务启动命令 
else  
echo -e "$pr already started" #将该行替换成你自己的服务启动命令 
fi  

pr='tcp_8899'
echo $pr
ps -fe|grep $pr | grep -v "/bin/sh"|grep -v grep
if [ $? -ne 0 ] ; then  
node /home/www/node/ybdevice/$pr &
echo -e "$pr startup" #将该行替换成你自己的服务启动命令 
else  
echo -e "$pr already started" #将该行替换成你自己的服务启动命令 
fi 
exit 1
```
####配置cron启动监控脚本
````
crontab -e
* * * * * /bin/bash /home/www/monitorprocess
````

####配置负载均衡服务器(前端负载服务器需要)
```
$ wget http://nginx.org/download/nginx-1.13.8.tar.gz
$ tar -zxvf nginx-1.13.8.tar.gz
$ cd nginx-1.13.8
$ ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream

#配置失败,缺少依赖包,通过yum添加
$ yum install pcre-devel
$ yum install zlib-devel
$ yum -y install openssl-libs #偷懒的办法:yum -y install openssl* 

$ ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream

$ make
$ make install
$ /usr/local/nginx/sbin/nginx -v #查看版本

$ /usr/local/nginx/sbin/nginx #启动
$ /usr/local/nginx/sbin/nginx -s reload #重启启动 

#Nginx的关闭
$ ps -ef|grep nginx
#1. 正常停止  
$ sudo kill -QUIT #主进程号  
#2. 快速停止   
sudo kill -TERM #主进程号  
```