阶段巨献 - centos+php-fpm+mariaDB+svn,配置linux的php网站运行环境。

前端之家收集整理的这篇文章主要介绍了阶段巨献 - centos+php-fpm+mariaDB+svn,配置linux的php网站运行环境。前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

对于一个小项目和小公司而言,用PHP作为开发语言是很理智和聪明的选择,但是只要开发团队超过一个人,并且项目需要长时间持续开发下去,那么,一个相对稳定的运行环境及协同工作环境是必须的。
最近刚好转型做这些,下面的配置是一个真实项目的配置,相信会对大家有参考意义的。好了,那么我们开始。

centos7的安装

这个安装就不提了,在网上查一下u盘 centos7 安装什么的就好了,当然,服务器有cd的话也可以用cd安装。

提示,安装完centos7以后你可以选择安装一个桌面—虽然以后大多数不直接操作centos但是看着也爽,然后必须推荐使用ssh远程登陆centos进行操作—-因为你可以随时copy各种指令到命令行里面执行—当你在windows上面看着一大堆URL地址安装时候,你就会明白使用ssh是多么明智的

EPEL和REMI的安装及Nginx配置

第三方源的配置安装

rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

添加Nginx的源及安装:

vi /etc/yum.repos.d/Nginx.repo

打开以后复制下面内容
添加下面内容,手打可以,直接黏贴也可以。)

[Nginx]
name=Nginx repo
baseurl=http://Nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

然后请保持退出—不会的话请查一查在linux下面如何使用vi,如何保存和退出

安装Nginx

yum install Nginx -y

安装完以后,请启动Nginx和设置开机启动:

systemctl start Nginx systemctl enable Nginx 

好了,这时候安装好了,我们—还不能看到效果,因为centos7有firewall和selinux两大安全措施,会将端口给屏蔽掉的。
首先开启80端口,永远开启:

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

然后,请关闭selinux:

好了,现在来试试能不能访问Nginx

http://192.168.1.100:80/

该地址取决于你自己对服务器的ip的定制

Nginx配置成功。

安装MariaDB 5.5

yum --enablerepo=remi,remi-PHP56 install mariadb-server mariadb -y

备注

如果出现下载失败问题,用如下解决方法

1
下载包

wget http://mirrors.163.com/centos/7.1.1503/os/x86_64/Packages/mariadb-server-5.5.41-2.el7_0.x86_64.rpm

提示中的包

2

yum --enablerepo=remi,remi-PHP56 install mariadb -y

先安装可以用。
3

yum install perl-DBD-MysqL

安装依赖包
4

rpm -Uvh mariadb-server-5.5.41-2.el7_0.x86_64.rpm

安装无法下载的包。

备注完毕

启动和设置开机启动

systemctl start mariadb systemctl enable mariadb 

设置数据库的安全

/usr/bin/MysqL_secure_installation

执行上面脚本,根据提示我们需要设置一遍数据库的安全,删除匿名用户等。
额外补充:
补充远程机器可以访问该数据库的设置方式:
1 设定3306端口开放—数据库默认端口为3306,除非你改了,否则应该开发端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

2 在mariaDB里面设定开发远程链接
登陆到mariaDB,使用ssh或者直接在centos上面操作:
输入命令: MysqL -u root -p
然后需要输入密码:
设定所有ip都可以访问:–假如想设定某个ip访问那么请查文档:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

其中123456为密码,请替换你的密码。

验证数据库是否正常安装,是否可以远程访问:
我用的是navicat,大家随意就好,请支持正版。

成功访问,数据库配置完毕。

安装PHP-fpm 5.6

yum --enablerepo=remi,remi-PHP56 install PHP-fpm PHP-common PHP-MysqL PHP-opcache PHP-pear PHP-gd PHP-devel PHP-mbstring PHP-mcrypt PHP-cli PHP-pdoPHP-redis PHP-pecl-memcache PHP-bcmath PHP-xml -y

如果少包查找:

http://pkgs.org/download/libmcrypt.so.4()(64bit)

启动和开机启动

systemctl start PHP-fpm
systemctl enable PHP-fpm

Redis memcache扩展

yum install redis memcached -y

