PHP程序猿成军训练营之开发环境搭建

新年伊始,有幸给刚入职的PHP开发小伙伴们主持成军训练,为此写了本文,方便大家一步步用Vmware虚拟机搭建起CentOS+Nginx+MariaDB+PHP7+Git的开发环境。因为主要在开发者个人计算机中运行,因此在安全和性能调优方面完全没有涉及。

CentOS7

  1. 下载CentOS 7.5 64位操作系统光盘安装镜像文件,在Vmware Workstation Player中建立新虚拟机,使用前述镜像文件安装操作系统,将虚拟磁盘拆分成多个文件,内存1G,处理器1个,网络适配器选“桥接模式”;
  2. 进入CentOS安装向导后,选择最小配置软件、设置国内时区、时间、语言支持增加中文、设置主机名、配置局域网,设置root用户密码;
  3. 完成系统安装后使用root用户登录,更新系统;
    yum update
  4. 安装网络工具。
    yum install net-tools

Nginx 1.12.2

  1. 安装依赖项;
    yum install -y wget gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel curl-devel expat-devel gettext-devel perl-ExtUtils-MakeMaker
  2. 下载后编译安装;
    wget https://nginx.org/download/nginx-1.12.2.tar.gz
    tar zxvf nginx-1.12.2.tar.gz
    cd nginx-1.12.2
    ./configure --with-http_ssl_module
    make && make install
  3. 启动Nginx,添加Nginx可执行文件路径到系统路径;
    cd /usr/local/nginx/sbin
    ./nginx
    export PATH=$PATH:/usr/local/nginx/sbin
  4. 配置防火墙;
    firewall-cmd --zone=public --add-port=80/tcp --permanent
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    firewall-cmd --zone=public --add-port=9000/tcp --permanent
    firewall-cmd --reload
  5. 将Nginx设置为自启动项;

    vi /etc/init.d/nginx

    将以下内容复制到此文件中:

    #!/bin/sh
    # nginx - this script starts and stops the nginx daemin
    
    
    . /etc/rc.d/init.d/functions
    . /etc/sysconfig/network
    
    
    [ "$NETWORKING" = "no" ] && exit 0
    nginx="/usr/local/nginx/sbin/nginx"
    prog=$(basename $nginx)
    NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
    lockfile=/var/lock/subsys/nginx
    
    
    start() {
        [ -x $nginx ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
    }
    
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
    }
    
    
    restart() {
        configtest || return $?
        stop
        start
    }
    
    
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $nginx -HUP
        RETVAL=$?
        echo
    }
    
    
    force_reload() {
        restart
    }
    
    
    configtest() {
        $nginx -t -c $NGINX_CONF_FILE
    }
    
    
    rh_status() {
        status $prog
    
    
    }
    
    
    rh_status_q() {
        rh_status >/dev/null 2>&1
    }
    
    
    case "$1" in
    start)
    rh_status_q && exit 0
    $1
    ;;
    stop)
    rh_status_q || exit 0
    $1
    ;;
    restart|configtest)
    $1
    ;;
    reload)
    rh_status_q || exit 7
    $1
    ;;
    force-reload)
    force_reload
    ;;
    status)
    rh_status
    ;;
    condrestart|try-restart)
    rh_status_q || exit 0
    ;;
    *)
    echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
    exit 2
    esac

    然后保存退出,启动服务,以后就可以用service nginx start|stop|restart方式进行管理了。

    cd /etc/init.d/
    chmod +x ./nginx
    chkconfig --add /etc/init.d/nginx
    chkconfig nginx on

MariaDB

  1. 安装软件;
    yum -y install mariadb*
  2. 启动服务;
    systemctl start mariadb.service
    systemctl enable mariadb.service
  3. 设置root用户密码。
    mysqladmin -u root password "password here"

