Linux(centos) 搭建PHP服务器

Centos7 nginx mysql php

切换root帐户

  1. su

1、查看版本号

  1. cat /etc/redhat-release

2、安装工具

  1. yum install -y make apr* autoconf cmake automake curl-devel gcc gcc-c++ openssl openssl-devel pcre-devel gd kernel keyutils perl kernel-headers mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype libjpeg* libpng* ncurses* libtool* libxml2 libxml2-devel patch bzip2-devel telnet jasper-devel libtiff-devel gtk+-devel wget

3. 安装php

  1. yum install -y php php-common php-devel php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash php-fpm php-json* php-soap php-process
安装zip解压软件
  1. yum install unzip
查询php 版本号
  1. php -v
查询--ini安装目录
  1. php --ini
查询workman支持的php版本
  1. curl -Ss http://www.workerman.net/check.php | php
安装php扩展库
  1. yum install libevent-devel -y
  2. pecl install event
  3. echo extension=event.so > /etc/php.d/30-event.ini
  4. systemctl enable php-fpm.service
  5. systemctl start php-fpm.service

4. 安装nginx

  1. wget http://tengine.taobao.org/download/tengine-2.2.1.tar.gz
  2. tar -zxf tengine-2.2.1.tar.gz
  3. cd tengine-2.2.1
检查nginx编绎文件
  1. ./configure
  2. make
  3. make install
启动nginx
  1. /usr/local/nginx/sbin/nginx
  2. /usr/local/nginx/sbin/nginx -s reload
  3. //启动php服务 查询php安装目录
  4. whereis php
  5. service php-fpm restart

5. 安装mysql

方法一

下载mysql
  1. wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
安装mysql rpm(安装,更新)
  1. rpm -ivh mysql-community-release-el7-5.noarch.rpm
  2. yum install mysql-community-server
  3. systemctl start mysqld.service
  4. //设置mysql服务开机自启动
  5. systemctl enable mysqld.service
添加帐号及密码
  1. mysqladmin -u root password '123456'
通过登录mysql系统
  1. mysql -uroot -p
  2. Enter password: 【输入原来的密码】
  3. mysql>use mysql;
  4. mysql> update user set password=passworD("新密码") where user='root';
  5. mysql> flush privileges;
  6. mysql> exit;
授权法(远程登录)
  1. mysql -uroot -p
  2. Enter password: 【输入原来的密码】
  3. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '[你的密码]' WITH GRANT OPTION;
  4. FLUSH PRIVILEGES;

方法二

安装mariadb,代替mysql
  1. yum install mariadb-server.x86_64
  2. systemctl enable mariadb.service
  3. systemctl start mariadb.service
  4. mysql -uroot -p
  5. #首次密码空
  6. grant all privileges on *.* to 'root'@'%' identified by 'password';
  7. flush privileges;

6.允许ssh密码登录

  1. # vi /etc/ssh/sshd_config
  2. systemctl restart sshd.service
7. 关闭selinux
  1. vim /etc/selinux/config
修改为:
  1. SELINUX=disabled

8. 防火墙修改

开机启用
  1. systemctl enable firewalld.service
重启
  1. systemctl restart firewalld.service
开启防火墙
  1. systemctl start firewalld
添加端口
  1. firewall-cmd --zone=public --add-port=10000/tcp --permanent
  2. firewall-cmd --zone=public --add-port=8282/tcp --permanent
  3. firewall-cmd --zone=public --add-port=3306/tcp --permanent
  4. firewall-cmd --zone=public --add-port=9990/tcp --permanent

centos出现“FirewallD is not running”怎么办