安装Imagick及扩展

蛮简单的,一次性上全部代码

#imagick需要PHP >= 5.1.3 and ImageMagick >= 6.2.4
yum install -y PHP-pear gcc
yum install -y ImageMagick ImageMagick-devel
pecl install imagick
#开放selinux权限
chcon -t  texrel_shlib_t /usr/lib64/PHP/modules/imagick.so
#PHP配置,加载imagick模块
echo "extension=imagick.so"> /etc/PHP.d/imagick.ini

安装分词扩展scws
1. 取得 scws-1.2.2 的代码

wget http://www.xunsearch.com/scws/down/scws-1.2.2.tar.bz2
  1. 解开压缩包
  2. @H_502_444@
    tar xvjf scws-1.2.2.tar.bz2
    cd scws-1.2.2
    ./configure --prefix=/usr/local/scws
    
    make &&make install

    可能遇到的问题:

    找不到c编译器

    [root@localhost scws-1.2.2]# ./configure --prefix=/usr/local/scws checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking for gcc... no checking for cc... no checking for cl.exe... no configure: error: in `/root/scws-1.2.2': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details 

    解决方案:

    yum install gcc
    #安装gcc。

    bzip2 没有

    tar (child): lbzip2: Cannot exec: No such file or directory
    tar (child): Error is not recoverable: exiting now
    tar: Child returned status 2
    tar: Error is not recoverable: exiting now

    解决方案:

    #安装bzip2
    yum install bzip2 -y

    检查有没有安装成功:

    Ls /usr/local/scws

    看看有没有东西。。后面的路径其实是prefix指定的路径。

    配置scws成为PHP的扩展

    1) 进入源码目录的 PHPext/ 目录

    cd ~/scws-1.2.2

    –即 scws-1.2.2下面 还有一个PHPext目录。

    2) 执行 PHPize (在PHP安装目录的bin/目录下)

    PHPize

    3) 执行

    ./configure --with-scws=/usr/local/scws

    PHP 安装在特殊目录 $PHP_prefix,则请在 configure 后加上 --with-PHP-config=$PHP_prefix/bin/PHP-config

    4) 执行 make 然后用 root 身份执行 make install

    PHP.ini中增加

    vi /etc/PHP.d/scws.ini
    
    extension = scws.so
    [scws]
    scws.default.charset = utf-8
    scws.default.fpath = /usr/local/scws/etc

    更新字典

    cd /usr/local/scws/etc
    wget http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2
    tar xvjf scws-dict-chs-utf8.tar.bz2

    网络工具安装

    yum install net-tools

    SELinux配置

    查看SELinux状态:
    1、/usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态
    SELinux status:                 enabled
    2、getenforce                 ##也可以用这个命令检查
    关闭SELinux:
    1、临时关闭(不用重启机器):
    setenforce 0                  ##设置SELinux 成为permissive模式
                                  ##setenforce 1 设置SELinux 成为enforcing模式
    2修改配置文件需要重启机器:
    修改/etc/selinux/config 文件
    将SELINUX=enforcing改为SELINUX=disabled
    重启机器即可

    Nginx配置及文件上传限制设定

    到这里我们已经安装完毕Nginx,mariadb,以及PHP-fpm,我们需要对Nginx进行配置
    A - 配置/etc/Nginx/Nginx.conf文件
    输入命令: vi /etc/Nginx/Nginx.conf

    user  Nginx;
    worker_processes  1;

    worker_processes表示当前VPS/服务器的cpu核心数,我们可以通过
    grep ^processor /proc/cpuinfo | wc -l
    检测和修改
    B - 检查启动sendfile,tcp_nopush,gzip,以及添加INDEX.PHP文件

    sendfile        on;
    tcp_nopush     on;
    #keepalive_timeout 0;
    keepalive_timeout  65;
    gzip  on;
    #index   index.PHP index.html index.htm;---请注意,index不应该在Nginx.conf下面配置的,应该在子项目子服务的server的location下面配置,这里就不要设定index了。

    修改PHP上传文件大小限制的方法

    --先打开PHP配置文件:vi /etc/PHP.ini
    max_execution_time = 0
    post_max_size = 150M
    upload_max_filesize = 100M
    memory_limit = 1024

    Nginx修改上传文件大小限制

    client_max_body_size    1000m;
    --在Nginx后面加上面的设定。注意,需要在http的括号里面设定的,否则会出错。 

    NginxPHP-fpm的配置及运行正式的PHP网站

    上面的过程中我们只是单独配置了数据库,服务器和PHP而已,那么,centos下面的Nginx怎么样才能运行PHP文件呢?

    下面我们以site1作为例子来说明,首先,新建一个Nginx配置文件,作为站点site1的配置文件

    #####################################
    #####################################
    #####################################
    server {
    listen 8001;
    server_name 120.25.213.167 www.site1.com *.site1.com;
    root   "/var/www/sites/site1";
    #这里是网站根目录,写上自己的目录吧。
    # access_log /var/log/Nginx/access/site1/Nginx_access.log;
    error_log /var/log/Nginx/error/site1/Nginx_error.log;
    index index.PHP;
    location / {
    }
        error_page 404  /;
    location ~ \.PHP$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.PHP;
    
    fastcgi_param CONFIG_TYPE product;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    #规定脚本的路径及名字
    include fastcgi_params;
    }
        location ~* \.(?:ico|css|js|gif|jpeg|png)$ {
    expires 30d;
    access_log        off;
    log_not_found     off;
    add_header Pragma public;
    add_header Cache-Control "public";
    }
        location /console {
    fastcgi_pass 127.0.0.1:9000;
    include fastcgi_params;
    }
        set $flag 0;
    if ($uri !~ ^/console/){
    set $flag "${flag}1";
    }
        if (!-e $request_filename){
    set $flag "${flag}2";
    }
        if ($flag = "012"){
    rewrite ^/(.*)$ /index.PHP last;
    }
    }

    上面的配置文件说明了几个要点,就是这个站点监听的端口是8001,网站目录是/var/www/sites/site1 错误日志文件在:/var/log/Nginx/error/site1/Nginx_error.log fastcgi调用的地址和端口是:fastcgi_pass 127.0.0.1:9000 好了,那么我们要做一些准备工作:
    1 开放9000端口及8001端口;
    2 新建错误日志目录及文件
    3 新建网站根目录及放置一个测试用的PHP文件

    下面是步骤:

    #1 --开放端口
    firewall-cmd --zone=public --add-port=8001/tcp --permanent
    
    firewall-cmd --zone=public --add-port=9000/tcp --permanent
    firewall-cmd --reload
    #2 --建立必要的目录
    mkdir -p  /var/log/Nginx/error/site1
    #3 --添加日志文件
    vi  /var/log/Nginx/error/site1/Nginx_error.log
    ####解释:vi /var/log/Nginx/error/site1/Nginx_error.log
    ####请按esc,然后填:wq保存并退出--这是vi命令的基本用法
    #4 新建网站根目录
    mkdir -p /var/www/sites/site1
    ##添加PHP文件并保存--内容看下面的例子。
    vi /var/www/sites/site1/index.PHP

    PHP文件内容–例子

    <!DOCTYPE html>
    <html>
    <body>
    
    <h1>我的第一张 PHP 页面</h1>
    
    <?PHP echo "Hello World!"; ?>
    
    </body>
    </html>

    好了,访问一下:

    PHPNginx成功配置。

    SVN安装及基本配置

    centos(我这里使用的是CentOS7)下yum命令即可方便的完成安装

    $ sudo yum install subversion

    测试安装是否成功:

    $ svnserve --version

    开放端口,注意,subversion的默认端口为3690,如果没有打开会报错:

    firewall-cmd --zone=public --add-port=3690/tcp --permanent
    firewall-cmd --reload

    服务启动及相关:

    $ sudo systemctl enable svnserve.service      #注意:根目录必须是/var/svn 这样才能设置成功!!
    #设置开机启动后就可以按下面的方式开启或停止服务了
    $ sudo systemctl start svnserve.service
    $ sudo systemctl stop svnserve.service
    $ sudo systemctl status svnserve.service#查看svn服务的状态。

    请运行启动svn服务及开机启动命令。下面我们将尝试新建一个代码仓库,然后用客户端访问。
    注意:svn仓库的地址默认规则是:

    svn://你的机器ip地址/仓库名称

    svn基本应用–创建一个代码仓库

    创建svn数据目录(subversion默认是把/var/svn作为数据根目录的,开机启动默认也是从这里):

    $ sudo mkdir -p /var/svn

    假设我们现在创建的代码仓库名称是test_normal那么我们需要这样创建:

    ##创建目录
    sudo mkdir  -p /var/svn/test_normal
    ##创建仓库
    sudo svnadmin create  /var/svn/test_normal

    备注,删除版本库如此即可:

    rm -rf /var/svn/test_normal

    编辑权限等等。
    1 每个版本库创建之后都会生成svnserve.conf主要配置文件。编辑它:

    sudo vim /var/svn/test_normal/conf/svnserve.conf

    编辑示例—引用网上的:

    [general]
    anon-access = none;
     #控制非鉴权用户访问版本库的权限
    auth-access = write;
    #控制鉴权用户访问版本库的权限
    password-db = passwd;
    #指定用户名口令文件
    authz-db = authz;
    #指定权限配置文件
    realm = wangwa;
    #指定版本库的认证域,即在登录提示的认证域名称

    实际编辑:

    不要吐槽颜色什么了,这是vim自带样式。

    编辑svn用户配置文件

    sudo vim /var/svn/test_normal/conf/passwd

    网上引用例子:

    [users]
    admin = admin #用户,密码
    fuhd = fuhd #用户,密码
    test = test #用户,密码

    实际编辑:

    编辑svn权限控制配置文件

    sudo vim /var/svn/test_normal/conf/authz

    网上引用例子:

    [groups]
    admin = admin         #admin为用户组,等号之后的admin为用户test = fuhd,test
    
    [wangwa:/]                #表示根目录(/var/svn/wangwa),wangwa: 对应前面配置的realm = wangwa
    @admin = rw            #表示admin组对根目录有读写权限,r为读,w为写
    
    [wangwa:/test]         #表示test目录(/var/svn/wangwa/test)
    @test = rw                #表示test组对test目录有读写权限

    实际示例:

    重启svn服务:

    sudo systemctl restart svnserve

    然后在客户端链接该目录–我用的是tortoiseSVN–大家随意就好。



    好了,成功导出项目。svn仓库搭建成功。

    高阶应用-搭建svn的开发环境-PHP+Nginx

    我们的目标是搭建开发还,包含了项目管理,还有上传和更新文件以后会在服务器上面显示出来的开发环境。好了,下面就是这一个步骤。

    我们以一个新的项目,叫test_high来举例。

    分几个步骤完成这个过程。
    1 创建代码仓库
    2 设定钩子–post-commit达到自动同步到网站目录的效果
    3 设定Nginx的子网站配置文件,开放相关端口
    4 测试是否成功

    第一步,先设定基本的仓库,然后重启svn服务,其后有示意图

    sudo mkdir -p /var/svn/test_high
    sudo svnadmin create /var/svn/test_high
    sudo vim /var/svn/test_high/conf/svnserve.conf
    sudo vim /var/svn/test_high/conf/passwd
    sudo vim /var/svn/test_high/conf/authz
    sudo systemctl restart svnserve



    下面就是规定我们网站的目录,每次更新svn之后,我们需要同步更新的网站目录,这里假设网站目录为

    /usr/local/webroot/test_high
    mkdir -p /usr/local/webroot/test_hight
    svn checkout svn://localhost/test_hight /usr/local/webroot/test_hight --username testuser --password abc --non-interactive

    上面的命令意思为:
    创建对应目录,checkout到网站存放目录。

    取出成功。

    接下来我们要修改hook脚本的post commit,
    首先先将post-coomit.tmpl复制一份成为post-commit,
    svn每次更新完以后将会执行post-commit脚本
    然后给脚本执行权限,接下来将脚本内容添加进去–就是下面的脚本例子了。
    然后保存,再重启svn服务,然后测试是否成功。

    cd /var/svn/test_hight/hooks
    cp post-commit.tmpl post-commit
    chmod +x post-commit
    vi post-commit
    #!/bin/sh 
    # 库的路径
    REPOS="$1"
    # 新提交的版本号
    REV="$2"
    
    WEB=/usr/local/webroot/test_hight
    SVN=/usr/bin/svn
    LOG=/usr/local/webroot/auto_svn.log
    
    
    export LC_ALL=zh_CN.UTF-8
    
    changed=$(svnlook changed -r $REV $REPOS)
    log=$(svnlook log -r $REV $REPOS)
    echo "now the changed is:$changed">>$LOG
    
    n=$'\n'
    $SVN update $WEB  --username testuser --password abc --non-interactive #更新到我们的目标网站目录。

    好了,我们重启一下svn服务,然后在客户端checkout项目,然后添加一个文件上去看看。

    步骤如下–直接用图片了:
    checkout项目,输入账号,新建文件,输入内容,submit文件内容。。。

    脚本内容如下–已经出现过的:

    <!DOCTYPE html>
    <html>
    <body>
    
    <h1>我的第一张 PHP 页面</h1>
    
    <?PHP echo "Hello World!"; ?>
    
    </body>
    </html>

    好了,我们更新以后再看看网站目录是不是有test.PHP文件

    ls /usr/local/webroot/test_hight

    svn项目及自动更新配置部分完毕。

    下面我们配置 Nginx的网站。

    下面我们以test_hight作为例子来说明,首先,新建一个Nginx配置文件,作为站点test_hight的配置文件

    vi /etc/Nginx/conf.d/test_hight.conf

    内容如下:

    #####################################
    #####################################
    #####################################
    server {
        listen 8003;
        server_name 120.25.213.167 www.test_hight.com *.test_hight.com;
        root   "/usr/local/webroot/test_hight/";
        #这里是网站根目录,写上自己的目录吧。
        error_log /var/log/Nginx/error/test_hight/Nginx_error.log;
        index index.PHP;
        location / {
        }
        error_page 404  /;
        location ~ \.PHP$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.PHP;
    
            fastcgi_param CONFIG_TYPE product;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            #规定脚本的路径及名字
            include fastcgi_params;
        }
        location ~* \.(?:ico|css|js|gif|jpeg|png)$ {
            expires 30d;
            access_log        off;
            log_not_found     off;
            add_header Pragma public;
            add_header Cache-Control "public";
        }
        location /console {
            fastcgi_pass 127.0.0.1:9000;
            include fastcgi_params;
        }
        set $flag 0;
        if ($uri !~ ^/console/){
            set $flag "${flag}1";
        }
        if (!-e $request_filename){
            set $flag "${flag}2";
        }
        if ($flag = "012"){
            rewrite ^/(.*)$ /index.PHP last;
        }
    }

    上面的配置文件说明了几个要点,就是这个站点监听的端口是8003,网站目录是/usr/local/webroot/test_hight 错误日志文件在:/var/log/Nginx/error/test_hight/Nginx_error.log fastcgi调用的地址和端口是:fastcgi_pass 127.0.0.1:9000 好了,那么我们要做一些准备工作:
    1 开放9000端口及8003端口;—到这里9000端口你应该已经开放了。
    2 新建错误日志目录及文件
    3 新建网站根目录及放置一个测试用的PHP文件

    下面是步骤:

    --1 --开放端口
    firewall-cmd --zone=public --add-port=8003/tcp --permanent
    firewall-cmd --reload
    --2 --建立必要的目录
    mkdir -p  /var/log/Nginx/error/test_hight
    --3 --添加日志文件
    vi  /var/log/Nginx/error/test_hight/Nginx_error.log
    --解释:vi /var/log/Nginx/error/test_hight/Nginx_error.log
    --请按esc,然后填:wq保存并退出--这是vi命令的基本用法

    重启Nginx

    sudo systemctl restart Nginx

    乱码问题无足轻重,稍后解决,现在我们来添加一个新的文件,譬如,test2.PHP,然后看看服务器能不能立刻访问。
    步骤如下:


    所以,整个开发环境已经初步搭建完毕。

猜你在找的CentOS相关文章