PHP7

  1. 安装软件源;
    yum install epel-release
    rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
  2. 安装PHP7及扩展;
    yum -y install php70w
    yum -y install php70w-xml php70w-xmlrpc php70w-mbstring php70w-json php70w-gd php70w-mcrypt php70w-fpm php70w-mysql php70w-pdo php70w-opcache php70w-pecl-xdebug php70w-pecl-imagick php70w-common php70w-cli php70w-devel
  3. 按开发要求修改PHP设置;
    vi /etc/php.ini
    修改设置如下:
    display_errors=On
    file_uploads on
    upload_max_filesize 30m
    post_max_size 30m
  4. 配置后重启。
    1. 启动FPM;
      systemctl start php-fpm
      systemctl enable php-fpm
    2. 配置Nginx;
      vi /usr/local/nginx/conf/nginx.conf
      文件头部增加user root;
      http{}块内增加:client_max_body_size 30m;
      在server{}块内增加:
      location ~ .php$ {
          fastcgi_pass   127.0.0.1:9000;
          fastcgi_index  default.php;
          fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include     fastcgi_params;
          include     fastcgi.conf;
        }
        include /usr/local/nginx/conf/vhosts/*.conf;
      保存退出,重启Nginx。
      service nginx restart

phpMyAdmin

  1. 安装软件;
    yum install  phpmyadmin
  2. 脚本所在目录链接到网站目录;
    ln -s /usr/share/phpMyAdmin/ /usr/local/nginx/html/
  3. 重启PHP。
    systemctl restart php-fpm

VSFTPD

  1. 安装软件;
    yum -y install vsftpd
  2. 创建用户,设密码和主目录后启动服务;
    useradd ftpuser -s /sbin/nologin
    passwd ftpuser
    usermod -d /usr/local/nginx/html/ ftpuser
    service vsftpd restart
  3. 修改防火墙;
    firewall-cmd --zone=public --add-port=21/tcp --permanent
    firewall-cmd --add-service=ftp --permanent 
  4. 修改配置;
    vi /etc/vsftpd/vsftpd.conf
    修改设置项为:
    anonymous_enable=NO local_enable=YES write_enable=YES local_umask=000 chroot_local_user=YES user_config_dir=/etc/vsftpd/userconfig allow_writeable_chroot=YES
    注释掉以下设置项:
    #anon_upload_enable=YES #anon_other_write_enable=YES #anon_mkdir_write_enable=YES
  5. 添加ftpuser用户的配置文件;
    cd /etc/vsftpd
    mkdir userconfig
    cd userconfig
    vi ftpuser
    添加内容:
    local_root=/usr/local/nginx/html/
    后保存退出。
  6. 修改登录认证方式;
    vi /etc/pam.d/vsftpd
    注释掉auth required pam_shells.so
  7. 设置自动启动,然后重启服务;
    chkconfig vsftpd on
    service vsftpd restart
  8. 修改ftp目录权限。
    cd /usr/local/nginx
    chown -R ftpuser html
    chmod 755 html

Git 1.8.3.1

  1. 下载和解压缩;
    cd ~
    wget https://www.kernel.org/pub/software/scm/git/git-1.8.3.1.tar.gz
    tar xzf git-18.8.3.1.tar.gz
  2. 编译和安装;
    cd git-1.8.3.1
    make prefix=/usr/local/git all
    make prefix=/usr/local/git install
    echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
    source /etc/bashrc
  3. 设置用户名,邮件,提交信息等;
    将.gitmessage提交信息模板文件传入虚拟机中,放入用户目录下
    git config --global user.name "Your Name"
    git config --global user.email email@gmail.com
    git config --global user.console "Console Name"
    git config --global commit.template "~/.gitmessage"
  4. 生成密钥;
    cd ~
    mkdir .ssh
    cd .ssh
    ssh-keygen -t rsa
    连续回车两次生成密钥,然后把id_rsa.pub文件复制出来。如果你已经在别的机器上生成过密钥,也可以把id_rsa和id_rsa.pub文件复制到~/.ssh目录下,省去以上生成的步骤。
  5. 公钥添加到Git主服务器;
    1. 登录git服务器,切换到git用户;
    2. 进入~/.ssh/目录,新建new.pub文件,将刚才复制出来的id_rsa.pub公钥文件的内容贴入保存;
    3. 将new.pub文件内容加入已有公钥文件表中。
      cat new.pub >> authrized_keys
  6. 回到虚拟机中就可以免密码登录Git主服务器,clone代码项目回开发环境了。

IDE

使用Atom编辑器做IDE的小伙伴,可以安装Remote FTP插件,将虚拟机的登录信息设置进去。只要虚拟机开机,在Atom中连接FTP服务器,就可以在保存代码时自动更新到开发环境中,方便测试。