虚拟机安装完centos7后(网络方式为桥接)后:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改:
ONBOOT=yes
保存退出。 service network restart,现在网络应该就通了,可以ping ip
查看自己的ip 可以用ipaddr
用 ifconfig 查看当前网络连接信息。如果 找不到此命令,估计 /sbin/ 里面就没有这个命令。
yum install -y net-tools
然后就可以用 ifconfig 了。
将ip固定:
修改 BOOTPROTO=static
IPADDR=你要用的ip
NETMASK=子网掩码
GATEWAY=网关
#NM_CONTROLLED=no
保存。 service network restart。再用ifconfig看就变了。
(NM_CONTROLLED=no表示该接口不通过网络管理器进行管理,而是通过配置文件管理,这个我没写也可以,看情况吧)。
ping baidu.com 如果报找不到,但是 ping 百度ip 可以通,那么说明dns解析有问题。
配置dns解析:
cd /etc/NetworkManager
vi NetworkManage.conf
增加 dns=none
vi /etc/resolv.conf
新增dns 配置
#主 DNS
nameserver 114.114.114.114
#备DNS
nameserver 8.8.4.4
service network restart 就好了。再ping baidu.com 应该就可以通了。
安装图像化界面:(建议不要安装)
# yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
# ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target
# reboot
---------------------------------------------------------------------------
Centos6 中防火墙使用的是 iptables
Cnetos7 中防火墙使用的是 fireware
打开端口命令如下:
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效
重启防火墙:
systemctl restart firewalld.service
关闭防火墙:
systemctl stop firewalld.service
查看已经开放的端口:
firewall-cmd --list-ports
查看监听的端口:
netstat -nltp
如果指定监听8080端口,netstat -nltp|grep 8080
---------------------------------------------------------------------
安装东西前确定gcc,gcc-c++已安装,这个库涉及到后面的编译。
yum install -y gcc gcc-c++
groupadd www
useradd -g www www -M -s /sbin/nologin #-M不建立家目录,-s /sbin/nologin 不让登录主机
cat /etc/passwd
安装nginx:(nginx1.14.x)
官网有安装示例。
(http://nginx.org/en/docs/configure.html 有configure 的详细说明,包括默认路径,比 --help 全)
./configure --help
根据上面的内容,要的直接选中右键paste 就直接到下面去了
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --without-http_gzip_module --with-pcre
#--with-http_realip_module --with-http_stub_status_module --with-http_sub_module
这几个视需求而定。
1.报错
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=
解决:需要安装 pcre-devel
yum install -y pcre-devel
2.报错
./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=
解决:需要安装 openssl-devel
yum install -y openssl-devel
3.报错
--with-gzip_module ...
解决: yum install -y zlib-devel
再次构建,构建后: echo $? (为0则没出现过错)
make & make install
然后找到 可执行文件 nginx,./nginx 运行nginx
ps -ef|grep nginx 查看是否已经启动
也可以用: netstat -nltp|grep 80
访问本地,正常则返回nginx的欢迎页面。不正常则找不到,查看80端口是否打开:
firewall-cmd --list-ports 看是否有80端口
没打开则打开。
firewall-cmd --zone=public --add-port=80/tcp --permanent
-------------------------------------------------------------------------
安装mysql:
groupadd mysql
useradd -g mysql mysql -M -s /sbin/nologin
mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz:
(二进制文件的安装)官网有安装示例
可以先安装,碰到问题了再装依赖; yum install -y cmake perl-devel autoconf
tar xf mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.6.41-linux-glibc2.12-x86_64 /usr/local/mysql
chown -R mysql:mysql mysql
cd mysql
./scripts/mysql_intall_db --user=mysql
安装初始化完毕(如果原本存在的 /etc/my.cnf有问题,可以删掉,这样就直接访问/usr/local/mysql/my.cnf了)
启动 support_files/mysql.server
进入数据库:./bin/mysql -uroot ,也可以 1.cp mysql /usr/bin/ 然后直接 mysql -uroot
此时的数据库登录不要账号密码,可以用这个 delete from mysql.user where user='';
然后 : update mysql.user set Password=PASSWORD('密码') where user="root"
再不用密码就登录不进去了。
登录:mysql -uroot -p密码
下面是非二级制文件安装的:(这个没有测试过)
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql.sock \
-DMYSQL_USER=mysql \
-DEFAULT_CHARSET=utf8 \
-DEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_EMEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1
查看构建错误: echo $?
安装成功后,初始化数据库:
mysql/script/mysql_install_db --datadir=/usr/local/mysql/data/ --basedir=/usr/local/mysql/ --user=mysql
没报错,有两个ok就初始化完成。
mysql/support-files 中有实例的配置文件
移动一个你想要的到 mysql/etc/ 里面,并改名为my.cnf
启动数据库:
mysql/support-files/mysql.server
rm -f /etc/my.cnf #删掉系统自带的配置文件,删掉后就找 mysql/etc/my.cnf了
netstat -n|tp
这是用mysql 提示找不到:
两种解决办法: 1.cp mysql /usr/bin/
2.添加环境变量
mysql #进去了,但现在还不能用,还有安全性问题
进入script下有个 mysql_secure_installation 运行它。
--------------------------------------------------------------------------
安装php:(php-7.2.9)
下面的配置是摘抄的:
./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip
下面的配置是自己看 ./configure --help,自己一个一个选的:
./configure --prefix=/usr/local/php --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-config-file-path=/usr/local/php/etc --with-libxml-dir --with-xmlrpc --with-openssl --with-pcre-regex --with-zlib --with-zlib-dir --enable-bcmath --with-bz2 --with-curl --with-libxml-dir --with-pcre-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-gettext --with-mhash --enable-mbstring --with-mysqli --enable-pcntl --with-pdo-mysql --with-pdo-sqlite --with-zlib-dir --enable-shmop --with-libxml-dir --with-openssl-dir --enable-soap --enable-sockets --with-iconv-dir --enable-zip --with-pcre-dir --with-libzip --enable-mysqlnd --with-pear
下面的依赖是网上找的:
yum -y install openssl
yum -y install openssl-devel
yum -y install curl
yum -y install curl-devel
yum -y install libjpeg
yum -y install libjpeg-devel
yum -y install libpng
yum -y install libpng-devel
yum -y install freetype
yum -y install freetype-devel
yum -y install pcre
yum -y install pcre-devel
yum -y install libxslt
yum -y install libxslt-devel
yum -y install bzip2
yum -y install bzip2-devel
下面装的依赖是自己报错试出来的:
我们来看看配置会报哪些错:然后安装依赖
yum install -y libxml2-devel bzip2-devel curl-devel libwebp-devel libjpeg-devel libpng-devel freetype-devel
yum remove libzip (yum安装的版本太低,所以编译安装)
然后libzip的版本要求是>= 0.11
然后找个目录下载安装新版本:
wget https://nih.at/libzip/libzip-1.2.0.tar.gz
tar -zxvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make
make install
安装完新版的libzip后可能系统找不到,手动复制下:
cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h
前面安装nginx 时已经安装了 openssl-devel,pcre-devel,zlib-devel
php部分我们又安装了 curl-devel libwebp-devel libjpeg-devel libpng-devel freetype-devel libxml2-devel bzip2-devel
还有对版本有要求 >=0.11 的 libzip(编译安装)
make (没报错就进行下一步)
make install
cp php-fpm.conf.default php-fpm.conf (进程配置文件)
到源码安装包里:(开发用 development 就够了,生产环境用 production)
cp php.ini-development /usr/local/php/etc/php.ini
cd /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
cd sbin
./php-fpm
netstat -nltp
会发现有个 9000 端口的 php-fpm,那么启动成功。
----------------------------------------------------------------------------------------------------------------
配置nginx 将其与 php连接起来:
/usr/local/nginx/conf/nginx.conf
user www www
打开 location ~ \.php${
root /usr/local/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
然后看路径 root 要不要配置(根据你的情况而定)
/usr/local/nginx/sbin/nginx -s reload
然后网页访问看能不能访问到 php 文件。
如果不能访问,将上面的 fastcgi_param 后面的 /scripts 改为 $document_root 然后重载再试试。
(看下 根目录要不要将 root的改为www,这个视情况而定)
SUCCESS!
************到此处为止,nginx1.14(stable)+php7.2.9+mysql5.6(二进制版本) 搭建完成。
--------------------------------------------------------------------------------------
Centos7 下的 nginx,php,mysql 开机自启动:
nginx:
vi /lib/systemd/system/nginx.service 文件(创建文件)
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
php:
vi /lib/systemd/system/php-fpm.service 文件(创建文件)
[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
ExecStop=/bin/pkill -9 php-fpm
PrivateTmp=true
[Install]
WantedBy=multi-user.target
mysql:
vi /lib/systemd/system/mysql.service 文件(创建文件)
[Unit]
Description=MySQL Server
#Documentation=man:mysqld(8)
#Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
#[Install]
#WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf
LimitNOFILE = 5000
#Restart=on-failure
#RestartPreventExitStatus=1
#PrivateTmp=false
[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
先关闭nginx,php-fpm:直接kill 掉吧
然后使用以下命令开启
systemctl start nginx.service
systemctl start php-fpm.service
systemctl start mysql.service
开机成功,将服务加入开机启动
systemctl enable nginx.service #注意后面不能跟空格
#Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
systemctl enable php-fpm service
#Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.
systemctl enable mysql.service
重启系统,查看运行的服务。
systemctl list-units --type=service #查看运行的服务
---------------------------------------------------------------------------
Swoole:
swoole官网:www.swoole.com
Swoole:面向生产环境的 PHP 异步网络通信引擎
是PHP开发人员可以编写高性能的异步并发 TCP,UDP,UnixSocket,HTTP,WebSocket服务。
Swoole可以广泛的应用于互联网,移动通信,企业软件,云计算,网络游戏,物联网(IOT),车联网,智能家居等领域。使用PHP+Swoole作为网络通信框架,可以使企业IT
研发团队的效率大大提升,更专注于开发创新产品。
如何学习swoole
查看文档
实现swoole特性的功能点
多看看其他现有的swoole案例代码(github,开源中国)
下载安装swoole:
进入www.swoole.com点击下载,然后会跳转界面,选取克隆下载地址:https://gitee.com/swoole/swoole.git
linux 上安装git后:
git clone https://gitee.com/swoole/swoole.git
下载后是已经解压好的源码
源码安装,发现这里面没有 configure,此时运行装好的phpize
执行命令:/usr/local/php/bin/phpize
这是再看,发现swoole下面有了 configure,还有一些其他改变
./configure --with-php-config=/usr/local/php/bin/php-config
然后 make
然后 make install
出现:Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
这个路径说的是扩展的路径。
进入后打印如下:[root@bogon no-debug-non-zts-20170718]# ll
total 9944
-rwxr-xr-x. 1 root root 3581556 Apr 5 01:00 opcache.a
-rwxr-xr-x. 1 root root 1971952 Apr 5 01:00 opcache.so
-rwxr-xr-x. 1 root root 4622688 Apr 5 09:47 swoole.so
所以说最终的扩展是 .so 文件。
在swoole源码安装包里面有 example,进入,这里面都是使用swoole的例子。
cd server 。 打开 echo.php,查看
直接 php echo.php
报错,原因是扩展文件的加载还要看php.ini里面的 extension=
在php.ini中加上 extension=swoole ,然后 php -m 就可以看到加载的模块swoole了(这里说明一下,只有在指定的扩展目录下面有相应的.so文件,并且php.ini里面添加了配置,php -m才能查看到该扩展)
再次运行 php echo.php
然后查看此端口:netstat -anp|grep 9501
得到结果:tcp 0 0 0.0.0.0:9501 0.0.0.0:* LISTEN 32898/php
ctrl+c 取消掉运行程序后再次 netstat -anp|grep 9501 发现没有了,消失了
查看端口号:
netstat -anp|grep 9501
telnet 127.0.0.1 9501