PHP工作台:Linux裸机到PHP开发环境

工欲善其事必先利其器

一、Linux系统初始化

1. Linux系统版本

  1. 查看系统版本
shell 复制代码
> uname -a #查看linux内核版本
>> Linux VM_76_125_centos 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

> cat /proc/version #查看linux内核版本
>> Linux version 3.10.0-514.26.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Jul 4 15:04:05 UTC 2017

> cat /etc/redhat-release #查看linux发行系统版本
>> CentOS Linux release 7.2.1511 (Core)

> cat /etc/lsb-release  #查看Linux发行系统版本
  1. 包管理工具
  • 清楚系统版本有助于了解使用哪种包管理工具
操作系统 格式 工具
Debian .deb apt, apt-cache, apt-get, dpkg
Ubuntu .deb apt, apt-cache, apt-get, dpkg
CentOS .rpm yum
Fedora .rpm dnf
FreeBSD Ports, .txz make, pkg

2. 用户权限配置

  1. 新增用户
shell 复制代码
# 在root环境下执行:
> groupadd admin   #创建admin用户组
> useradd somebody  #创建用户
> passwd somebody   #修改用户密码
> usermod -g admin somebody #变更用户主组
> usermod -aG admin somebody #添加用户到组(第一个是组,第二个是用户)
  1. 用户添加sudo权限
shell 复制代码
# 在/etc/sudoers文件里添加:
## Allows people in group admin to run all commands without a password
%admin  ALL=(ALL)       NOPASSWD: ALL

二、Linux基础组件

1. git环境搭建

  1. 安装git
shell 复制代码
> sudo yum info git #查看git安装包详情
> sudo yum install git #下载安装git
  1. git默认环境配置
shell 复制代码
# git设置别名:
> git config --global alias.st 'status -sb'
    alias.st  "status -sb"
    alias.co "checkout"
    alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --"
    alias.br "branch"
    alias.ci "commit"
    alias.last "log -1"
    
# git 删除设置
> git config --global --unset credential.helper

# git全局设置查看
> git config --global --list

# git密码证书缓存
> git config --global credential.helper cache #支持缓存
> git config --global credential.helper 'cache --timeout=3600' #缓存失效时间
  1. github映射配置
shell 复制代码
> git config --global user.name "somebody"
> git config --global user.email "somebody@domain.com"
> git clone https://github.com/somebody/something.git

2. ftp环境搭建

  1. ftpd的安装配置(使用vsftpd服务)
  • 文档

  • 操作步骤

    • 安装vsftpd和ftp
    shell 复制代码
    # 安装ftp客户端和服务端
    > sudo -y install ftp vsftpd
    • 建立帐号及个性化配置
    shell 复制代码
    # 建立ftp系统账户,设置不可作ssh登录,并设置家目录
    > useradd -d /data/webdocs -s /sbin/nologin vsftpuser
    
    # 添加ftp虚拟账户
    > vim /etc/vsftpd/vsftpuser.passwd
    # 内容如下,奇数行为用户名,偶数行为密码,多个用户就写多行
    bithere
    fish??palm
    
    # 将ftp虚拟帐号生成密文库文件
    > db_load -T -t hash -f /etc/vsftpd/vsftpuser.passwd /etc/vsftpd/vsftpuser.db
    
    # 建立虚拟账号相关的目录以及配置文件
    > mkdir /etc/vsftpd/vsftpuser.conf.d
    > vim /etc/vsftpd/vsftpuser.conf.d/bithere #文件名和虚拟用户名一致
    
    # 添加虚拟用户个性化配置,内容如下:
    local_root=/data/webdocs  #定义bithere的家目录
    anonymous_enable=NO #用来限制是否允许匿名账号登录(no表示不允许)   
    write_enable=YES   #表示可写
    local_umask=022    #umask值
    anon_upload_enable=NO   #表示是否允许匿名账号上传文件
    anon_mkdir_write_enable=NO  #表示是否允许匿名账号可写
    idle_session_timeout=600   #上传完文件后超时多久断开连接
    data_connection_timeout=120  #数据传输超时时间
    max_clients=10  # 最大连接数
    • 更改vsftpd权限验证方式
    shell 复制代码
    # 增加vsftp的权限验证
    > vim /etc/pam.d/vsftpd
    # 内容如下:(增加上步生成的密文库文件,禁止以前的权限验证)
    auth       required     pam_userdb.so     db=/etc/vsftpd/vsftpuser
    account    required     pam_userdb.so     db=/etc/vsftpd/vsftpuser
    #session    optional    pam_keyinit.so    force revoke
    #auth       required    pam_listfile.so   item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
    #auth       required    pam_shells.so
    #auth       include     password-auth
    #account    include     password-auth
    #session    required    pam_loginuid.so
    #session    include     password-auth
    • vsftpd全局配置
    shell 复制代码
    # 追加和更改配置
    > vim /etc/vsftpd/vsftpd.conf
    #虚拟帐号走vsftpuser的系统帐号
    chroot_local_user=YES
    guest_enable=YES
    guest_username=vsftpuser
    virtual_use_local_privs=YES
    allow_writeable_chroot=YES
    user_config_dir=/etc/vsftpd/vsftpuser.conf.d
    
    #允许陌生用户访问的目录
    anon_root=/ftp/open
    
    #禁止陌生用户写
    anon_mkdir_write_enable=NO
  1. ftpd的启动命令