执行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示FirewallD is not running,如下图所示。
  1. centos出现“FirewallD is not running”怎么办
  2. 通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。
  3. centos出现“FirewallD is not running”怎么办
  4. 通过systemctl start firewalld开启防火墙,没有任何提示即开启成功。
  5. centos出现“FirewallD is not running”怎么办
  6. 再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。
  7. 再执行添加端口命令
  8. centos出现“FirewallD is not running”怎么办
  9. 5
  10. 如果要关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能。
  11. centos出现“FirewallD is not running”怎么办
  12. 6
  13. 再次执行执行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示success,表示设置成功,这样就可以继续后面的设置了。
  14. centos出现“FirewallD is not running”怎么办
  15. END
全部执行完毕后

关闭防火墙设置

  1. systemctl stop firewalld
查看
  1. firewall-cmd --list-ports
Ubuntu 16.04 apach2 php7 mysql
  1. sudo apt install php php-dev php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mcrypt libmcrypt4 libmcrypt-dev php-fpm php-json php-json-patch php-json-schema php-soap php-curl
  2. sudo apt install apache2
  1. cd /etc/apache2/mods-enabled
  2. ln -sf ../mods-available/rewrite.load rewrite.load
  3. vi /etc/apche2/apache2.conf
修改为以下部分为:
  1. <Directory />
  2. Options FollowSymLinks
  3. AllowOverride All
  4. Require all granted
  5. </Directory>
  6. <Directory /usr/share>
  7. AllowOverride None
  8. Require all granted
  9. </Directory>
  10. <Directory /var/www/>
  11. Options Indexes FollowSymLinks
  12. AllowOverride All
  13. Require all granted
  14. </Directory>

9.连接MySql,报host is not allowed to connect mysql

  1. 1、在装有MySQL的机器上登录 mysql -u root -p 不输入密码直接回车
  2. 2、执行use mysql;
  3. 3、执行update user set host = '%' where user = 'root';这一句执行完可能会报错,不用 管它。
  4. 4、执行FLUSH PRIVILEGES;
提示:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
1.关闭mysql
service mysqld stop

2.屏蔽权限

  1. mysqld_safe --skip-grant-table

屏幕出现: Starting demo from .....

3.新开起一个终端输入

  1. mysql -u root mysql
  2. mysql> delete from user where USER='';
  3. mysql> FLUSH PRIVILEGES;//记得要这句话,否则如果关闭先前的终端,又会出现原来的错误
  4. mysql> exit;

执行sql文件

1、连接数据库
  1. mysql -uroot -p123456 -h127.0.0.1

-h,指定ip地址,默认为localhost

-u,指定用户名

-p,指定密码

2、新建数据库

create database 数据库名;
show databases; --显示所有数据库列表

3、选择数据库
  1. use 数据库名;
4、执行数据库文件
  1. source /usr/local/crazy/file/test.sql
  2. show tables; --显示该数据库中的所有表

注:需先把sql文件放到服务器的一个文件夹中,不能有中文目录,否则执行不了

  1. drop database 数据库名; --删除数据库mydatabase
  2. exit; 退出

10.替换usr/local/nginx/conf 文件夹,并且替换相应文件

如果部署多个项目,把下列文件复制,修改服务器端口,项目路径

添加端口
  1. firewall-cmd --zone=public --add-port=9990/tcp --permanent
  2. systemctl restart firewalld.service
  1. server {
  2. #替换服务器端口
  3. listen 10000;
  4. #include /usr/local/nginx/conf/port.conf;
  5. server_name 127.0.0.1;
  6. charset utf8;
  7. location / {
  8. #替换项目路径
  9. root /html/bbx;
  10. index index.htm index.html index.php;
  11. #如果文件不存在则尝试TP解析
  12. try_files $uri /index.php$uri;
  13. if (!-e $request_filename) {
  14. rewrite ^/index.php(.*)$ /index.php?s=$1 last;
  15. rewrite ^(.*)$ /index.php?s=$1 last;
  16. break;
  17. }
  18. }
  19. location ~ .+\.php($|/) {
  20. #替换项目路径
  21. root /html/bbx;
  22. fastcgi_pass 127.0.0.1:9000;
  23. fastcgi_index index.php;
  24. fastcgi_split_path_info ^(.+\.php)(/.*)$;
  25. fastcgi_param PATH_INFO $fastcgi_path_info;
  26. include fastcgi.conf;
  27. }
  28. }

