[root@corp ~]# tee /etc/selinux/config <<-'EOF'
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
EOF
或者
[root@corp ~]# sed -i -- 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@corp ~]# set SELINUX=disabled
[root@corp ~]# setenforce 0 ##不重启立刻关闭 SELINUX,设置 /var/log/mariadb 的权限为755 其文件夹内文件权限全部666,还报告mariadb-log-bin.index not found (Errcode: 13), 办法是设置文件夹mariadb与文件所属组chown -R mysql:mysql /var/log/mariadb && chown -R mysql:mysql /var/log/mariadb/*
[root@corp ~]# sestatus -v
SELinux status: disabled
[root@corp ~]#
[root@corp ~]# systemctl stop firewalld
[root@corp ~]# systemctl disable firewalld
[root@corp ~]# echo "192.168.10.20 corp.contoso.org" >> /etc/hosts
[root@corp ~]# echo "192.168.10.10 contoso.org" >> /etc/hosts
[root@corp ~]# echo `export PATH=$PATH:/usr/local/zend/bin` >> /etc/profile # 这是Zend Server 服务器下php指令全局性配置方法 可以不用它
[root@corp ~]# source /etc/profile
[root@corp ~]# tail -5 /etc/profile
unset i
unset -f pathmunge
export PATH=$PATH:/usr/local/zend/bin ## 配置PHP指令全局执行,例如执行指令 php -m
[root@corp ~]# more /etc/hosts
[root@corp ~]# systemctl restart network # 不启动系统让hosts文件修改即刻生效
提示所有可用扩展软件包在此位置:http://rpms.remirepo.net/enterprise/7/php71/x86_64/
http://rpms.remirepo.net/wizard/ 安装PHP7.1 需要打开此链接
Operating system: CentOS 7
PHP version: 7.1.7(active support until Dec 2018)
Type of installation: Single version
Command to install the EPEL repository configuration package:
[root@corp ~]$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Command to install the Remi repository configuration package:
[root@corp ~]$ sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Command to install the yum-utils package (for the yum-config-manager command):
[root@corp ~]$ sudo yum install yum-utils
Command to enable the repository:
[root@corp ~]$ sudo yum-config-manager --enable remi-php71
Command to upgrade (the repository only provides PHP):
[root@corp ~]$ sudo yum update
Command to install additional packages:
[root@corp ~]$ sudo yum --enablerepo=remi-php71,remi,epel -y install php php-devel php-mysql php-fpm php-pecl-xdebug php-gd php-intl php-freetype php-mcrypt php-mbstring php-pecl-memcached php-pecl-redis php-pecl-swoole
[root@corp ~]$ sudo yum--enablerepo=remi-php71,remi,epel -y install php-pecl-mongo
[root@corp ~]$ sudo yum--enablerepo=remi-php71,remi,epel -y install php-simplexml php-xml php-zip
[root@corp ~]$ sudo yum--enablerepo=remi-php71,remi,epel -y install php-gd php-freetype php-pecl-jpeg // pChart
[root@corp ~]$ sudo yum--enablerepo=remi-php71,remi,epel -y install php-pecl-geoip geoip
yum info geoip //查官网地址
[root@corp ~]$ sudo yum --enablerepo=remi-php71,remi,epel -y install php-pecl-apcu
[root@corp ~]$ sudo yum --enablerepo=remi-php71,remi,epel -y install nodejs npm
[root@corp ~]$ sudo yum --enablerepo=remi-php71,remi,epel -y install php-intl
[root@corp ~]$ sudo yum --enablerepo=remi-php71,remi,epel -y install php-pecl-zip
[root@corp ~]$ sudo yum--enablerepo=remi-php71,remi,epel -y remove mariadb mariadb-server删掉5.5系列的 目前最新版才5.5.48
Command to check the installed version and available extensions:
[root@corp ~]$ php --version
[root@corp ~]$ php --modules
ls /etc/yum.repos.d
cat /etc/yum.repos.d/remi.repo
ls /etc/pki/rpm-gpg
https://www.digitalocean.com/community/tutorials/how-to-create-an-ssl-certificate-on-apache-for-centos-7
[root@corp ~]$ sudo yum --enablerepo=remi-php71,remi,epel install mod_ssl
[root@corp ~]$ sudo timedatectl status
Local time: Mon 2015-12-14 20:28:54 CST
Universal time: Mon 2015-12-14 12:28:54 UTC
RTC time: Mon 2015-12-14 12:28:54
Timezone: Asia/Shanghai (CST, +0800)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
[root@corp ~]# su -
[root@corp ~]# vi /etc/php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = PRC
[root@corp ~]# ls /etc/httpd/conf.d/
autoindex.conf php.conf README userdir.conf welcome.conf
[root@corp ~]# cat /etc/httpd/conf.d/ssl.conf
[root@corp ~]# ls /etc/httpd/
conf conf.d conf.modules.d logs modules run
[root@corp ~]# mkdir /etc/httpd/ssl
[root@corp ~]# vi /etc/redis.conf
bind 192.168.10.30 127.0.0.1
[root@corp ~]# cat /etc/php-fpm.conf
[root@corp ~]# cat /etc/php-fpm.d/www.conf // 查看默认端口9000 listen = 127.0.0.1:9000
[root@corp ~]$ sudo systemctl enable php-fpm.service
[root@corp ~]$ sudo systemctl enable httpd.service
[root@corp ~]$ sudo systemctl enable memcached.service
[root@corp ~]$ sudo systemctl enable redis.service
[root@corp ~]$ sudo systemctl restart php-fpm.service
[root@corp ~]$ sudo systemctl restart httpd.service
[root@corp ~]$ sudo systemctl restart memcached.service
[root@corp ~]$ sudo systemctl restart redis.service
[root@corp ~]$ sudo systemctl reboot
[root@corp ~]$ sudo reboot
[root@corp ~]$ sudo poweroff
[root@corp ~]# cat > /etc/php.d/15-xdebug.ini
; Enable xdebug extension module
zend_extension=xdebug.so
xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.remote_connect_back=1
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
; see http://xdebug.org/docs/all_settings
Linux下Apache网站目录读写权限的设置
我们httpd服务器运行的用户和用户组是apache,网站用户myth(登录CentOS 7系统的开发用户名),网站根目录是/home/myth/www
第1步:
我们首先设定网站目录和文件的所有者和所有组为myth,apache,如下命令:
[myth@corp ~]$ mkdir www
[myth@corp ~]$ ll
total 0
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Desktop
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Documents
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Downloads
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Music
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Pictures
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Public
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Templates
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Videos
drwxrwxr-x 2 myth myth 6 Jul 31 09:39 www
[myth@corp ~]$ pwd
/home/myth
[myth@corp ~]$ su -
Password:
[root@corp ~]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 17564 root 4u IPv6 90702 0t0 TCP *:http (LISTEN)
httpd 17565 apache 4u IPv6 90702 0t0 TCP *:http (LISTEN)
httpd 17566 apache 4u IPv6 90702 0t0 TCP *:http (LISTEN)
httpd 17568 apache 4u IPv6 90702 0t0 TCP *:http (LISTEN)
httpd 17570 apache 4u IPv6 90702 0t0 TCP *:http (LISTEN)
httpd 17571 apache 4u IPv6 90702 0t0 TCP *:http (LISTEN)
httpd 18759 apache 4u IPv6 90702 0t0 TCP *:http (LISTEN)
[root@corp ~]# pwd
/root
[root@corp ~]# chmod 755 -R /home/myth ## find /home -type d -exec chmod 755 {} \;
[root@corp ~]# exit
logout
[myth@corp ~]$ pwd
/home/myth
[myth@corp ~]$ ll /home
total 4
drwxr-xr-x. 16 myth myth 4096 Jul 31 18:34 myth
[myth@corp ~]$
[myth@corp ~]$ ll /home/myth
total 0
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Desktop
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Documents
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Download
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Music
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Pictures
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Public
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Templates
drwxr-xr-x. 2 myth myth 6 Jul 30 15:46 Videos
drwxr-xr-x 3 myth myth 19 Jul 31 19:04 www
[myth@corp ~]$
全局性composer命令安装(myth和www权限设置后下面安装composer才不会出现写文件没有权限)
https://pkg.phpcomposer.com/
打开命令行并依次执行下列命令安装最新版本的 Composer:
[root@corp ~]$ sudo php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
[root@corp ~]$ sudo php composer-setup.php
[root@corp ~]$ sudo php -r "unlink('composer-setup.php');"
[root@corp ~]$ sudo mv composer.phar /usr/local/bin/composer
[root@corp ~]$ sudo composer config -g repo.packagist composer https://packagist.phpcomposer.com
不要忘了经常执行 composer selfupdate 以保持 Composer 一直是最新版本
第2步:ThinkPHP5.0安装
[myth@corp ~]$ cd /home/myth/www && composer create-project topthink/think think --prefer-dist ## 克隆下载应用项目think,官网这里用的是tp5 ------ 对应最后那个think;隐含克隆核心框架framework自动更名为thinkphp
第3步:
设置网站目录权限为750,750是myth用户对目录拥有读写执行的权限,这样myth用户
可以在任何目录下创建文件,用户组有有读执行权限,这样才能进入目录,其它用户没有任何权限。
[myth@corp ~]$ cd /home/myth/www
[myth@corp ~]$ find /home/myth/www -type d -exec ls -l {} \; ## 注释 上一行 cd /home/myth/www命令可以不用执行,因为指定了搜索目录/home/myth/www 提前查询think项目没被修改时所有子目录和文件的默认权限
[myth@corp ~]$ chown -R myth:myth /home/myth/www
[myth@corp ~]$ find /home/myth/www -type d -exec chmod 775 {} \; ## 注释说明 {} 表示查询结果 内容是/home/myth/www目录下的所有子目录,设置每个子目录的权限为750,开发时需要775
第4步:
设置网站文件权限为640,640指只有myth用户对网站文件有更改的权限,http服务器只
有读取文件的权限,无法更改文件,其它用户无任何权限。
[myth@corp ~]$ find /home/myth/www -not -type d -exec chmod 664 {} \; ## 设置每个子目录下所有文件的权限为640,开发时需要664
第5步:
针对个别目录设置可写权限。比如网站的一些缓存目录就需要给http服务有写入权限。
例如discuz x2的/data/目录就必须要写入权限。
find data -type d -exec chmod 770 {} \;
清空日志文件的内容: [myth@corp ~]$ rm -rf /home/myth/log/httpd && mkdir -p /home/myth/log/httpd ##清空日志可直接删掉日志文件
[root@corp ~]$ cat /dev/null > /home/myth/log/httpd/user-corp-contoso-error_log && cat /dev/null > /home/myth/log/httpd/user-corp-contoso-access_log
[root@corp ~]#$ cat /dev/null > /home/myth/log/httpd/corp-contoso-error_log && cat /dev/null > /home/myth/log/httpd/corp-contoso-access_log
[root@corp ~]#$ cat /dev/null > /home/myth/log/httpd/contoso-error_log && cat /dev/null > /home/myth/log/httpd/contoso-access_log
实时跟踪日志内容:
[root@corp ~]$tail -f/home/myth/log/httpd/user-corp-contoso-error_log
[root@corp ~]$tail -f/home/myth/log/httpd/user-corp-contoso-access_log
[root@corp ~]$tail -f/home/myth/log/httpd/corp-contoso-error_log
[root@corp ~]$tail -f/home/myth/log/httpd/corp-contoso-access_log
[root@corp ~]$tail -f/home/myth/log/httpd/contoso-error_log
[root@corp ~]$ tail -f/home/myth/log/httpd/contoso-access_log
在Cent OS 7.x系统上配置虚拟主机(root账户下):
[root@contoso ~]# cat > /etc/httpd/conf.d/httpd-vhosts.conf ## 配置虚拟主
Options +Indexes +FollowSymLinks
Order allow,deny
Allow from all
AllowOverride All
Require all granted
ServerAdmin [email protected]
DocumentRoot "/var/www/html/SPRabbitMQ/app"
ServerName contoso.com
ServerAlias contoso.com
ErrorLog "/var/log/httpd/contoso-error_log"
CustomLog "/var/log/httpd/contoso-access_log" common
在Cent OS 7.x系统上配置虚拟主机(非root账户下):
#注意:日志文件的目录需要提前创建好,如果发现No such file or directory: AH02291: Cannot access directory '/home/myth/log/httpd/' for error log of vhost 这样的错误
退出root用户操作环境,进入到myth用户$提示符环境下 [myth@corp ~]$ rm -rf /home/myth/log/httpd && mkdir -p /home/myth/log/httpd 执行此条命令即可解决 请再一次地注意生成的日志文件 拥有者和用户组均属于root 而不是myth用户和myth用户组
[myth@corp ~]$
[myth@corp ~]$ mkdir -p /home/myth/log/httpd #注意:日志文件的目录需要提前创建好,
[myth@corp ~]$ touch /home/myth/log/httpd/user-corp-contoso-error_log # 不需要执行此行指令,就会自动生成这个日志文件
[myth@corp ~]$ touch /home/myth/log/httpd/user-corp-contoso-access_log # 不需要执行此行指令,就会自动生成这个日志文件
[myth@corp ~]$ touch /home/myth/log/httpd/corp-contoso-error_log # 不需要执行此行指令,就会自动生成这个日志文件
[myth@corp ~]$ touch /home/myth/log/httpd/corp-contoso-access_log # 不需要执行此行指令,就会自动生成这个日志文件
[myth@corp ~]$ touch /home/myth/log/httpd/contoso-error_log # 不需要执行此行指令,就会自动生成这个日志文件
[myth@corp ~]$ touch /home/myth/log/httpd/contoso-access_log # 不需要执行此行指令,就会自动生成这个日志文件
在配置文件/etc/httpd/conf/httpd.conf中,我们只需要改下面这行参数值即可,其它参数值保留默认配置:
[root@corp ~]# sed -i -- 's/^#ServerName www.example.com:80/ServerName contoso.org:80/g' /etc/httpd/conf/httpd.conf
测试一下网站的访问地址:http://corp.contoso.org,此刻默认主页会显示出来!,如果默认页都无权限访问
那么从mkdir www 到 chmod 755 -R /home/myth这两步权限就分配错了
大多数人这里根本就没设置权限 开头就错了 后面日志报告权限错误 默认页无权限显示就跟这有关
myth是我的登录系统的管理员用户 默认myth文件夹权限很低
安装MariaDB
官网给出的baseurl地址下载太慢了
[root@contoso ~]# cat > /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.2 CentOS repository list - created 2017-07-08 12:50 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
清华baseurl下载速度很快
[root@contoso ~]# cat > /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.2 CentOS repository list - created 2017-07-08 12:50 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.2.7/yum/centos7-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
[root@contoso ~]# more /etc/yum.repos.d/MariaDB.repo
[root@contoso ~]# yum install -y MariaDB-server MariaDB-client
[root@contoso ~]# find / -name *.cnf
/etc/pki/tls/openssl.cnf
/etc/my.cnf
/etc/my.cnf.d/mysql-clients.cnf
/etc/my.cnf.d/server.cnf
/usr/share/mysql/my-huge.cnf
/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-small.cnf
/usr/share/mysql/wsrep.cnf
[root@contoso ~]# more /etc/my.cnf
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
[root@contoso ~]# more /etc/my.cnf.d/server.cnf
#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#
# this is read by the standalone daemon and embedded servers
[server]
# this is only for the mysqld standalone daemon
[mysqld]
#
# * Galera-related settings
#
[galera]
# Mandatory settings
#wsrep_on=ON
#wsrep_provider=
#wsrep_cluster_address=
#binlog_format=row
#default_storage_engine=InnoDB
#innodb_autoinc_lock_mode=2
#
# Allow server to accept connections on all interfaces.
#
#bind-address=0.0.0.0
#
# Optional setting
#wsrep_slave_threads=1
#innodb_flush_log_at_trx_commit=0
# this is only for embedded server
[embedded]
# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]
# This group is only read by MariaDB-10.1 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mariadb-10.1]
[root@contoso ~]#
[root@contoso ~]# mkdir -p /var/log/mariadb && touch /var/log/mariadb/queries.log && touch /var/log/mariadb/mariadb-error.log && touch /var/log/mariadb/mariadb-slow.log && touch /var/log/mariadb/mariadb-log-bin && touch /var/log/mariadb/mariadb-log-bin.index && chown -R mysql:mysql /var/log/mariadb && chmod 755 /var/log/mariadb && chmod 666 /var/log/mariadb/*
[root@contoso ~]#
[root@contoso ~]# cat > /etc/my.cnf.d/server.cnf
#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#
# this is read by the standalone daemon and embedded servers
[server]
# this is only for the mysqld standalone daemon
[mysqld]
character-set-server=utf8
lower-case-table-names=1
log-bin=/var/log/mariadb/mariadb-log-bin
log-bin-index=/var/log/mariadb/mariadb-log-bin.index
log-error=/var/log/mariadb/mariadb-error.log
general-log=ON
general-log-file=/var/log/mariadb/queries.log
log-output=file
slow-query-log=ON
slow-query-log-file=/var/log/mariadb/mariadb-slow.log
long_query_time=1
#
# * Galera-related settings
#
[galera]
# Mandatory settings
#wsrep_on=ON
#wsrep_provider=
#wsrep_cluster_address=
#binlog_format=row
#default_storage_engine=InnoDB
#innodb_autoinc_lock_mode=2
#
# Allow server to accept connections on all interfaces.
#
#bind-address=0.0.0.0
#
# Optional setting
#wsrep_slave_threads=1
#innodb_flush_log_at_trx_commit=0
# this is only for embedded server
[embedded]
# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]
# This group is only read by MariaDB-10.1 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mariadb-10.1]
[root@contoso ~]#
清空日志,实时跟踪日志文件
ll /var/log/mariadb
cat /etc/my.cnf.d/server.cnf
cat /dev/null > /var/log/mariadb/queries.log && cat /dev/null > /var/log/mariadb/mariadb-slow.log && cat /dev/null > /var/log/mariadb/mariadb-error.log
tail -f /var/log/mariadb/queries.log
tail -f /var/log/mariadb/mariadb-slow.log
tail -f /var/log/mariadb/mariadb-error.log
rm -f /var/log/mariadb/*
mysql -uroot -p123456 -h127.0.0.1 -e "reset master" # 清空bin_log日志
[root@contoso ~]# service mysql start
Starting mysql (via systemctl): [ OK ]
[root@contoso ~]# mysql -uroot -h127.0.0.1 -e"show variables like 'character%'"
[root@contoso ~]# mysql -uroot -p123456 -h127.0.0.1 -e"show variables like 'character%'"
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
[root@contoso ~]# /usr/bin/mysql_secure_installation
MariaDB [mysql]> GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
[root@contoso ~]#
另外一种编码配置方式 ------- 表情小图片(是一种字符)使用的编码方式:
[root@contoso ~]# vi /etc/my.cnf.d/client.cnf
#
# These two groups are read by the client library
# Use it for options that affect all clients, but not the server
#
[client]
default-character-set=utf8mb4
# This group is not read by mysql client library,
# If you use the same .cnf file for MySQL and MariaDB,
# use it for MariaDB-only client options
[client-mariadb]
default-character-set=utf8mb4
[root@contoso ~]# vi /etc/my.cnf.d/server.cnf
#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#
# this is read by the standalone daemon and embedded servers
[server]
# this is only for the mysqld standalone daemon
[mysqld]
character-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'
lower-case-table-names=1
sql-mode="STRICT_TRANS_TABLES"
log-bin=/var/log/mariadb/mariadb-log-bin
log-bin-index=/var/log/mariadb/mariadb-log-bin.index
log-error=/var/log/mariadb/mariadb-error.log
general-log=ON
general-log-file=/var/log/mariadb/queries.log
log-output=file
slow-query-log=ON
slow-query-log-file=/var/log/mariadb/mariadb-slow.log
long_query_time=1
log-queries-not-using-indexes=ON
# this is only for embedded server
[embedded]
# This group is only read by MariaDB-5.5 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mysqld-5.5]
# These two groups are only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]
[mariadb-5.5]
[root@contoso ~]# systemctl restart mariadb
[root@contoso ~]# mysql
MariaDB [(none)]> use mysql;
MariaDB [(none)]> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
MariaDB [(none)]> SHOW VARIABLES LIKE '%collation%';
+----------------------+--------------------+
| Variable_name | Value |
+----------------------+--------------------+
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+----------------------+--------------------+
3 rows in set (0.00 sec)
查看一下你的Apache的执行用户是谁: lsof -i:80
[root@contoso ~]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 11665 root 4u IPv6 91552 0t0 TCP *:http (LISTEN)
httpd 29276 apache 4u IPv6 91552 0t0 TCP *:http (LISTEN)
httpd 29277 apache 4u IPv6 91552 0t0 TCP *:http (LISTEN)
httpd 29278 apache 4u IPv6 91552 0t0 TCP *:http (LISTEN)
httpd 29279 apache 4u IPv6 91552 0t0 TCP *:http (LISTEN)
httpd 29280 apache 4u IPv6 91552 0t0 TCP *:http (LISTEN)
httpd 29281 apache 4u IPv6 91552 0t0 TCP *:http (LISTEN)
httpd 29398 apache 4u IPv6 91552 0t0 TCP *:http (LISTEN)
[root@contoso ~]#
查看apache 的运行的用户
[root@contoso ~]# ps -ef |grep httpd
root 4030 1 0 11:51 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 4034 4030 0 11:51 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 4035 4030 0 11:51 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 4036 4030 0 11:51 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 4037 4030 0 11:51 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 4039 4030 0 11:51 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 4092 3934 0 11:54 pts/0 00:00:00 grep --color=auto httpd
[root@contoso ~]#
直接在httpd.conf配置文件查看apache执行用户和组,在以下红色字体标识的66行和67行:
/var/www/think/thinkphp/library/think/template/driver/File.php
开启./etc/php.ini 配置文件中 display_errors = On 参数项 ,只在开发的时候开启此项
display_errors = On开启后会捕获以下错误,header会返回status 500 Server error:
PHP Fatal error: Uncaught think\\exception\\ErrorException: mkdir(): Permission denied in /home/myth/www/think/thinkphp/library/think/log/driver/File.php
实际原因是/home/myth/www/think/runtime目录是由httpd服务的用户来读写,默认不是apache这个账户来读写,所以就抛出了没有创建目录的权限,类似也有写这个目录的权限没有,也需要向下面这样改变runtime的读写用户和组
[root@contoso ~]# chown -R apache:apache /home/myth/www/think/runtime && ll /home/myth/www/think
total 28
drwxrwxr-x 5 myth myth 186 Aug 1 18:37 apps
-rw-rw-r-- 1 myth myth 1099 Jul 31 23:34 build.php
-rw-rw-r-- 1 myth myth 570 Jul 4 11:52 composer.json
-rw-rw-r-- 1 myth myth 3786 Jul 31 19:04 composer.lock
drwxrwxr-x 2 myth myth 24 Jul 4 11:52 extend
-rw-rw-r-- 1 myth myth 1822 Jul 4 11:52 LICENSE.txt
drwxrwxr-x 3 myth myth 126 Aug 1 00:36 public
-rw-rw-r-- 1 myth myth 5775 Jul 4 11:52 README.md
drwxrwxr-x 2 apache apache 24 Jul 4 11:52 runtime
-rw-rw-r-- 1 myth myth 746 Jul 31 23:36 think
drwxrwxr-x 5 myth myth 324 Jul 31 19:04 thinkphp
drwxrwxr-x 4 myth myth 76 Jul 31 19:04 vendor
[myth@contoso ~]$
[myth@contoso ~]$ ll -a /home/myth/www/think/public
total 24
drwxrwxr-x 3 myth myth 126 Aug 1 00:36 .
drwxrwxr-x 9 myth myth 249 Jul 31 23:36 ..
-rw-rw-r-- 1 myth myth 203 Aug 1 00:36 admin.php
-rw-rw-r-- 1 myth myth 1150 Jul 4 11:52 favicon.ico
-rw-rw-r-- 1 myth myth 216 Jul 4 11:52 .htaccess
-rw-rw-r-- 1 myth myth 759 Jul 31 23:37 index.php
-rw-rw-r-- 1 myth myth 24 Jul 4 11:52 robots.txt
-rw-rw-r-- 1 myth myth 736 Jul 4 11:52 router.php
drwxrwxr-x 2 myth myth 24 Jul 4 11:52 static
[myth@contoso ~]$
[myth@contoso ~]$ cat /home/myth/www/think/public/.htaccess
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
[myth@contoso ~]$
CentOS7.2 安装Chrome
[root@contoso ~]# cat > /etc/yum.repos.d/google-chrome.repo
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl.google.com/linux/linux_signing_key.pub
[root@contoso ~]# yum install -y google-chrome-stable --nogpgcheck
[root@contoso ~]# cat > /usr/bin/google-chrome
#!/bin/bash
#
# Copyright (c) 2011 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Let the wrapped binary know that it has been run through the wrapper.
export CHROME_WRAPPER="`readlink -f "$0"`"
HERE="`dirname "$CHROME_WRAPPER"`"
# We include some xdg utilities next to the binary, and we want to prefer them
# over the system versions when we know the system versions are very old. We
# detect whether the system xdg utilities are sufficiently new to be likely to
# work for us by looking for xdg-settings. If we find it, we leave $PATH alone,
# so that the system xdg utilities (including any distro patches) will be used.
if ! which xdg-settings &> /dev/null; then
# Old xdg utilities. Prepend $HERE to $PATH to use ours instead.
export PATH="$HERE:$PATH"
else
# Use system xdg utilities. But first create mimeapps.list if it doesn't
# exist; some systems have bugs in xdg-mime that make it fail without it.
xdg_app_dir="${XDG_DATA_HOME:-$HOME/.local/share/applications}"
mkdir -p "$xdg_app_dir"
[ -f "$xdg_app_dir/mimeapps.list" ] || touch "$xdg_app_dir/mimeapps.list"
fi
# Always use our versions of ffmpeg libs.
# This also makes RPMs find the compatibly-named library symlinks.
if [[ -n "$LD_LIBRARY_PATH" ]]; then
LD_LIBRARY_PATH="$HERE:$HERE/lib:$LD_LIBRARY_PATH"
else
LD_LIBRARY_PATH="$HERE:$HERE/lib"
fi
export LD_LIBRARY_PATH
export CHROME_VERSION_EXTRA="stable"
# We don't want bug-buddy intercepting our crashes. http://crbug.com/24120
export GNOME_DISABLE_CRASH_DIALOG=SET_BY_GOOGLE_CHROME
# Sanitize std{in,out,err} because they'll be shared with untrusted child
# processes (http://crbug.com/376567).
exec < /dev/null
exec > >(exec cat)
exec 2> >(exec cat >&2)
# Make sure that the profile directory specified in the environment, if any,
# overrides the default.
if [[ -n "$CHROME_USER_DATA_DIR" ]]; then
# Note: exec -a below is a bashism.
exec -a "$0" "$HERE/chrome" \
--user-data-dir="$CHROME_USER_DATA_DIR" "$@"
else
exec -a "$0" "$HERE/chrome" "$@" --no-sandbox --user-data-dir
fi
[root@contoso ~]#
chrome://extensions/
https://chrome.google.com/webstore/search/postman?hl=en-US
REST请求伪装
[root@contoso ~]# cat > index.html
[root@contoso ~]# netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 2025/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1168/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1140/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1724/master
tcp 0 0 0.0.0.0:10081 0.0.0.0:* LISTEN 2708/lighttpd
tcp 0 0 0.0.0.0:10082 0.0.0.0:* LISTEN 2708/lighttpd
tcp 0 0 127.0.0.1:10083 0.0.0.0:* LISTEN 2585/httpd
tcp 0 0 127.0.0.1:56220 127.0.0.1:10083 TIME_WAIT -
tcp 0 0 192.168.10.10:52650 52.87.97.207:443 ESTABLISHED 4046/chrome --no-sa
tcp 0 96 192.168.10.10:22 192.168.10.1:57798 ESTABLISHED 7158/sshd: root@pts
tcp 0 0 127.0.0.1:56222 127.0.0.1:10083 TIME_WAIT -
tcp 0 0 127.0.0.1:56218 127.0.0.1:10083 TIME_WAIT -
tcp 0 0 192.168.10.10:22 192.168.10.1:56761 ESTABLISHED 6944/sshd: root@pts
tcp 0 1 192.168.10.10:42922 74.125.204.138:443 SYN_SENT 4046/chrome --no-sa
tcp 0 0 192.168.10.10:22 192.168.10.1:51318 ESTABLISHED 5673/sshd: root@pts
tcp 0 0 127.0.0.1:56216 127.0.0.1:10083 TIME_WAIT -
tcp 0 1 192.168.10.10:42920 74.125.204.138:443 SYN_SENT 4046/chrome --no-sa
tcp6 0 0 :::3306 :::* LISTEN 1372/mysqld
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::20080 :::* LISTEN 3872/java
tcp6 0 0 :::80 :::* LISTEN 2585/httpd
tcp6 0 0 :::22 :::* LISTEN 1168/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1140/cupsd
tcp6 0 0 :::10137 :::* LISTEN 3872/java
tcp6 0 0 ::1:25 :::* LISTEN 1724/master
tcp6 0 0 :::28029 :::* LISTEN 3872/java
tcp6 0 0 :::9000 :::* LISTEN 3872/java
tcp6 0 0 :::9001 :::* LISTEN 3872/java
tcp6 0 0 192.168.10.10:3306 192.168.10.1:51051 ESTABLISHED 1372/mysqld
tcp6 0 0 192.168.10.10:3306 192.168.10.1:51053 ESTABLISHED 1372/mysqld
[root@contoso ~]#
[root@contoso ~]# socketlog-server
SocketLog started success
[root@contoso ~]# netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 2025/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1168/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1140/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1724/master
tcp 0 0 0.0.0.0:10081 0.0.0.0:* LISTEN 2708/lighttpd
tcp 0 0 0.0.0.0:10082 0.0.0.0:* LISTEN 2708/lighttpd
tcp 0 0 127.0.0.1:10083 0.0.0.0:* LISTEN 2585/httpd
tcp 0 0 192.168.10.10:52650 52.87.97.207:443 ESTABLISHED 4046/chrome --no-sa
tcp 0 96 192.168.10.10:22 192.168.10.1:57798 ESTABLISHED 7158/sshd: root@pts
tcp 0 0 127.0.0.1:56270 127.0.0.1:10083 TIME_WAIT -
tcp 0 0 127.0.0.1:56268 127.0.0.1:10083 TIME_WAIT -
tcp 0 0 192.168.10.10:22 192.168.10.1:56761 ESTABLISHED 6944/sshd: root@pts
tcp 0 0 192.168.10.10:22 192.168.10.1:51318 ESTABLISHED 5673/sshd: root@pts
tcp6 0 0 :::3306 :::* LISTEN 1372/mysqld
tcp6 0 0 :::1229 :::* LISTEN 7442/node
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::20080 :::* LISTEN 3872/java
tcp6 0 0 :::80 :::* LISTEN 2585/httpd
tcp6 0 0 :::22 :::* LISTEN 1168/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1140/cupsd
tcp6 0 0 :::10137 :::* LISTEN 3872/java
tcp6 0 0 ::1:25 :::* LISTEN 1724/master
tcp6 0 0 :::1116 :::* LISTEN 7442/node
tcp6 0 0 :::28029 :::* LISTEN 3872/java
tcp6 0 0 :::9000 :::* LISTEN 3872/java
tcp6 0 0 :::9001 :::* LISTEN 3872/java
tcp6 0 0 192.168.10.10:3306 192.168.10.1:51051 ESTABLISHED 1372/mysqld
tcp6 0 0 192.168.10.10:3306 192.168.10.1:51053 ESTABLISHED 1372/mysqld
[root@contoso ~]#
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st
// +----------------------------------------------------------------------
return [
// +----------------------------------------------------------------------
// | 应用设置
// +----------------------------------------------------------------------
// 应用命名空间
'app_namespace' => 'app',
// 应用调试模式
'app_debug' => true,
// 应用Trace
// 'app_trace' => false,
// 开启应用Trace调试
'app_trace' => true,
// 设置Trace显示方式
'trace' => [
// 在当前Html页面显示Trace信息
'type' => 'html',
],
// 应用模式状态
'app_status' => '',
// 是否支持多模块
'app_multi_module' => true,
// 入口自动绑定模块
'auto_bind_module' => false,
// 注册的根命名空间
'root_namespace' => [],
// 扩展函数文件
'extra_file_list' => [THINK_PATH . 'helper' . EXT],
// 默认输出类型
'default_return_type' => 'html',
// 默认AJAX 数据返回格式,可选json xml ...
'default_ajax_return' => 'json',
// 默认JSONP格式返回的处理方法
'default_jsonp_handler' => 'jsonpReturn',
// 默认JSONP处理方法
'var_jsonp_handler' => 'callback',
// 默认时区
'default_timezone' => 'PRC',
// 是否开启多语言
'lang_switch_on' => false,
// 默认全局过滤方法 用逗号分隔多个
//'default_filter' => '',
// 设置默认的全局过滤规则 多个用数组或者逗号分隔
'default_filter' => 'htmlspecialchars',
// 默认语言
'default_lang' => 'zh-cn',
// 应用类库后缀
'class_suffix' => false,
// 控制器类后缀
'controller_suffix' => false,
// 是否启用控制器类后缀
//'controller_suffix' => true,
// +----------------------------------------------------------------------
// | 模块设置
// +----------------------------------------------------------------------
// 默认模块名
'default_module' => 'index',
// 禁止访问模块
'deny_module_list' => ['common'],
// 默认控制器名
'default_controller' => 'Index',
// 默认操作名
'default_action' => 'index',
// 默认验证器
'default_validate' => '',
// 默认的空控制器名
'empty_controller' => 'Error',
// 操作方法后缀
'action_suffix' => '',
// 自动搜索控制器
'controller_auto_search' => false,
// +----------------------------------------------------------------------
// | URL设置
// +----------------------------------------------------------------------
// PATHINFO变量名 用于兼容模式
'var_pathinfo' => 's',
// 兼容PATH_INFO获取
'pathinfo_fetch' => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL'],
// pathinfo分隔符
'pathinfo_depr' => '/',
// 设置pathinfo分隔符
//'pathinfo_depr' => ':',
// URL伪静态后缀
'url_html_suffix' => 'html',
// URL普通方式参数 用于自动生成
'url_common_param' => false,
// URL参数方式 0 按名称成对解析 1 按顺序解析
'url_param_type' => 0,
// 按照参数顺序获取
//'url_param_type' => 1,
// 是否开启路由
'url_route_on' => true,
// 路由使用完整匹配
'route_complete_match' => false,
// 路由配置文件(支持配置多个)
'route_config_file' => ['route'],
// 是否强制使用路由
'url_route_must' => false,
// 域名部署
'url_domain_deploy' => false,
// 域名根,如thinkphp.cn
'url_domain_root' => '',
// 是否自动转换URL中的控制器和操作名
//'url_convert' => true,
// 关闭URL自动转换(支持驼峰访问控制器)
'url_convert' => false,
// 默认的访问控制器层
'url_controller_layer' => 'controller',
// 表单请求类型伪装变量
'var_method' => '_method',
// 表单ajax伪装变量
'var_ajax' => '_ajax',
// 表单pjax伪装变量
'var_pjax' => '_pjax',
// 是否开启请求缓存 true自动缓存 支持设置请求缓存规则
'request_cache' => false,
// 请求缓存有效期
'request_cache_expire' => null,
// 全局请求缓存排除规则
'request_cache_except' => [],
// +----------------------------------------------------------------------
// | 模板设置
// +----------------------------------------------------------------------
'template' => [
// 模板引擎类型 支持 php think 支持扩展
'type' => 'Think',
// 模板路径
'view_path' => '',
// 模板后缀
'view_suffix' => 'html',
// 模板文件名分隔符
'view_depr' => DS,
// 模板引擎普通标签开始标记
'tpl_begin' => '{',
// 模板引擎普通标签结束标记
'tpl_end' => '}',
// 标签库标签开始标记
'taglib_begin' => '{',
// 标签库标签结束标记
'taglib_end' => '}',
//统一使用布局
'layout_on' => true,
'layout_name' => 'layout',
'layout_item' => '[__REPLACE__]',
],
/*
'template' => [
// 模板引擎类型 支持 php think 支持扩展
'type' => 'Think',
// 模板路径
'view_path' => '../template/index/',
// 模板后缀
'view_suffix' => '.tpl',
// 模板文件名分隔符
'view_depr' => DS, // '_'
],*/
// 视图输出字符串内容替换
'view_replace_str' => [],
// 默认跳转页面对应的模板文件
'dispatch_success_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',
'dispatch_error_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',
// +----------------------------------------------------------------------
// | 异常及错误设置
// +----------------------------------------------------------------------
// 异常页面的模板文件
'exception_tmpl' => THINK_PATH . 'tpl' . DS . 'think_exception.tpl',
// 错误显示信息,非调试模式有效
'error_message' => '页面错误!请稍后再试~',
// 显示错误信息
'show_error_msg' => false,
// 异常处理handle类 留空使用 \think\exception\Handle
//'exception_handle' => '',
//API后台来处理异常
'exception_handle' => '\app\api\exception\Http',
// +----------------------------------------------------------------------
// | 日志设置
// +----------------------------------------------------------------------
/*
'log' => [
// 日志记录方式,内置 file socket 支持扩展
'type' => 'File',
// 日志保存目录
'path' => LOG_PATH,
// 日志记录级别
'level' => [],
// error和sql日志单独记录
'apart_level' => ['error','sql'],
],*/
'log' => [
'type' => 'socket',
'host' => 'localhost',
'show_included_files' => true,
'force_client_ids' => ['slog_20170713'],
'allow_client_ids' => ['slog_20170713'],
],
// +----------------------------------------------------------------------
// | Trace设置 开启 app_trace 后 有效
// +----------------------------------------------------------------------
'trace' => [
// 内置Html Console 支持扩展
'type' => 'Html',
],
// +----------------------------------------------------------------------
// | 缓存设置
// +----------------------------------------------------------------------
'cache' => [
// 驱动方式
'type' => 'File',
// 缓存保存目录
'path' => CACHE_PATH,
// 缓存前缀
'prefix' => '',
// 缓存有效期 0表示永久缓存
'expire' => 0,
],
// +----------------------------------------------------------------------
// | 会话设置
// +----------------------------------------------------------------------
'session' => [
'id' => '',
// SESSION_ID的提交变量,解决flash上传跨域
'var_session_id' => '',
// SESSION 前缀
'prefix' => 'think',
// 驱动方式 支持redis memcache memcached
'type' => '',
// 是否自动开启 SESSION
'auto_start' => true,
],
// +----------------------------------------------------------------------
// | Cookie设置
// +----------------------------------------------------------------------
'cookie' => [
// cookie 名称前缀
'prefix' => '',
// cookie 保存时间
'expire' => 0,
// cookie 保存路径
'path' => '/',
// cookie 有效域名
'domain' => '',
// cookie 启用安全传输
'secure' => false,
// httponly设置
'httponly' => '',
// 是否使用 setcookie
'setcookie' => true,
],
//分页配置
'paginate' => [
'type' => 'bootstrap',
'var_page' => 'page',
'list_rows' => 15,
],
// 数据库配置1
'db1' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'testdb1',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '123456',
// 数据库连接端口
'hostport' => '3306',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'think_',
],
// 数据库配置2
'db2' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'testdb2',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '123456',
// 数据库连接端口
'hostport' => '3306',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'think_',
],
];
显示ThinkPHP5.0命令行当前支持的所有指令:
[root@contoso ~]# cd /home/myth/www/think
[root@contoso think]# pwd
/home/myth/www/think
[root@contoso think]# php think
Think Console version 0.1
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-V, --version Display this console version
-q, --quiet Do not output any message
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Available commands:
build Build Application Dirs
clear Clear runtime file
help Displays help for a command
list Lists commands
make
make:controller Create a new resource controller class
make:model Create a new model class
optimize
optimize:autoload Optimizes PSR0 and PSR4 packages to be loaded with classmaps too, good for production.
optimize:config Build config and common file cache.
optimize:route Build route cache.
optimize:schema Build database schema cache.
[root@contoso think]#
生成模块:
下面我们给应用生成一个新的模块test ,首先需要在apps 目录下面创建一个build.php 定义
文件,文件内容如下:
return [
// 定义test模块的自动生成
'test' => [
'__dir__' => ['controller', 'model', 'view'],
'controller' => ['User', 'UserType'],
'model' => ['User', 'UserType'],
'view' => ['index/index', 'index/test'],
],
];
[root@contoso think]# ll
total 28
drwxrwxr-x 5 myth myth 186 Aug 1 18:37 apps
-rw-rw-r-- 1 myth myth 1099 Jul 31 23:34 build.php
-rw-rw-r-- 1 myth myth 570 Jul 4 11:52 composer.json
-rw-rw-r-- 1 myth myth 3786 Jul 31 19:04 composer.lock
drwxrwxr-x 2 myth myth 24 Jul 4 11:52 extend
-rw-rw-r-- 1 myth myth 1822 Jul 4 11:52 LICENSE.txt
drwxrwxr-x 3 myth myth 126 Aug 1 00:36 public
-rw-rw-r-- 1 myth myth 5775 Jul 4 11:52 README.md
drwxrwxr-x 2 apache apache 24 Jul 4 11:52 runtime
-rw-rw-r-- 1 myth myth 746 Jul 31 23:36 think
drwxrwxr-x 5 myth myth 324 Jul 31 19:04 thinkphp
drwxrwxr-x 4 myth myth 76 Jul 31 19:04 vendor
[root@contoso think]#
然后在命令行下面,执行:
[root@contoso think]# php think build
Successed
[root@contoso think]# ll /home/myth/www/think/apps
total 36
drwxrwxr-x 5 myth myth 85 Aug 1 12:35 api
-rw-rw-r-- 1 myth myth 558 Aug 1 12:34 build.php
-rw-rw-r-- 1 myth myth 606 Jul 4 11:52 command.php
-rw-rw-r-- 1 myth myth 616 Jul 4 11:52 common.php
-rw-rw-r-- 1 myth myth 8799 Aug 1 12:23 config.php
-rw-rw-r-- 1 myth myth 1898 Jul 4 11:52 database.php
drwxrwxr-x 5 myth myth 85 Aug 1 12:35 demo
drwxrwxr-x 3 myth myth 24 Jul 4 11:52 index
-rw-rw-r-- 1 myth myth 4435 Aug 1 18:37 route.php
-rw-rw-r-- 1 myth myth 981 Jul 4 11:52 tags.php
drwxrwxr-x 5 myth myth 85 Aug 1 12:35 test
[root@contoso think]# tree /home/myth/www/think/apps/test
/var/www/think/apps/test
├── common.php
├── config.php
├── controller
│ ├── Index.php
│ ├── User.php
│ └── UserType.php
├── model
│ ├── User.php
│ └── UserType.php
└── view
└── index
├── index.html
└── test.html
4 directories, 9 files
[root@contoso think]#
接下来,我们可以访问
http://contoso.org/test/
生成文件:
还可以用make 指令单独生成某个应用类库文件,例如:
[root@contoso ~]#cd/home/myth/www/think
[root@contoso think]#php think make:controller test/Blog
Controller created successfully.
[root@contoso think]# tree /home/myth/www/think/apps/test
/var/www/think/apps/test
├── common.php
├── config.php
├── controller
│ ├── Blog.php
│ ├── Index.php
│ ├── User.php
│ └── UserType.php
├── model
│ ├── User.php
│ └── UserType.php
└── view
└── index
├── index.html
└── test.html
4 directories, 10 files
[root@contoso think]#
会自动为test模块生成一个 Blog控制器文件。
注意,默认生成的控制器类是属于资源控制器,并且继承了\think\Controller。
如果希望生成一个空的控制器,可以使用
[root@contoso think]#php think make:controller test/Blog --plain
又或者生成一个模型文件
[root@contoso think]#php think make:model test/Blog
Model created successfully.
[root@contoso think]# tree /home/myth/www/think/apps/test
/home/myth/www/think/apps/test
├── common.php
├── config.php
├── controller
│ ├── Blog.php
│ ├── Index.php
│ ├── User.php
│ └── UserType.php
├── model
│ ├── Blog.php
│ ├── User.php
│ └── UserType.php
└── view
└── index
├── index.html
└── test.html
4 directories, 11 files
[root@contoso think]#
生成类库映射文件
在生成类库文件之后,我们强烈建议使用命令行生成类库映射文件,可以提高自动加载的性能,用法如下:
php think optimize:autoload
[root@contoso think]# tree /home/myth/www/think/runtime
/var/www/think/runtime
├── cache
│ ├── 10
│ ├── 2c
│ ├── 37
│ ├── 97
│ ├── 9b
│ ├── aa
│ ├── b4
│ ├── cd
│ ├── e6
│ └── ef
├── log
│ └── 201707
│ ├── 09.log
│ ├── 10.log
│ ├── 11.log
│ ├── 12.log
│ ├── 12_sql.log
│ ├── 13.log
│ └── 13_sql.log
└── temp
├── 05298ce6c97542a523ca6b9a2f99e2e0.php
├── 0c0761ad40371ca875eef82bed6fac8b.php
├── 40c4cbd97fc727507cce2922e2708d81.php
├── 44086db842173b76b442ec6ee84b74b4.php
├── 6ef062f8ed644a1083155e681e7f7cdc.php
├── e319b0ab5fc2fe69ec85ccc9dad9fb62.php
└── fdc06d0a4ecd09fe301acada23705d1b.php
14 directories, 14 files
[root@contoso think]# pwd
/home/myth/www/think
[root@contoso think]# ll
total 32
drwxrwxr-x 5 myth myth 186 Aug 1 18:37 apps
-rw-rw-r-- 1 myth myth 1099 Jul 31 23:34 build.php
-rw-rw-r-- 1 myth myth 570 Jul 4 11:52 composer.json
-rw-rw-r-- 1 myth myth 3786 Jul 31 19:04 composer.lock
drwxrwxr-x 2 myth myth 24 Jul 4 11:52 extend
-rw-rw-r-- 1 myth myth 1822 Jul 4 11:52 LICENSE.txt
drwxrwxr-x 3 myth myth 126 Aug 1 00:36 public
-rw-rw-r-- 1 myth myth 5775 Jul 4 11:52 README.md
drwxrwxr-x 2 apache apache 24 Jul 4 11:52 runtime
drwxr-xr-x 3 myth myth 746 Jul 31 23:36 template
-rw-rw-r-- 1 myth myth 746 Jul 31 23:36 think
drwxrwxr-x 5 myth myth 324 Jul 31 19:04 thinkphp
drwxrwxr-x 4 myth myth 76 Jul 31 19:04 vendor
[root@contoso think]# php think optimize:autoload
Succeed!
[root@contoso think]# tree /home/myth/www/think/runtime
/var/www/think/runtime
├── cache
│ ├── 10
│ ├── 2c
│ ├── 37
│ ├── 97
│ ├── 9b
│ ├── aa
│ ├── b4
│ ├── cd
│ ├── e6
│ └── ef
├── classmap.php
├── log
│ └── 201707
│ ├── 09.log
│ ├── 10.log
│ ├── 11.log
│ ├── 12.log
│ ├── 12_sql.log
│ ├── 13.log
│ └── 13_sql.log
└── temp
├── 05298ce6c97542a523ca6b9a2f99e2e0.php
├── 0c0761ad40371ca875eef82bed6fac8b.php
├── 40c4cbd97fc727507cce2922e2708d81.php
├── 44086db842173b76b442ec6ee84b74b4.php
├── 6ef062f8ed644a1083155e681e7f7cdc.php
├── e319b0ab5fc2fe69ec85ccc9dad9fb62.php
└── fdc06d0a4ecd09fe301acada23705d1b.php
14 directories, 15 files
[root@contoso think]#
执行完毕,会在RUNTIME_PATH 目录下面生成一个classmap.php 文件,包括了系统和应用的所有类库
文件的映射列表。
[root@contoso think]# cat /home/myth/www/think/runtime/classmap.php
生成路由缓存文件
如果你的应用定义了大量的路由规则,那么建议在实际部署后生成路由缓存文件,可以免去路由注册的开
销,从而改善路由的检测效率,用法如下:
php think optimize:route
[root@contoso think]# cd /home/myth/www/think
[root@contoso think]# ll
total 32
drwxrwxr-x 5 myth myth 186 Aug 1 18:37 apps
-rw-rw-r-- 1 myth myth 1099 Jul 31 23:34 build.php
-rw-rw-r-- 1 myth myth 570 Jul 4 11:52 composer.json
-rw-rw-r-- 1 myth myth 3786 Jul 31 19:04 composer.lock
drwxrwxr-x 2 myth myth 24 Jul 4 11:52 extend
-rw-rw-r-- 1 myth myth 1822 Jul 4 11:52 LICENSE.txt
drwxrwxr-x 3 myth myth 126 Aug 1 00:36 public
-rw-rw-r-- 1 myth myth 5775 Jul 4 11:52 README.md
drwxrwxr-x 2 apache apache 24 Jul 4 11:52 runtime
drwxr-xr-x 3 myth myth 746 Jul 31 23:36 template
-rw-rw-r-- 1 myth myth 746 Jul 31 23:36 think
drwxrwxr-x 5 myth myth 324 Jul 31 19:04 thinkphp
drwxrwxr-x 4 myth myth 76 Jul 31 19:04 vendor
[root@contoso think]# php think optimize:route
Succeed!
[root@contoso think]# tree /home/myth/www/think/runtime
/home/myth/www/think/runtime
├── cache
│ ├── 10
│ ├── 2c
│ ├── 37
│ ├── 97
│ ├── 9b
│ ├── aa
│ ├── b4
│ ├── cd
│ ├── e6
│ └── ef
├── classmap.php
├── log
│ └── 201707
│ ├── 09.log
│ ├── 10.log
│ ├── 11.log
│ ├── 12.log
│ ├── 12_sql.log
│ ├── 13.log
│ └── 13_sql.log
├── route.php
└── temp
├── 05298ce6c97542a523ca6b9a2f99e2e0.php
├── 0c0761ad40371ca875eef82bed6fac8b.php
├── 40c4cbd97fc727507cce2922e2708d81.php
├── 44086db842173b76b442ec6ee84b74b4.php
├── 6ef062f8ed644a1083155e681e7f7cdc.php
├── e319b0ab5fc2fe69ec85ccc9dad9fb62.php
└── fdc06d0a4ecd09fe301acada23705d1b.php
14 directories, 16 files
[root@contoso think]#
执行完毕,会在RUNTIME_PATH 目录下面生成一个route.php 文件,包括了应用的所有路由规则定义列
表。
生成数据表字段缓存文件
如果你希望提高查询的性能,可以通过生成字段缓存来减少查询。用法如下:
php think optimize:schema
执行完毕,会在RUNTIME_PATH 目录下面创建schema目录,然后在该目录下面按照
database.table.php 的文件命名生成数据表字段缓存文件。
也可以指定数据库生成字段缓存(必须有用户权限),例如,下面指定生成demo数据库下面的所有数据表的
字段缓存信息。
php think optimize:schema --db demo
还可以读取模块的模型类来生成数据表字段缓存(这个适合多数据库连接的情况),如下:
php think optimize:schema --module index
会读取index模块的模型来生成数据表字段缓存。
[root@contoso think]# pwd
/var/www/think
[root@contoso think]# ll
total 32
drwxrwxr-x 5 myth myth 186 Aug 1 18:37 apps
-rw-rw-r-- 1 myth myth 1099 Jul 31 23:34 build.php
-rw-rw-r-- 1 myth myth 570 Jul 4 11:52 composer.json
-rw-rw-r-- 1 myth myth 3786 Jul 31 19:04 composer.lock
drwxrwxr-x 2 myth myth 24 Jul 4 11:52 extend
-rw-rw-r-- 1 myth myth 1822 Jul 4 11:52 LICENSE.txt
drwxrwxr-x 3 myth myth 126 Aug 1 00:36 public
-rw-rw-r-- 1 myth myth 5775 Jul 4 11:52 README.md
drwxrwxr-x 2 apache apache 24 Jul 4 11:52 runtime
drwxr-xr-x 3 myth myth 746 Jul 31 23:36 template
-rw-rw-r-- 1 myth myth 746 Jul 31 23:36 think
drwxrwxr-x 5 myth myth 324 Jul 31 19:04 thinkphp
drwxrwxr-x 4 myth myth 76 Jul 31 19:04 vendor
[root@contoso think]# php think optimize:schema
Succeed!
[root@contoso think]# tree /home/myth/www/think/runtime
/home/myth/www/think/runtime
├── cache
│ ├── 10
│ ├── 2c
│ ├── 37
│ ├── 97
│ ├── 9b
│ ├── aa
│ ├── b4
│ ├── cd
│ ├── e6
│ └── ef
├── classmap.php
├── log
│ └── 201707
│ ├── 09.log
│ ├── 10.log
│ ├── 11.log
│ ├── 12.log
│ ├── 12_sql.log
│ ├── 13.log
│ └── 13_sql.log
├── route.php
├── schema
│ ├── testdb1.think_access.php
│ ├── testdb1.think_blog.php
│ ├── testdb1.think_book.php
│ ├── testdb1.think_data.php
│ ├── testdb1.think_profile.php
│ ├── testdb1.think_role.php
│ └── testdb1.think_user.php
└── temp
├── 05298ce6c97542a523ca6b9a2f99e2e0.php
├── 0c0761ad40371ca875eef82bed6fac8b.php
├── 40c4cbd97fc727507cce2922e2708d81.php
├── 44086db842173b76b442ec6ee84b74b4.php
├── 6ef062f8ed644a1083155e681e7f7cdc.php
├── e319b0ab5fc2fe69ec85ccc9dad9fb62.php
└── fdc06d0a4ecd09fe301acada23705d1b.php
15 directories, 23 files
[root@contoso think]#
更新数据表字段缓存也是同样的方式,每次执行都会重新生成缓存。如果需要单独更新某个数据表的缓存,
可以使用:
php think optimize:schema --table think_user
支持指定数据库名称
php think optimize:schema --table demo.think_user
sendmail服务配置(注意:qq邮箱接收sendmail发的邮件一律被拒绝接收,别指望qq邮箱测试会成功):
[root@contoso ~]# sestatus -vSELinux status: disabled
php.ini (默认值即可):
SMTP=localhost
smtp_port=25
sendmail_path="/usr/lib/sendmail -t -i"
[root@contoso ~]# echo 'HOSTNAME=contoso.org' >> /etc/sysconfig/network
[root@contoso ~]# echo 'contoso.org # this is my email domainname' >> /etc/mail/local-host-names
[root@contoso ~]# vi /etc/mail/sendmail.cf
# SMTP daemon options
O DaemonPortOptions=Port=smtp,Addr=0.0.0.0, Name=MTA
[root@contoso ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 contoso.org
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.10 contoso.org
[root@contoso ~]#
[root@contoso ~]# nslookup -query=mx qq.com
C:\Users\Administrator>nslookup -qt=mx qq.com
[root@contoso ~]# tail -f /var/log/maillog
[root@contoso ~]# mail -s "this is a testing email content." [email protected] < anaconda-ks.cfg
[root@contoso ~]# cat /dev/null > /var/spool/mail/root && cat /dev/null > /var/log/maillog
[root@contoso ~]# alternatives --display mta
mta - status is auto.
link currently points to /usr/sbin/sendmail.sendmail
/usr/sbin/sendmail.postfix - priority 30
slave mta-pam: /etc/pam.d/smtp.postfix
slave mta-mailq: /usr/bin/mailq.postfix
slave mta-newaliases: /usr/bin/newaliases.postfix
slave mta-rmail: /usr/bin/rmail.postfix
slave mta-sendmail: /usr/lib/sendmail.postfix
slave mta-mailqman: /usr/share/man/man1/mailq.postfix.1.gz
slave mta-newaliasesman: /usr/share/man/man1/newaliases.postfix.1.gz
slave mta-aliasesman: /usr/share/man/man5/aliases.postfix.5.gz
slave mta-rmailman: (null)
slave mta-sendmailman: /usr/share/man/man1/sendmail.postfix.1.gz
/usr/sbin/sendmail.sendmail - priority 90
slave mta-pam: /etc/pam.d/smtp.sendmail
slave mta-mailq: /usr/bin/mailq.sendmail
slave mta-newaliases: /usr/bin/newaliases.sendmail
slave mta-rmail: /usr/bin/rmail.sendmail
slave mta-sendmail: /usr/lib/sendmail.sendmail
slave mta-mailqman: /usr/share/man/man1/mailq.sendmail.1.gz
slave mta-newaliasesman: /usr/share/man/man1/newaliases.sendmail.1.gz
slave mta-aliasesman: /usr/share/man/man5/aliases.sendmail.5.gz
slave mta-rmailman: /usr/share/man/man8/rmail.sendmail.8.gz
slave mta-sendmailman: /usr/share/man/man8/sendmail.sendmail.8.gz
Current `best' version is /usr/sbin/sendmail.sendmail.
[root@contoso ~]#
thinkphp5.0 config.php错误日志的接收邮箱配置方式:
'log' => [
'type' => 'driver\log\Email',
'email_addr' => '[email protected]',
'send_level' => ['error', 'info'],
],
安装验证码类库,在命令行下面切换到应用根目录下面,执行:
[root@contoso ~]$ cd /home/myth/www/think
[root@contoso think]# tree -L 2
.
├── apps
│ ├── api
│ ├── build.php
│ ├── command.php
│ ├── common.php
│ ├── config.php
│ ├── database.php
│ ├── demo
│ ├── index
│ ├── route.php
│ └── tags.php
├── build.php
├── composer.json
├── composer.lock
├── extend
│ ├── ArrayList.php
│ └── driver
├── LICENSE.txt
├── public
│ ├── favicon.ico
│ ├── index.php
│ ├── robots.txt
│ ├── router.php
│ └── static
├── README.md
├── runtime
│ ├── log
│ └── temp
├── template
│ └── index
├── think
├── thinkphp
│ ├── base.php
│ ├── codecov.yml
│ ├── composer.json
│ ├── console.php
│ ├── CONTRIBUTING.md
│ ├── convention.php
│ ├── helper.php
│ ├── lang
│ ├── library
│ ├── LICENSE.txt
│ ├── logo.png
│ ├── phpunit.xml
│ ├── README.md
│ ├── start.php
│ └── tpl
└── vendor
├── autoload.php
├── composer
└── topthink
20 directories, 31 files
[root@contoso think]# composer require topthink/think-captcha
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Using version ^1.0 for topthink/think-captcha
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing topthink/think-captcha (v1.0.7): Downloading (100%)
Writing lock file
Generating autoload files
[root@contoso think]#
因为httpd服务的运行用户默认是apache,所以上传文件夹uploads的权限必须分配给apache这个用户:
查看一下你的Apache的执行用户是谁: lsof -i:80
[root@contoso ~]# lsof -i:80[root@contoso ~]# ll /home/myth/www/think/public
total 20
-rw-rw-r-- 1 myth myth 203 Aug 1 00:36 admin.php
-rw-rw-r-- 1 myth myth 1150 Jul 4 11:52 favicon.ico
-rw-rw-r-- 1 myth myth 759 Jul 31 23:37 index.php
-rw-rw-r-- 1 myth myth 24 Jul 4 11:52 robots.txt
-rw-rw-r-- 1 myth myth 736 Jul 4 11:52 router.php
drwxrwxr-x 2 myth myth 24 Jul 4 11:52 static
drwxr-xr-x 2 myth myth 24 Jul 4 11:52 uploads
[root@contoso ~]# chown -R apache:apache /home/myth/www/think/runtime && ll /home/myth/www/think
total 28
drwxrwxr-x 5 myth myth 186 Aug 1 18:37 apps
-rw-rw-r-- 1 myth myth 1099 Jul 31 23:34 build.php
-rw-rw-r-- 1 myth myth 570 Jul 4 11:52 composer.json
-rw-rw-r-- 1 myth myth 3786 Jul 31 19:04 composer.lock
drwxrwxr-x 2 myth myth 24 Jul 4 11:52 extend
-rw-rw-r-- 1 myth myth 1822 Jul 4 11:52 LICENSE.txt
drwxrwxr-x 3 myth myth 126 Aug 1 00:36 public
-rw-rw-r-- 1 myth myth 5775 Jul 4 11:52 README.md
drwxrwxr-x 2 apache apache 24 Jul 4 11:52 runtime
-rw-rw-r-- 1 myth myth 746 Jul 31 23:36 think
drwxrwxr-x 5 myth myth 324 Jul 31 19:04 thinkphp
drwxrwxr-x 4 myth myth 76 Jul 31 19:04 vendor
[root@contoso ~]#
安装ThinkPHP5 的单元测试扩展,进入命令行,切换到应用根目录下面后,执行:
[myth@contoso ~]$ cd /home/myth/www/think
[root@contoso think]$ tree -L 2
.
├── apps
│ ├── api
│ ├── build.php
│ ├── command.php
│ ├── common.php
│ ├── config.php
│ ├── database.php
│ ├── demo
│ ├── index
│ ├── route.php
│ └── tags.php
├── build.php
├── composer.json
├── composer.lock
├── extend
│ ├── ArrayList.php
│ └── driver
├── LICENSE.txt
├── public
│ ├── favicon.ico
│ ├── index.php
│ ├── robots.txt
│ ├── router.php
│ ├── static
│ └── uploads
├── README.md
├── runtime
│ ├── log
│ └── temp
├── template
│ └── index
├── think
├── thinkphp
│ ├── base.php
│ ├── codecov.yml
│ ├── composer.json
│ ├── console.php
│ ├── CONTRIBUTING.md
│ ├── convention.php
│ ├── helper.php
│ ├── lang
│ ├── library
│ ├── LICENSE.txt
│ ├── logo.png
│ ├── phpunit.xml
│ ├── README.md
│ ├── start.php
│ └── tpl
└── vendor
├── autoload.php
├── composer
└── topthink
21 directories, 31 files
[root@contoso think]# composer require topthink/think-testing
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Using version ^1.0 for topthink/think-testing
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 25 installs, 0 updates, 0 removals
- Installing symfony/polyfill-mbstring (v1.4.0): Downloading (100%)
- Installing symfony/dom-crawler (v2.8.25): Downloading (100%)
- Installing symfony/yaml (v3.3.5): Downloading (100%)
- Installing sebastian/version (1.0.6): Downloading (100%)
- Installing sebastian/global-state (1.1.1): Downloading (100%)
- Installing sebastian/recursion-context (1.0.5): Downloading (100%)
- Installing sebastian/exporter (1.2.2): Downloading (100%)
- Installing sebastian/environment (1.3.8): Downloading (100%)
- Installing sebastian/diff (1.4.3): Downloading (100%)
- Installing sebastian/comparator (1.2.4): Downloading (100%)
- Installing doctrine/instantiator (1.1.0): Downloading (100%)
- Installing phpunit/php-text-template (1.2.1): Downloading (100%)
- Installing phpunit/phpunit-mock-objects (2.3.8): Downloading (100%)
- Installing phpunit/php-timer (1.0.9): Downloading (100%)
- Installing phpunit/php-file-iterator (1.4.2): Downloading (100%)
- Installing phpunit/php-token-stream (1.4.11): Downloading (100%)
- Installing phpunit/php-code-coverage (2.2.4): Downloading (100%)
- Installing webmozart/assert (1.2.0): Downloading (100%)
- Installing phpdocumentor/reflection-common (1.0): Downloading (100%)
- Installing phpdocumentor/type-resolver (0.4.0): Downloading (100%)
- Installing phpdocumentor/reflection-docblock (3.2.0): Downloading (100%)
- Installing phpspec/prophecy (v1.7.0): Downloading (100%)
- Installing phpunit/phpunit (4.8.36): Downloading (100%)
- Installing topthink/think-helper (v1.0.6): Downloading (100%)
- Installing topthink/think-testing (v1.0.6): Downloading (100%)
symfony/dom-crawler suggests installing symfony/css-selector ()
symfony/yaml suggests installing symfony/console (For validating YAML files using the lint command)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/php-code-coverage suggests installing ext-xdebug (>=2.2.1)
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
Writing lock file
Generating autoload files
[root@contoso think]#
[root@contoso ~]# yum install php71-php-pecl-swoole
[root@contoso think]# pwd
/home/myth/www/think
[root@contoso think]# ll
total 32
drwxrwxr-x 5 myth myth 186 Aug 4 16:23 apps
-rw-rw-r-- 1 myth myth 1099 Jul 31 23:34 build.php
-rw-rw-r-- 1 myth myth 655 Aug 12 10:03 composer.json
-rw-rw-r-- 1 myth myth 7568 Aug 12 10:03 composer.lock
drwxrwxr-x 2 myth myth 24 Jul 4 11:52 extend
-rw-rw-r-- 1 myth myth 1822 Jul 4 11:52 LICENSE.txt
drwxrwxr-x 3 myth myth 126 Aug 5 03:19 public
-rw-rw-r-- 1 myth myth 5775 Jul 4 11:52 README.md
drwxrwxr-x 4 apache apache 47 Aug 1 23:57 runtime
-rw-rw-r-- 1 myth myth 746 Jul 31 23:36 think
drwxrwxr-x 5 myth myth 324 Aug 11 03:23 thinkphp
drwxrwxr-x 5 myth myth 77 Aug 12 10:03 vendor
[root@contoso think]# php public/index.php index/Demon/start
[root@contoso think]# lsof -i:9501
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php 71618 root 3u IPv4 488904 0t0 TCP *:9501 (LISTEN)
[root@contoso think]# yum install -y telnet
[root@contoso think]# telnet 127.0.0.1 9501
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
hello
onReceive: hello
apps/index/controller
目录下建立Demon.php
文件
namespace app\index\controller;
// 必须 use 并继承 \think\swoole\Server 类
use think\swoole\Server;
class Demon extends Server
{
// 监听所有地址
protected $host = '0.0.0.0';
// 监听 9501 端口
protected $port = 9501;
// 指定运行模式为多进程
protected $mode = SWOOLE_PROCESS;
// 指定 socket 的类型为 ipv4 的 tcp socket
protected $sockType = SWOOLE_SOCK_TCP;
// 配置项
protected $option = [
/**
* 设置启动的worker进程数
* 业务代码是全异步非阻塞的,这里设置为CPU的1-4倍最合理
* 业务代码为同步阻塞,需要根据请求响应时间和系统负载来调整
*/
'worker_num' => 4,
// 守护进程化
'daemonize' => true,
// 监听队列的长度
'backlog' => 128
];
/**
* 收到信息时回调函数
* @param \swoole_server $serv swoole_server对象
* @param $fd TCP客户端连接的文件描述符
* @param $from_id TCP连接所在的Reactor线程ID
* @param $data 收到的数据内容
*/
public function onReceive(\swoole_server $server, $fd, $from_id, $data)
{
$server->send($fd, 'onReceive: ' . $data);
}
}
一次关闭同名称的多个进程:
分解关闭进程指令 ps -eaf |grep 'index/Socket/run'|grep -v "grep"|awk '{print $2}'|xargs kill -9,看看每步操作的效果
[root@contoso ~]# ps -eaf
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 07:02 ? 00:00:06 /usr/lib/systemd/systemd --switched-root --system --deseria
root 2 0 0 07:02 ? 00:00:00 [kthreadd]
root 3 2 0 07:02 ? 00:00:02 [ksoftirqd/0]
root 5 2 0 07:02 ? 00:00:00 [kworker/0:0H]
root 7 2 0 07:02 ? 00:00:00 [migration/0]
root 8 2 0 07:02 ? 00:00:00 [rcu_bh]
root 9 2 0 07:02 ? 00:01:09 [rcu_sched]
root 10 2 0 07:02 ? 00:00:00 [watchdog/0]
root 11 2 0 07:02 ? 00:00:00 [watchdog/1]
root 12 2 0 07:02 ? 00:00:00 [migration/1]
root 13 2 0 07:02 ? 00:00:00 [ksoftirqd/1]
root 16 2 0 07:02 ? 00:00:00 [watchdog/2]
root 17 2 0 07:02 ? 00:00:00 [migration/2]
root 18 2 0 07:02 ? 00:00:00 [ksoftirqd/2]
root 20 2 0 07:02 ? 00:00:00 [kworker/2:0H]
root 21 2 0 07:02 ? 00:00:00 [watchdog/3]
root 22 2 0 07:02 ? 00:00:00 [migration/3]
root 23 2 0 07:02 ? 00:00:00 [ksoftirqd/3]
root 25 2 0 07:02 ? 00:00:00 [kworker/3:0H]
root 27 2 0 07:02 ? 00:00:00 [kdevtmpfs]
root 28 2 0 07:02 ? 00:00:00 [netns]
root 29 2 0 07:02 ? 00:00:00 [khungtaskd]
root 30 2 0 07:02 ? 00:00:00 [writeback]
root 31 2 0 07:02 ? 00:00:00 [kintegrityd]
root 32 2 0 07:02 ? 00:00:00 [bioset]
root 33 2 0 07:02 ? 00:00:00 [kblockd]
root 34 2 0 07:02 ? 00:00:00 [md]
root 40 2 0 07:03 ? 00:00:00 [kswapd0]
root 41 2 0 07:03 ? 00:00:00 [ksmd]
root 42 2 0 07:03 ? 00:00:13 [khugepaged]
root 43 2 0 07:03 ? 00:00:00 [fsnotify_mark]
root 44 2 0 07:03 ? 00:00:00 [crypto]
root 52 2 0 07:03 ? 00:00:00 [kthrotld]
root 53 2 0 07:03 ? 00:00:01 [kworker/u256:1]
root 54 2 0 07:03 ? 00:00:00 [kmpath_rdacd]
root 56 2 0 07:03 ? 00:00:00 [kworker/0:1]
root 57 2 0 07:03 ? 00:00:00 [kpsmoused]
root 59 2 0 07:03 ? 00:00:00 [ipv6_addrconf]
root 79 2 0 07:03 ? 00:00:00 [deferwq]
root 112 2 0 07:03 ? 00:00:00 [kauditd]
root 299 2 0 07:03 ? 00:00:00 [ata_sff]
root 300 2 0 07:03 ? 00:00:00 [mpt_poll_0]
root 301 2 0 07:03 ? 00:00:00 [mpt/0]
root 309 2 0 07:03 ? 00:00:00 [scsi_eh_0]
root 310 2 0 07:03 ? 00:00:00 [scsi_tmf_0]
root 311 2 0 07:03 ? 00:00:00 [scsi_eh_1]
root 313 2 0 07:03 ? 00:00:00 [scsi_tmf_1]
root 314 2 0 07:03 ? 00:00:00 [scsi_eh_2]
root 315 2 0 07:03 ? 00:00:00 [scsi_tmf_2]
root 316 2 0 07:03 ? 00:00:00 [ttm_swap]
root 350 2 0 07:03 ? 00:00:00 [kworker/0:1H]
root 392 2 0 07:03 ? 00:00:00 [kdmflush]
root 393 2 0 07:03 ? 00:00:00 [bioset]
root 404 2 0 07:03 ? 00:00:00 [kdmflush]
root 405 2 0 07:03 ? 00:00:00 [bioset]
root 418 2 0 07:03 ? 00:00:00 [xfsalloc]
root 419 2 0 07:03 ? 00:00:00 [xfs_mru_cache]
root 420 2 0 07:03 ? 00:00:00 [xfs-buf/dm-0]
root 421 2 0 07:03 ? 00:00:00 [xfs-data/dm-0]
root 422 2 0 07:03 ? 00:00:00 [xfs-conv/dm-0]
root 423 2 0 07:03 ? 00:00:00 [xfs-cil/dm-0]
root 424 2 0 07:03 ? 00:00:00 [xfs-reclaim/dm-]
root 425 2 0 07:03 ? 00:00:00 [xfs-log/dm-0]
root 426 2 0 07:03 ? 00:00:00 [xfs-eofblocks/d]
root 427 2 0 07:03 ? 00:00:30 [xfsaild/dm-0]
root 498 1 0 07:03 ? 00:00:00 /usr/lib/systemd/systemd-journald
root 522 2 0 07:03 ? 00:00:00 [rpciod]
root 523 1 0 07:03 ? 00:00:00 /usr/sbin/lvmetad -f
root 528 2 0 07:03 ? 00:00:03 [kworker/2:2]
root 536 1 0 07:03 ? 00:00:00 /usr/lib/systemd/systemd-udevd
root 556 2 0 07:03 ? 00:00:00 [nfit]
root 572 2 0 07:03 ? 00:00:00 [kworker/u257:0]
root 574 2 0 07:03 ? 00:00:00 [hci0]
root 575 2 0 07:03 ? 00:00:00 [hci0]
root 576 2 0 07:03 ? 00:00:00 [kworker/u257:1]
root 633 2 0 07:03 ? 00:00:00 [xfs-buf/sda1]
root 634 2 0 07:03 ? 00:00:00 [xfs-data/sda1]
root 635 2 0 07:03 ? 00:00:00 [xfs-conv/sda1]
root 636 2 0 07:03 ? 00:00:00 [xfs-cil/sda1]
root 637 2 0 07:03 ? 00:00:00 [xfs-reclaim/sda]
root 638 2 0 07:03 ? 00:00:00 [xfs-log/sda1]
root 639 2 0 07:03 ? 00:00:00 [xfs-eofblocks/s]
root 641 2 0 07:03 ? 00:00:00 [xfsaild/sda1]
root 649 2 0 07:03 ? 00:00:00 [kdmflush]
root 650 2 0 07:03 ? 00:00:00 [bioset]
root 657 2 0 07:03 ? 00:00:00 [xfs-buf/dm-2]
root 658 2 0 07:03 ? 00:00:00 [xfs-data/dm-2]
root 659 2 0 07:03 ? 00:00:00 [xfs-conv/dm-2]
root 660 2 0 07:03 ? 00:00:00 [xfs-cil/dm-2]
root 661 2 0 07:03 ? 00:00:00 [xfs-reclaim/dm-]
root 662 2 0 07:03 ? 00:00:00 [xfs-log/dm-2]
root 663 2 0 07:03 ? 00:00:00 [xfs-eofblocks/d]
root 664 2 0 07:03 ? 00:00:08 [xfsaild/dm-2]
root 689 1 0 07:03 ? 00:00:00 /sbin/auditd -n
root 706 689 0 07:03 ? 00:00:00 /sbin/audispd
avahi 709 1 0 07:03 ? 00:00:00 avahi-daemon: running [contoso.local]
libstor+ 711 1 0 07:03 ? 00:00:00 /usr/bin/lsmd -d
root 712 706 0 07:03 ? 00:00:00 /usr/sbin/sedispatch
root 717 1 0 07:03 ? 00:00:47 /usr/bin/vmtoolsd
dbus 718 1 0 07:03 ? 00:00:05 /bin/dbus-daemon --system --address=systemd: --nofork --nop
avahi 719 709 0 07:03 ? 00:00:00 avahi-daemon: chroot helper
root 724 1 0 07:03 ? 00:00:01 /usr/lib/systemd/systemd-logind
rtkit 725 1 0 07:03 ? 00:00:01 /usr/libexec/rtkit-daemon
polkitd 726 1 0 07:03 ? 00:00:02 /usr/lib/polkit-1/polkitd --no-debug
root 727 1 0 07:03 ? 00:00:08 /usr/sbin/irqbalance --foreground
root 728 1 0 07:03 ? 00:00:00 /usr/sbin/abrtd -d -s
root 729 1 0 07:03 ? 00:00:00 /usr/bin/abrt-watch-log -F Backtrace /var/log/Xorg.0.log --
root 730 1 0 07:03 ? 00:00:00 /usr/bin/abrt-watch-log -F BUG: WARNING: at WARNING: CPU: I
root 734 1 0 07:03 ? 00:00:00 /usr/libexec/bluetooth/bluetoothd
root 737 1 0 07:03 ? 00:00:15 /sbin/rngd -f
root 738 1 0 07:03 ? 00:00:00 /usr/sbin/ModemManager
root 740 1 0 07:03 ? 00:00:00 /usr/sbin/NetworkManager --no-daemon
root 741 1 0 07:03 ? 00:00:00 /usr/sbin/smartd -n -q never
root 747 1 0 07:03 ? 00:00:00 /usr/libexec/accounts-daemon
root 748 1 0 07:03 ? 00:00:00 /usr/sbin/alsactl -s -n 19 -c -E ALSA_CONFIG_PATH=/etc/alsa
root 756 1 0 07:03 ? 00:00:01 /bin/bash /usr/sbin/ksmtuned
root 768 1 0 07:03 ? 00:00:00 /usr/sbin/gssproxy -D
root 844 2 0 07:03 ? 00:00:00 [kworker/3:1H]
memcach+ 983 1 0 07:03 ? 00:00:04 /usr/bin/memcached -u memcached -p 11211 -m 64 -c 1024
root 986 1 0 07:03 ? 00:00:03 php-fpm: master process (/etc/php-fpm.conf)
root 987 1 0 07:03 ? 00:00:00 /usr/sbin/sshd -D
root 988 1 0 07:03 ? 00:00:00 /usr/sbin/cupsd -f
root 990 1 0 07:03 ? 00:00:06 /usr/bin/python -Es /usr/sbin/tuned -l -P
root 991 1 0 07:03 ? 00:00:00 /usr/sbin/rsyslogd -n
redis 992 1 0 07:03 ? 00:00:53 /usr/bin/redis-server 192.168.10.20:6379
root 1007 1 0 07:03 ? 00:00:04 /usr/sbin/httpd -DFOREGROUND
root 1009 1 0 07:03 ? 00:00:00 /usr/sbin/libvirtd
root 1011 1 0 07:03 ? 00:00:00 /usr/sbin/crond -n
root 1016 1 0 07:03 ? 00:00:00 /usr/sbin/atd -f
root 1021 1 0 07:03 ? 00:00:00 /usr/sbin/gdm
mysql 1176 1 0 07:03 ? 00:00:52 /usr/sbin/mysqld
apache 1246 986 0 07:03 ? 00:00:00 php-fpm: pool www
apache 1247 986 0 07:03 ? 00:00:00 php-fpm: pool www
apache 1248 986 0 07:03 ? 00:00:00 php-fpm: pool www
apache 1249 986 0 07:03 ? 00:00:00 php-fpm: pool www
apache 1255 986 0 07:03 ? 00:00:00 php-fpm: pool www
apache 1298 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1299 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1300 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1301 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1302 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1304 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1305 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1307 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1308 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1309 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1313 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1315 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1316 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1317 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1321 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1324 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1325 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1331 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1332 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1338 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1342 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1343 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1344 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1349 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1351 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1352 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1353 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1354 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1355 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1359 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1362 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1365 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1367 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1371 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1376 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1378 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1379 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1383 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1388 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1392 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1398 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1400 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1407 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1435 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1438 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1440 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1444 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1449 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1452 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1456 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1461 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1465 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1469 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1471 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1476 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1478 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1480 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1484 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1490 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1491 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1492 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1495 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1498 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1506 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1508 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1513 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1515 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1519 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1522 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1524 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 1527 1 0 07:03 ? 00:00:00 /usr/libexec/postfix/master -w
apache 1528 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1529 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1530 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1535 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1539 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1541 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1545 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1554 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1558 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1559 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1561 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1565 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1568 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1572 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1576 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
postfix 1579 1527 0 07:03 ? 00:00:00 qmgr -l -t unix -u
apache 1580 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1584 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1589 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1594 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1599 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1603 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1606 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1608 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1615 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1617 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1619 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1621 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1624 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1625 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1628 1007 0 07:03 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
nobody 1879 1 0 07:03 ? 00:00:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.
root 1882 1879 0 07:03 ? 00:00:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.
root 2512 1021 1 07:03 tty1 00:17:03 /usr/bin/Xorg :0 -background none -noreset -audit 4 -verbos
root 2571 1 0 07:03 ? 00:00:00 /usr/libexec/upowerd
colord 2603 1 0 07:03 ? 00:00:00 /usr/libexec/colord
root 2660 2 0 07:03 ? 00:00:00 [kworker/2:1H]
root 2716 1 0 07:03 ? 00:00:00 /usr/sbin/wpa_supplicant -u -f /var/log/wpa_supplicant.log
root 2720 1 0 07:03 ? 00:00:00 /usr/libexec/packagekitd
root 2766 1 0 07:03 ? 00:00:00 /usr/lib/udisks2/udisksd --no-debug
root 2868 1021 0 07:03 ? 00:00:00 gdm-session-worker [pam/gdm-password]
myth 2878 1 0 07:03 ? 00:00:00 /usr/bin/gnome-keyring-daemon --daemonize --login
myth 2884 2868 0 07:03 ? 00:00:00 gnome-session --session gnome-classic
myth 2891 1 0 07:03 ? 00:00:00 dbus-launch --sh-syntax --exit-with-session
myth 2892 1 0 07:03 ? 00:00:00 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --s
myth 2959 1 0 07:03 ? 00:00:00 /usr/libexec/gvfsd
myth 2964 1 0 07:03 ? 00:00:00 /usr/libexec/gvfsd-fuse /run/user/1000/gvfs -f -o big_write
myth 3049 2884 0 07:03 ? 00:00:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNO
myth 3071 1 0 07:03 ? 00:00:00 /usr/libexec/at-spi-bus-launcher
myth 3076 3071 0 07:03 ? 00:00:02 /bin/dbus-daemon --config-file=/etc/at-spi2/accessibility.c
myth 3078 1 0 07:03 ? 00:00:02 /usr/libexec/at-spi2-registryd --use-gnome-session
myth 3092 2884 0 07:03 ? 00:00:03 /usr/libexec/gnome-settings-daemon
myth 3109 1 0 07:03 ? 00:00:00 /usr/bin/pulseaudio --start --log-target=syslog
root 3123 2 0 07:03 ? 00:00:00 [krfcommd]
myth 3131 2884 6 07:03 ? 00:54:28 /usr/bin/gnome-shell
myth 3136 1 0 07:03 ? 00:00:00 /usr/libexec/gsd-printer
myth 3185 3131 0 07:03 ? 00:00:05 ibus-daemon --xim --panel disable
myth 3190 3185 0 07:03 ? 00:00:00 /usr/libexec/ibus-dconf
myth 3192 1 0 07:03 ? 00:00:02 /usr/libexec/ibus-x11 --kill-daemon
myth 3200 1 0 07:03 ? 00:00:00 /usr/libexec/gnome-shell-calendar-server
myth 3205 1 0 07:03 ? 00:00:00 /usr/libexec/evolution-source-registry
myth 3210 1 0 07:03 ? 00:00:00 /usr/libexec/goa-daemon
myth 3217 1 0 07:03 ? 00:00:03 /usr/libexec/goa-identity-service
myth 3230 1 0 07:03 ? 00:00:00 /usr/libexec/mission-control-5
myth 3232 1 0 07:03 ? 00:00:01 /usr/libexec/caribou
myth 3241 1 0 07:03 ? 00:00:00 /usr/libexec/gvfs-udisks2-volume-monitor
myth 3247 1 0 07:03 ? 00:00:00 /usr/libexec/gvfs-mtp-volume-monitor
myth 3252 1 0 07:03 ? 00:00:00 /usr/libexec/gvfs-afc-volume-monitor
myth 3259 1 0 07:03 ? 00:00:00 /usr/libexec/gvfs-goa-volume-monitor
myth 3267 1 0 07:03 ? 00:00:00 /usr/libexec/gvfs-gphoto2-volume-monitor
myth 3300 2884 0 07:03 ? 00:00:00 nautilus --no-default-window --force-desktop
myth 3307 2884 0 07:03 ? 00:00:00 /usr/libexec/tracker-miner-user-guides
myth 3309 2884 0 07:03 ? 00:00:00 /usr/bin/gnome-software --gapplication-service
myth 3313 1 0 07:03 ? 00:00:00 /usr/libexec/tracker-store
myth 3319 1 0 07:03 ? 00:01:16 /usr/bin/vmtoolsd -n vmusr
myth 3331 2884 0 07:03 ? 00:00:00 abrt-applet
myth 3341 2884 0 07:03 ? 00:00:00 /usr/libexec/tracker-extract
myth 3352 2884 0 07:03 ? 00:00:00 /usr/libexec/tracker-miner-apps
myth 3355 2884 0 07:03 ? 00:00:00 /usr/libexec/tracker-miner-fs
myth 3413 1 0 07:03 ? 00:00:00 /usr/libexec/gvfsd-trash --spawner :1.3 /org/gtk/gvfs/exec_
myth 3445 1 0 07:03 ? 00:00:00 /usr/libexec/evolution-calendar-factory
myth 3454 1 0 07:03 ? 00:00:00 /usr/libexec/gvfsd-metadata
myth 3466 3185 0 07:03 ? 00:00:01 /usr/libexec/ibus-engine-simple
myth 3510 1 0 07:03 ? 00:00:00 /bin/bash /home/myth/netbeans-8.2/platform/lib/nbexec --use
myth 3760 3510 1 07:03 ? 00:12:38 /home/myth/netbeans-8.2/bin/jre/bin/java -Djdk.home=/home/m
myth 3872 3131 7 07:03 ? 01:05:16 /usr/lib64/firefox/firefox
myth 3920 1 0 07:03 ? 00:00:00 /usr/libexec/gconfd-2
myth 3929 3872 0 07:04 ? 00:08:15 /usr/lib64/firefox/plugin-container -greomni /usr/lib64/fir
apache 4107 1007 0 07:04 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 5838 2 0 09:40 ? 00:00:02 [kworker/3:0]
root 5890 987 0 09:44 ? 00:00:00 sshd: root@pts/0
root 5894 5890 0 09:44 pts/0 00:00:00 -bash
root 5946 987 0 09:44 ? 00:00:00 sshd: root@pts/1
root 5948 5946 0 09:44 pts/1 00:00:00 -bash
root 6165 987 0 09:51 ? 00:00:00 sshd: root@pts/2
root 6175 6165 0 09:51 pts/2 00:00:00 -bash
myth 6437 1 0 10:04 ? 00:00:00 /usr/libexec/dconf-service
root 7694 2 0 11:50 ? 00:00:00 [kworker/3:2]
root 9376 2 0 14:10 ? 00:00:00 [kworker/2:1]
apache 9918 1007 0 14:54 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9929 1007 0 14:55 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9932 1007 0 14:56 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9965 1007 0 14:58 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9979 1007 0 14:59 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 11479 2 0 16:16 ? 00:00:00 [kworker/1:2H]
root 12088 6175 0 16:50 pts/2 00:00:00 redis-cli -h 127.0.0.1 -p 6379
root 12137 5894 0 16:52 pts/0 00:00:01 php public/index.php index/Socket/run
root 12147 12137 0 16:52 pts/0 00:00:00 php public/index.php index/Socket/run
root 12152 12147 0 16:52 pts/0 00:00:00 php public/index.php index/Socket/run
root 12153 12147 0 16:52 pts/0 00:00:00 php public/index.php index/Socket/run
root 12154 12147 0 16:52 pts/0 00:00:00 php public/index.php index/Socket/run
root 12155 12147 0 16:52 pts/0 00:00:00 php public/index.php index/Socket/run
root 13570 2 0 19:00 ? 00:00:01 [kworker/1:1]
root 13973 5948 0 19:38 pts/1 00:00:00 tail -f /home/myth/www/think/apps/swoole-data/swoole.log
root 14426 2 0 20:20 ? 00:00:00 [kworker/u256:2]
root 14900 2 0 21:04 ? 00:00:00 [kworker/1:1H]
postfix 14973 1527 0 21:10 ? 00:00:00 pickup -l -t unix -u
root 15017 2 0 21:16 ? 00:00:00 [kworker/0:0]
root 15117 2 0 21:26 ? 00:00:00 [kworker/1:2]
root 15174 756 0 21:30 ? 00:00:00 sleep 60
root 15175 2 0 21:31 ? 00:00:00 [kworker/1:0]
root 15176 987 0 21:31 ? 00:00:00 sshd: root@pts/3
root 15178 15176 1 21:31 pts/3 00:00:00 -bash
root 15204 1 0 21:31 ? 00:00:00 /usr/sbin/abrt-dbus -t133
root 15232 15178 0 21:31 pts/3 00:00:00 ps -eaf
[root@contoso ~]# ps -eaf |grep 'index/Socket/run'
root 12137 5894 0 16:52 pts/0 00:00:01 php public/index.php index/Socket/run
root 12147 12137 0 16:52 pts/0 00:00:00 php public/index.php index/Socket/run
root 12152 12147 0 16:52 pts/0 00:00:00 php public/index.php index/Socket/run
root 12153 12147 0 16:52 pts/0 00:00:00 php public/index.php index/Socket/run
root 12154 12147 0 16:52 pts/0 00:00:00 php public/index.php index/Socket/run
root 12155 12147 0 16:52 pts/0 00:00:00 php public/index.php index/Socket/run
root 15259 15178 0 21:34 pts/3 00:00:00 grep --color=auto index/Socket/run
[root@contoso ~]# ps -eaf |grep 'index/Socket/run'|grep -v "grep"
root 12137 5894 0 16:52 pts/0 00:00:01 php public/index.php index/Socket/run
root 12147 12137 0 16:52 pts/0 00:00:00 php public/index.php index/Socket/run
root 12152 12147 0 16:52 pts/0 00:00:00 php public/index.php index/Socket/run
root 12153 12147 0 16:52 pts/0 00:00:00 php public/index.php index/Socket/run
root 12154 12147 0 16:52 pts/0 00:00:00 php public/index.php index/Socket/run
root 12155 12147 0 16:52 pts/0 00:00:00 php public/index.php index/Socket/run
[root@contoso ~]# ps -eaf |grep 'index/Socket/run'|grep -v "grep"|awk '{print $2}'
12137
12147
12152
12153
12154
12155
[root@contoso ~]# ps -eaf |grep 'index/Socket/run'|grep -v "grep"|awk '{print $2}'|xargs
12137 12147 12152 12153 12154 12155
[root@contoso ~]# ps -eaf |grep 'index/Socket/run'|grep -v "grep"|awk '{print $2}'|xargs kill -9
[root@contoso ~]# ps -eaf |grep 'index/Socket/run'|grep -v "grep"
[root@contoso ~]#
持续粘贴中 ... ... ... ...