shell 复制代码
# 设置自动启动
> systemctl enable vsftpd

# 启动服务
> systemctl start vsftpd
 
# 查看目前的状态
> systemctl status vsftpd
  1. phpstorm自动同步配置
  • ftp链接配置 Tools => Deployment => Configurations
  • 设置 Passive modeCompatibility mode
  1. pure-ftpd启动命令
arduino 复制代码
sudo pure-config.pl /etc/pure-ftpd/pure-ftpd.conf

三、Web服务器

1. nginx环境搭建

采用openresty(通过 Lua 扩展 NGINX 实现的可伸缩的 Web 平台)搭建web服务器

openresty官网:openresty.org/cn/

推荐书籍:legacy.gitbook.com/book/moonbi...

  1. openresty安装与配置
  • 下载安装:我们使用1.13.6.2版本(2018.05.14版本)
shell 复制代码
# 下载解压
> wget https://openresty.org/download/openresty-1.13.6.2.tar.gz
> tar -xzvf openresty-VERSION.tar.gz

# 您必须将这些库 perl 5.6.1+, libpcre, libssl安装在您的电脑之中。 
# 对于 Linux来说, 您需要确认使用 ldconfig 命令,让其在您的系统环境路径中能找到它们

# 安装命令:
> cd openresty-VERSION/
> ./configure --prefix=/usr/local/openresty
> make
> sudo make install
  • 直接下载二进制包安装,参考:openresty.org/cn/linux-pa...

  • 配置项修改

    • host自定义目录
    shell 复制代码
    > sudo mkdir /usr/local/openresty/nginx/conf/vhost.d
    
    # /usr/local/openresty/nginx/conf/nginx.conf后追加:
    > include vhost.d/*.conf;
    • vhost配置项修改
    shell 复制代码
    server {
        listen 80;                                  # 监听端口
    
        server_name  www.domain.com;               # 域名
        root /data/webdocs/domain/public;          # 根目录
        charset utf-8;                              # 字符集
        index index.php;                            # 入口文件
    
        include      socket.conf;
        include      keepalive.conf;
        include      log.conf;
        access_log   logs/domain.log ;              # 访问日志文件
    
        location = /favicon.ico {                   # 精确匹配 浏览器图标
                expires 7d;
                log_not_found off;
        }
    
        location = /robots.txt {                    # 精确匹配 robots协议
                return 403;
        }
    
        location ~* ^.+.(js|css|html|swf|eot|svg|ttf|woff|map|exe)$ { # 不区分大小写的正则匹配
                expires 7d;
        }
    
        location ~* ^.+.(jpg|jpeg|gif|png)$ {       # 不区分大小写的正则匹配
                expires 30d;
        }
    
        location / {                                # 通用匹配
                # 说明见: https://blog.csdn.net/u012732259/article/details/76681581
                # https://www.hi-linux.com/posts/53878.html
                try_files $uri $uri/ /index.php?$args; 
        }
    
        location ~ \.php$ {
                # 当nginx处理http://www.xxx.com/index.php/abc/def请求时,将会把"index.php"做为php的脚本,/abc/def做为index.php脚本的参数提交给php-cgi执行
                fastcgi_split_path_info  ^(.+\.php)(.*)$;
                
                # 说明见:http://blog.51cto.com/nineep/1845961
                fastcgi_pass unix://data/var/run/jiyuers.sock;
        }
    }
  1. 反向代理和正向代理区别
  1. nginx开启https

2. PHP环境搭建

php官网:php.net/

php安装文档:linkeddestiny.gitbooks.io/easy-swoole...

  1. php安装与配置
  • 下载安装:我们使用7.2.7版本
shell 复制代码
# 下载解压
> wget http://am1.php.net/distributions/php-7.2.7.tar.gz
> tar -xzvf php-VERSION.tar.gz

# 编译环境
> sudo yum install \
build-essential \
gcc \
g++ \
autoconf \
libiconv-hook-dev \
libmcrypt-dev \
libxml2-dev \
libmysqlclient-dev \
libcurl4-openssl-dev \
libjpeg8-dev \
libpng12-dev \
libfreetype6-dev \

# php安装
> cd php-VERSION/
> ./configure --prefix=/usr/local/php \
--with-config-file-path=/etc/php \
--enable-fpm \
--enable-pcntl \
--enable-mysqlnd \
--enable-opcache \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-shmop \
--enable-zip \
--enable-soap \
--enable-xml \
--enable-mbstring \
--disable-rpath \
--disable-debug \
--disable-fileinfo \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-pcre-regex \
--with-iconv \
--with-zlib \
--with-mcrypt \
--with-gd \
--with-openssl \
--with-mhash \
--with-xmlrpc \
--with-curl \
--with-imap-ssl

> sudo make
> sudo make install
> sudo mkdir /etc/php
> sudo cp php.ini-development /etc/php/php.ini

# vim ~/.bashrc 追加
export PATH=/usr/local/php/bin:$PATH
export PATH=/usr/local/php/sbin:$PATH

> source ~/.bashrc
  • php-fpm fastCGI配置

    • php-fpm 配置
    shell 复制代码
    $ vim /usr/local/php/etc/php-fpm.conf
    # 最后一行追加
    include=/usr/local/php/etc/php-fpm.d/*.conf
    • 单独实例配置
    shell 复制代码
    $ vim /usr/local/php/etc/www.conf
    # 两项基础配置
    pool name => [www]  #实例名
    prefix    => pools/$pool #日志目录
    listen    => /dev/shm/$pool.socket #监听端口:这里采用文件端口
  • php的mongodb扩展安装:www.jianshu.com/p/1f00529cd...

  1. php的优化

四、数据库搭建

1. mysql环境搭建

  1. mysql下载安装
  • 安装步骤
shell 复制代码
rpm -qa | grep mysql
如果你系统有安装,那可以选择进行卸载:

$ rpm -e mysql  // 普通删除模式
$ rpm -e --nodeps mysql  // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
安装 MySQL:

接下来我们在 Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 版本中 MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源包,下载地址为:https://dev.mysql.com/downloads/repo/yum/


$ wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
$ sudo rpm -ivh mysql57-community-release-el7-9.noarch.rpm
$ sudo yum install mysql-server
初始化 MySQL:

$ sudo mysqld --initialize
启动 MySQL:

$ sudo systemctl start mysqld
查看 MySQL 运行状态:

$sudo systemctl status mysqld
  • 注意
shell 复制代码
默认的mysql配置文件位于:/etc/my.cnf

如果安装报错:可以相应修改其中的配置项

2. mongodb环境搭建

  1. mongodb的下载安装

blog.csdn.net/u011019141/...

  • 配置MongoDB的yum源
shell 复制代码
# 创建yum源文件:
$ sudo vim /etc/yum.repos.d/mongodb-org-4.0.repo

# 添加以下内容:
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

# 这里可以修改 gpgcheck=0, 省去gpg验证
  • 安装MongoDB
shell 复制代码
# 安装命令:
$ sudo yum -y install mongodb-org

# 查看mongo安装位置
$ whereis mongod

# 查看修改配置文件 : 
sudo vim /etc/mongod.conf
  • 启动MongoDB
shell 复制代码
# 启动mongodb :
$ sudo systemctl start mongod.service


# 停止mongodb :
$ sudo systemctl stop mongod.service

# 查到mongodb的状态:
$ sudo systemctl status mongod.service

# 设置开机启动
$ sudo systemctl enable mongod.service

# mongod.service路径:/usr/lib/systemd/system/mongod.service
  • 外网访问需要关闭防火墙:
shell 复制代码
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。
关闭firewall:
$ sudo systemctl stop firewalld.service  #停止firewall
$ sudo systemctl disable firewalld.service  #禁止firewall开机启动
  1. mongodb使用配置
shell 复制代码
# 启动Mongo shell
$ mongo

# 查看数据库:
$ show dbs

# 设置mongodb远程访问:
## 编辑mongod.conf注释bindIp,并重启mongodb.
$ sudo vim /etc/mongod.conf

# 重启mongodb:
$ sudo systemctl restart mongod.service

添加账号密码
步骤一:在未开启认证的环境下,登录到数据库
mongo


步骤二:切换到admin数据库
> use admin


步骤三:创建管理员账号
> db.createUser({user:"root",pwd:"123456",roles:["root"]})


新增的用户在 db.system.users 中
> db.getCollectionNames()
["system.indexes", "system.users", "system.version" ]


步骤四:验证用户是否创建成功
> db.auth("root","123456")
1

步骤五:杀掉进程,重启mongoDB服务
ps -ef | grep mongod

步骤六:更改mongod.service配置
Environment="OPTIONS=--auth -f /etc/mongod.conf"

步骤七:重载service配置 & 重启mongod
$ sudo systemctl daemon-reload
$ sudo systemctl start mongod.service
  1. mongo使用命令
  • shell启动:mongo --port 27017 -u root -p bithere --authenticationDatabase admin

3. redis环境搭建

  1. reds安装与配置

www.jianshu.com/p/ebda253a8...

  • 安装配置

    shell 复制代码
    # 安装redis
    $ sudo yum install redis
    # 启动redis
    $ sudo systemctl start redis.service
    # 设置开机自启动
    $ sudo systemctl enable redis.service
    # 设置密码
    打开文件/etc/redis.conf,找到其中的# requirepass foobared,去掉前面的#,并把foobared改成你的密码。

4. ES环境搭建

  1. 安装与配置(以安装es6.6.2为例)
shell 复制代码
# 下载jdk
$ wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.tar.gz

# 下载ES安装包
$ wget "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz"

# 解压缩
$ tar -xzvf elasticsearch-6.6.2.tar.gz
  1. systemd配置

知识阅读:
www.cnblogs.com/sparkdev/p/...

/lib/systemd/system下新建elasticsearch.service文件,一定要以service做后缀

ini 复制代码
[Unit]
Description=Elasticsearch
Documentation=http://www.elastic.co
Wants=network-online.target
After=network-online.target

[Service]
WorkingDirectory=/usr/local/elasticsearch

User=elasticsearch
Group=elasticsearch
Restart=1
ExecStart=/usr/local/elasticsearch/bin/elasticsearch

# StandardOutput is configured to redirect to journalctl since
# some error messages may be logged in standard output before
# elasticsearch logging system is initialized. Elasticsearch
# stores its logs in /var/log/elasticsearch and does not use
# journalctl by default. If you also want to enable journalctl
# logging, you can simply remove the "quiet" option from ExecStart.
StandardOutput=journal
StandardError=inherit

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=655350

# Specifies the maximum number of processes
LimitNPROC=4096

# Specifies the maximum size of virtual memory
LimitAS=infinity
  1. systemctl命令
ruby 复制代码
$ sudo systemctl start elasticsearh.service
$ sudo systemctl restart elasticsearch.service
$ sudo systemctl status elasticsearch.service
$ sudo systemctl stop elasticsearch.service
  1. 安装ik分词器

参照:github.com/medcl/elast...

  1. 安装kibana
ruby 复制代码
$ wget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.2-linux-x86_64.tar.gz

五、开发框架搭建

1. php框架环境搭建

  1. composer安装与配置

composer官网:getcomposer.org/

composer中文网:www.phpcomposer.com/

  • 安装配置

    shell 复制代码
    # 下载composer的可执行文件
    $ curl -sS https://getcomposer.org/installer | php
    
    # composer全局安装
    $ mv composer.phar /usr/local/bin/composer
  • composer常用命令

    shell 复制代码
    $ composer install #安装
    $ composer update  #更新
    $ composer install -o -vvv #安装显示debug信息
  • composer更改镜像

    1. 查看当前镜像地址
    shell 复制代码
    在命令行输入如下命令,即可查看镜像地址:
    
    $ composer config -g repo.packagist
    {"type":"composer","url":"https://packagist.org","allow_ssl_downgrade":true}
    也可以使用 composer config -l -g 查看所有全局配置
    
    下面有把地址修改为中国镜像,如果中国镜像出现了问题,那么您可以还原成官方的默认地址  ,下面是详细。
    1. 启用中国全量镜像服务:
    arduino 复制代码
    启用中国全量镜像服务有两种方式,具体配置方法如下:
    
    1. 系统全局配置:
    即将配置信息添加到 Composer 的全局配置文件 config.json 中。修改composer的全局配置文件(推荐方式),打开命令行并执行如下命令:
    
    默认地址改为中国镜像地址:
    
    composer config -g repo.packagist composer https://packagist.phpcomposer.com
    中国镜像地址还原成默认地址:(注意:这个是将中国镜像还原)
    
    composer config -g repo.packagist composer https://packagist.org
     
    
    2. 单个项目配置:
    即将将配置信息添加到某个项目的 composer.json 文件中。修改当前项目的composer.json配置文件有两种方式,最后都是向文件中添加如下配置信息:
    
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://packagist.phpcomposer.com"
        }
    }
    2.1 打开命令行并进入项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:
    
    默认地址改为中国镜像地址:
    
    composer config repo.packagist composer https://packagist.phpcomposer.com
    该命令将会在当前项目中的 composer.json 文件的末尾自动添加镜像的配置信息
    
    中国镜像地址还原成默认地址:(注意:这个是将中国镜像还原)
    
    composer config repo.packagist composer https://packagist.org
    2.2 手动向composer.json文件中添加以上信息
    
    默认地址改为中国镜像地址:
    
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://packagist.phpcomposer.com"
        }
    }
    中国镜像地址还原成默认地址:(注意:这个是将中国镜像还原)
    
    将url的值改为:https://packagist.org

    1.2 超牛逼的国内镜像地址

  1. laravel环境配置

    shell 复制代码
    #安装laravel启动项
    $ composer global require "laravel/installer"
    
    # 将 ~/.config/composer/vendor/bin 加入path目录
    
    #安装项目
    $ laravel new blog
  2. lumen环境配置

    lumen是简易版的laravel

    shell 复制代码
    #安装lumen启动项
    $ composer global require "laravel/lumen-installer"
    
    # 将 ~/.config/composer/vendor/bin 加入path目录
    
    #安装项目
    $ lumen new blog

2. nodejs安装

shell 复制代码
复制拿到链接,下载nodejs
$ wget https://nodejs.org/dist/v14.17.4/node-v14.17.4-linux-x64.tar.xz

解压
$ tar -xvf node-v14.17.4-linux-x64.tar.xz

删除压缩包
$ rm node-v14.17.4-linux-x64.tar.xz

配置环境变量
编辑
$ vim .bash_profile

#往 .bash_profile 新增环境变量
$ export NODE_HOME=/node-v14.17.4-linux-x64
$ export PATH=$PATH:$NODE_HOME/bin 
$ export NODE_PATH=$NODE_HOME/lib/node_modules

保存.bash_profile
:wq

提交
$ source .bash_profile

检查是否安装成功
$ node -v
$ npn -v

有版本号出现则表示成功
相关推荐
pk_xz12345620 分钟前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强23 分钟前
Linux之sed命令详解
linux·运维·服务器
Lary_Rock2 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
云飞云共享云桌面4 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq5 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
一坨阿亮6 小时前
Linux 使用中的问题
linux·运维
dsywws7 小时前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零8 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
小林熬夜学编程9 小时前
【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践
linux·c语言·开发语言·c++·算法
程思扬10 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节