访问项目如果报:Think/Storage/Driver/File.class.php

进入项目目录执行命令

  1. chmod -R 777 runtime
虚拟机IP地址与本机IP地址不一致,右键—— 虚拟机名称 ——网络适配器——桥接模式

11.部署Workerman长连接

把workerman文件夹放到opt文件夹中

(创建applog/socket 日志文件夹)

修改bbx\Applications\YourApp\Event.php文件,数据库参数
  1. public static function onWorkerStart($worker)
  2. {
  3. self::$db = new Workerman\MySQL\Connection('127.0.0.1', '3306', 'root', 'BbX#_e82lc', 'bbx');
  4. }
  5. }

修改端口(start_gateway.php文件)

  1. $gateway = new Gateway("tcp://0.0.0.0:8282");

启动
以debug(调试)方式启动

  1. php start.php start

以daemon(守护进程)方式启动

  1. php start.php start -d

停止

  1. php start.php stop
停止失败,杀进程

查询所有占用端口

  1. netstat -tnlp

杀掉进程

  1. kill -9 进程ID

重启

  1. php start.php restart

平滑重启

  1. php start.php reload

查看状态

  1. php start.php status

查看连接状态(需要Workerman版本>=3.5.0)

  1. php start.php connections
解压文件:
  1. unzip 文件名
  2. tar zxvf FileName.tar.gz
压缩文件:
  1. tar zcvf 压缩后文件名.tar.gz 源文件
导入sql数
1、SSH登录LINUX系统,登录mysql数据库
  1. #mysql -u root -p #-p为密码,输入登录mysql的账户的密码
2、选择数据库
  1. #mysql>use database #database为你的的数据库
3、选择你已经备份好的sql文件,开始导入
  1. #mysql>source /backup.sql #选择对应路径即可恢复
4、备份数据库
  1. mkdir home/mysql_backup
  2. touch mysql_backup.sh #创建sh脚本文件
  3. chmod 770 mysql_backup.sh #授权
使用VI工具编写test_database_backup.sh备份数据库脚本内容
  1. mysqldump -uroot(用户名) -p(数据库密码) --default-character-set=utf8 --opt -R --triggers --hex-blob newgz(数据库名称) |gzip -9 > /home/mysql_backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz
  2. find /home/mysql_backup/ -ctime +1 -name "*.gz" -exec rm -rf {} \; #删除7天前数据文件
  3. /sbin/service crond stop #停止服务
  4. /sbin/service crond restart #重启服务
  5. /sbin/service crond reload #重新载入配置
  6. crontab -e #添加定时器
  7. 0 0 * * * /bin/bash /home/mysql_backup/mysql_backup.sh #0小时执行数据库备份
  8. 0 8 * * * /bin/bash /root/mysql_backup/mysql_backup.sh #8小时执行数据库备份
  9. 0 16 * * * /bin/bash /root/mysql_backup/mysql_backup.sh #16小时执行数据库备份
  10. # 每分钟释放一次暂存的柜子
  11. * * * * * /usr/bin/curl "http://box.bbxtek.com/api/order/device_init" >> /root/log/device_init.txt
  12. * * * * * curl http://box.bbxtek.com/api/order/automation
  13. * * * * * sleep 10; curl http://xxxxxxx/api/order/automation
  14. * * * * * sleep 20; curl http://xxxxxxx/api/order/automation
  15. * * * * * sleep 30; curl http://xxxxxxx/api/order/automation
  16. * * * * * sleep 40; curl http://xxxxxxx/api/order/automation
  17. * * * * * sleep 50; curl http://xxxxxxx/api/order/automation
  18. /sbin/service crond start #启动服务




posted @ 2022-05-13 15:10  挽风说笑  阅读(534)  评论(0编辑  收藏  举报