作为一名PHP开发者,我们一定要懂得如何搭建PHP开发环境,目前主流的PHP开发环境组合是LAMP和LNMP,本文将介绍如何在CentOS7.*上搭建LNMP开发环境。

各项版本说明:

CentOS7: 7.7

Nginx: 1.16.1

MySQL:5.7.28

PHP:7.2.25

安装所需所有的资源我都放在了/usr/local/src目录下

准备工作

安装wget

wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的TCP/IP协议下载,并可以可以使用HTTP代理。

sudo yum -y install wget

安装net-tools

最小化安装CentOS7时如果无法使用ifconfig命令,则需要安装net-tools,如果是安装的CentOS6版本则无需安装

sudo yum -y install net-tools

安装vim

sudo yum -y install vim

配置显示行号

vim ~/.vimrc # 编辑.vimrc配置文件
set nu # 输入set nu 后退出保存

关闭防火墙

systemctl stop firewalld.service  #令关闭防火墙
systemctl disable firewalld.service #关闭防火墙开机自启动
通过浏览器输入IP测试是否成功

安装Nginx

安装依赖

(1) 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装gcc-c++。

yum -y install gcc gcc-c++

(2) PCRE是一个Perl库,中文"Perl兼容的正则表达式库"。安装Nginx是为了使Nginx支持具备URI重写功能的rewrite模块,如果不安装pcre库,则Nginx无法使用rewrite模块功能,Nginx的Rewrite模块功能几乎是企业应用必须。

yum -y install pcre pcre-devel

(3) zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

yum -y install zlib zlib-devel

(4) OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。 nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要安装 OpenSSL 库 。

yum -y install openssl openssl-devel

说明: yum安装方式安装的pcre版本比较低,不过基本不影响使用,但是最好还是手动编译安装官网最新稳定版的openssl。

检查基础依赖包

上面的依赖安装完成后可以通过如下命令检查各个依赖安装是否成功

rpm -qa pcre pcre-devel
rpm -qa zlib zlib-devel
rpm -qa pcre pcre-devel

编译安装Nginx

# 这里我们把安装包都放到了/usr/local/src目录下,便于统一管理
cd /usr/local/src #切换到软件包目录
wget http://nginx.org/download/nginx-1.16.1.tar.gz #下载nginx源码包
useradd nginx -s /sbin/nologin -M #创建nginx用户用于管理nginx程序
tar -zxvf nginx-1.16.1.tar.gz #解压nginx源码包 cd nginx-1.16.1 #预编译
./configure \
--user=nginx \
--group=nginx \
--prefix=/usr/local/nginx-1.16.1 \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_stub_status_module make && make install #编译 和 安装 cd /usr/local
ln -s nginx-1.16.1 nginx #创建nginx的软链接

安装说明

--prefix=PATH    #设置安装路劲
--user=USER #进程用户权限
--group=GROUP #进程用户组权限
--with-http_v2_module # HTTP2
--with-http_stub_status_module #激活状态信息
--with-http_ssl_module #激活ssl功能

配置环境变量

vim /etc/profile
export PATH=/usr/local/nginx/sbin:$PATH
source /etc/profile

Systemd管理

新建并编辑/usr/lib/systemd/system/nginx.service 文件

vim /usr/lib/systemd/system/nginx.service

并添加如下内容(这里的配置是根据自己安装Nginx的路径来配置的,Nginx安装在了/usr/local目录下)

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target [Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true [Install]
WantedBy=multi-user.target

通过yum安装的nginx,默认的nginx.service配置如下,可以作为参考

# /usr/lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target [Service]
Type=forking
PIDFile=/run/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true [Install]
WantedBy=multi-user.target

重载daemon

执行下面的命令重新载入 systemd,扫描新的或有变动的单元即可

systemctl daemon-reload

设置开机自启

systemctl enable nginx.service # 设置开机自启
systemctl disable nginx.service # 取消开机自启服务

Nginx服务管理常用命令

systemctl status nginx.service # 查看Nginx状态
systemctl start nginx.service # 开启Nginx
systemctl stop nginx.service # 关闭Nginx
systemctl reload nginx.service # 重载配置
systemctl restart nginx.service # 重启Nginx(相当于stop&start)

服务启动检查

可以通过该命令查询80端口被谁占用

lsof -i :80

如果无法识别该命令,需要安装lsof

sudo yum -y install lsof

安装MySQL

安装依赖

(1)cmake是新版MySQL的编译工具,必须安装

sudo yum -y install gcc gcc-c++ cmake ncurses-devel perl perl-devel autoconf bison bison-devel libtirpc libtirpc-devel

下载boost

如果安装的MySQL5.7及以上的版本,在编译安装之前需要安装boost,因为高版本mysql需要boots库的安装才可以正常运行。否则会报CMake Error at cmake/boost.cmake:81 错误

切换到/usr/local/src目录,然后在这个目录下下载boost

MySQL5.7.27要求boost的版本是1.59,更高版本的不适用MySQL5.7.28

wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

百度网盘链接: boost_1_59_0.tar.gz

编译安装MySQL

# 添加MySQL用户
useradd -s /sbin/nologin -M mysql # 切换到/usr/src目录
cd /usr/local/src # 下载MySQL
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28.tar.gz # 解压MySQL
tar -zxvf mysql-5.7.28.tar.gz #解压boost,并移至mysql/boost
tar -zxvf boost_1_59_0.tar.gz
mv boost_1_59_0 mysql-5.7.28/boost # 进到MySQL目录
cd mysql-5.7.28 # 预编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.28 \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1 \
-DWITH_SSL=system \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_DATADIR=/var/lib/mysql/data \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_INNODB_MEMCACHED=1 \
-DWITH_DEBUG=OFF \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_PROFILING=ON \
-DMYSQL_MAINTAINER_MODE=OFF \
-DMYSQL_TCP_PORT=3306 # 编译&安装
make && make install # 创建软链接
cd /usr/local
ln -s mysql-5.7.28 mysql

配置环境变量

# 添加到环境变量
vim /etc/profile
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile

修改配置文件

  1. /var/lib目录下创建一个mysql文件夹

    mkdir -p /var/lib/{mysql,mysql/data}
    touch /var/lib/mysql/mysqld.pid
    chown mysql.mysql -R /var/lib/mysql/
  2. 修改/etc/my.cnf文件

    # 修改/etc/my.cnf文件,编辑配置文件如下
    [mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_general_ci
    datadir=/var/lib/mysql/data
    socket=/var/lib/mysql/mysql.sock [mysqld_safe]
    log-error=/var/log/mysql/mysqld.log
    pid-file=/var/lib/mysql/mysqld.pid [client]
    default-character-set=utf8mb4
  3. 创建mysqld.logmysqld.pid文件,并修改文件权限

    # 创建mysqld.log 和 mysqld.pid文件
    mkdir /var/log/mysql
    touch /var/log/mysql/mysqld.log
    chown mysql.mysql -R /var/log/mysql/
  4. 初始化数据库

    # 初始化数据库, –initialize 表示默认生成一个安全的密码,–initialize-insecure 表示不生成密码
    mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql/data

Systemd管理

创建一个/usr/lib/systemd/system/mysqld.service文件,然后编辑内容如下

vim /usr/lib/systemd/system/mysqld.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 Type=forking PIDFile=/var/lib/mysql/mysqld.pid # Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0 # Execute pre and post scripts as root
PermissionsStartOnly=true # Needed to create system tables
ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd # Start main service
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/var/lib/mysql/mysqld.pid $MYSQLD_OPTS # Use this to switch malloc implementation
EnvironmentFile=/etc/my.cnf # Sets open_files_limit
LimitNOFILE = 5000 Restart=on-failure RestartPreventExitStatus=1 PrivateTmp=true

重载daemon

执行下面的命令重新载入 systemd,扫描新的或有变动的单元即可

systemctl daemon-reload

启动MySQL

systemctl start mysqld.service # 启动MySQL
systemctl stop mysqld.service # 关闭MySQL
systemctl status mysqld.service # 查看MySQL状态

开机自启

systemctl enable mysqld.service # 设置开机自启
systemctl disable mysqld.service # 取消开机自启

登录MySQL

mysql -u root -p #第一次登陆不需要密码,回车即可
set password for root@localhost = password('root'); #修改密码

安装PHP

安装依赖

sudo yum -y install gcc gcc-c++ zip unzip libxml2 libxml2-devel curl-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel gd-devel bzip2 bzip2-devel libzip libzip-devel libwebp libwebp-devel

编译安装PHP

cd /usr/local/src
tar -zxvf php-7.2.25.tar.gz
cd php-7.2.25
./configure \
--prefix=/usr/local/php-7.2.25 \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-mysql-sock=/var/lib/mysql/mysql.sock \
--with-gd \
--with-webp-dir \
--with-png-dir \
--with-gettext \
--with-jpeg-dir \
--with-freetype-dir \
--with-iconv-dir \
--with-zlib-dir \
--with-bz2 \
--with-openssl \
--with-curl \
--enable-mbstring \
--enable-static \
--enable-zip \
--enable-bcmath \
--enable-ftp \
--enable-pcntl \
--enable-soap \
--enable-calendar \
--enable-sockets \
--enable-exif \
--enable-xml make && make install

编译参数详解

./configure \
--prefix=/usr/local/php-7.2.25 \ # 指定安装路径
--enable-fpm \ # 表示激活PHP-FPM方式服务,即FactCGI方式运行PHP服务。
--with-fpm-user=nginx \ # 指定PHP-FPM进程管理的用户为nginx,此处最好和Nginx服务用户统一。
--with-fpm-group=nginx \ # 指定PHP-FPM进程管理用户组为nginx,此处最好和Nginx服务用户组统一。
--enable-mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-mysql-sock=/var/lib/mysql/mysql.sock \
--with-gd \ # 打开gd库的支持
--with-webp-dir \
--with-png-dir \
--with-gettext \ # 实现了NLS (Native Language Support) API,他可以用来国际化您的PHP程序
--with-jpeg-dir \
--with-freetype-dir \
--with-iconv-dir \ # 包含了 iconv 字符集转换功能的接口。
--with-zlib-dir \ # 打开zlib库的支持,用于http压缩传输
--with-bz2 \ # 用于透明地读写 bzip2(.bz2)压缩文件。
--with-openssl \ # 打开openssl,加密传输时用到
--with-curl \ # 打开curl浏览工具的支持
--enable-mbstring \ # 多字节,字符串的支持
--enable-static \ # 生成静态链接库
--enable-zip \ # 打开对zip的支持
--enable-bcmath \
--enable-ftp \ # 通过文件传输协议 (FTP) 提供对文件服务器的客户端访问
--enable-pcntl \ # 多进程
--enable-soap \
--enable-calendar \
--enable-sockets \ # 打开 sockets 支持
--enable-exif \ # 可交换图像信息
--enable-xml

配置

cd /usr/local

ln -s php-7.2.25 php
cp /usr/local/src/php-7.2.25/php.ini-development /usr/local/php-7.2.25/lib/php.ini vim /usr/local/php/lib/php.ini
date.timezone = PRC (大约在934行)
expose_php = Off #避免PHP信息暴露在http头中(大约369行) display_errors = Off(生产环境设置为off,开发环境就设置为On,便于调试)
说明:设置了dispaly_errors为off后,需要在php-fpm.conf中开启错误日志记录路径error_log = log/php-fpm.log cd /usr/local/php
cp etc/php-fpm.conf.default etc/php-fpm.conf cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
cd /usr/local/php
sbin/php-fpm
ps -e | grep php-fpm 如果在编译PHP时指定了--with-mysql=mysqlnd和--with-pdo-mysql=mysqlnd的参数,那么在生产中可能会遇到socket连接问题,解决办法是在php.ini里加入命令: pdo_mysql.default_socket=/var/lib/mysql/mysql.sock 最好是在编译PHP的时候,指定mysql.socket的位置:
--with-mysql-sock=/var/lib/mysql/mysql.sock

管理PHP-FPM

vim /usr/local/php/etc/php-fpm.conf
pid = run/php-fpm.pid
error_log = log/php-fpm.log #24行这个在php.ini设置display_errors = Off时启用
设置完之后重启服务器
向进程发送信号,就可以完成进程管理
停止: kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
平滑停止: kill -QUIT `cat /usr/local/php/var/run/php-fpm.pid`
重启:kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
重新打开日志:kill -USR1 `cat /usr/local/php/var/run/php-fpm.pid`

配置环境变量

vim /etc/profile
export PATH=/usr/local/php/bin:$PATH
source /etc/profile

配置Systemd服务

其实php-fpm.service文件php已经帮我们配置好了,只需要我们复制到指定位置,并启用就行了。

cp /usr/local/src/php-7.2.25/sapi/fpm/php-fpm.service /usr/lib/systemd/system/

编辑/usr/lib/systemd/system/php-fpm.service文件并修改为如下内容:

# It's not recommended to modify this file in-place, because it
# will be overwritten during upgrades. If you want to customize,
# the best way is to use the "systemctl edit" command. [Unit]
Description=The PHP FastCGI Process Manager
After=network.target [Service]
Type=simple
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true [Install]
WantedBy=multi-user.target

重载daemon

执行下面的命令重新载入 systemd,扫描新的或有变动的单元即可

systemctl daemon-reload

开机自启

systemctl enable php-fpm.service

启动php-fpm

systemctl start php-fpm.service

关联Nginx和PHP

nginx.conf配置

#user  nobody;
# 有一个工作的子进程,可以自行修改,但太大无益,因为要争夺CPU
# 一般设置CPU数 * 核数
worker_processes 1; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #pid logs/nginx.pid; events {
#一般是配置Nginx进程与连接的特性
#若几个同时工作
multi_accept on; #打开同时接受多个新网络连接请求的功能。
use epoll; #使用epoll事件驱动,因为epoll的性能相比其他事件驱动要好很多
worker_connections 10240; #这是指一个子进程最大允许连接10240个连接
} http { # 这是配置http服务器的主要段
include mime.types;
default_type application/octet-stream; #隐藏Nginx软件版本号
server_tokens off; #激活tcp_nodelay功能,提高I/O性能
tcp_nodelay on; # 设置读取客户端请求头数据的超时时间。此处的数值为15,其单位是秒,为经验参考值
client_header_timeout 15; # 设置读取客户端请求体的超时时间
client_body_timeout 15; # 指定响应客户端的超时时间
send_timeout 25; # 上传文件大小限制
client_max_body_size 8m; #压缩配置
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain text/css text/xml application/javascript;
gzip_vary on; #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout 0;
keepalive_timeout 65; #include extra/*.conf;
server {
listen 80;
server_name www.blog.com;
root html; #charset koi8-r; #access_log logs/host.access.log main; location / {
index index.php index.html index.htm;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
}
} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
} # proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
} # deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
}

安装Redis

编译安装

# 解压源码文件
tar -zxvf redis-5.0.7.tar.gz # 切换到解压目录
cd redis-5.0.7 # 编译安装
make PREFIX=/usr/local/redis-5.0.7 install mkdir /usr/local/redis-5.0.7/etc
cp redis.conf /usr/local/redis-5.0.7/etc/ # 创建软链接
cd /usr/local
ln -s redis-5.0.7 redis

配置环境变量

vim /etc/profile
export PATH=/usr/local/redis/bin:$PATH
source /etc/profile # 使修改立即生效

配置后台运行

redis以后台进程的形式运行

vim /usr/local/redis/etc/redis.conf

# daeonize no(大约136行)
# 改为 ->
daemonize yes

配置Systemd服务

/usr/lib/systemd/system/添加一个redis.service文件,并添加如下内容

[Unit]
Description=Redis
After=network.target [Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli shutdown
PrivateTmp=true [Install]
WantedBy=multi-user.target

重载daemon

执行下面的命令重新载入 systemd,扫描新的或有变动的单元即可

systemctl daemon-reload

开机自启

systemctl enable redis.service

启动redis服务

systemctl start redis.service

参考资料

centos7 源码编译安装 mysql5.7

mysql在linux7下systemd的相关配置

Managing MySQL Server with systemd

centos7 7.3php编译安装

centos7下编译安装php7.3

cmake安装配置及入门指南

编译CMake 3.15 和 gcc 5.3.0

CentOS7升级OpenSSL到1.1.1

LNMP环境搭建(<=PHP7.2)的更多相关文章

  1. LNMP环境搭建

    LNMP环境搭建 Linux + Nginx + MySQL + PHP PHP是一种脚本语言,当前中国乃至世界上使用PHP语言开发的网站非常普遍 Nginx是一个web服务软件,和apache是一类 ...

  2. 阿里云(ECS)Centos服务器LNMP环境搭建

    阿里云( ECS ) Centos7 服务器 LNMP 环境搭建 前言 第一次接触阿里云是大四的时候,当时在校外公司做兼职,关于智能家居项目的,话说当时俺就只有一个月左右的 php 后台开发经验(还是 ...

  3. LNMP环境搭建:Nginx安装、测试与域名配置

    Nginx作为一款优秀的Web Server软件同时也是一款优秀的负载均衡或前端反向代理.缓存服务软件 2.编译安装Nginx (1)安装Nginx依赖函数库pcre pcre为“perl兼容正则表达 ...

  4. LNMP环境搭建——MySQL篇

    The world's most popular open source database 1.Install MySQL root@kallen:~# apt-get install mysql-s ...

  5. LNMP环境搭建之php安装,wordpress博客搭建

    LNMP环境搭建之php安装,wordpress博客搭建 一.介绍: 1.什么是CGI CGI全称是"通用网关接口"(Common Gateway Interface),HTTP服 ...

  6. Ubuntu16.04 lnmp 环境搭建

    Ubuntu16.04 lnmp 环境搭建 nginx 安装 sudo apt-add-repository ppa:nginx/stablesudo apt-add-repository ppa:o ...

  7. LNMP环境搭建之编译安装指南(php-5.3.27.tar.gz)

    测试环境:CentOS release 6.5 (Final) 软件安装:nginx   mysql-5.5.32-linux2.6-x86_64.tar.gz   php-5.3.27.tar.gz ...

  8. LNMP环境搭建哈哈

    经过一番折腾,终于将LNMP环境搭建完成了.本文介绍的LNMP环境是在windows的Oracle VM VirtualBox中的Centos虚拟机上搭建的,各个软件的版本为:Centos7 + Ng ...

  9. LNMP环境搭建--Centos7

    LNMP环境搭建--Centos7 | 刘鹏--博客 盒子 盒子 博客 分类 搜索 文章目录 在Centos7环境安装LAMP环境,备忘哈哈. 准备 首先去官网下载php,nginx 编译安装php ...

  10. zabbix学习(一)——LNMP环境搭建及zabbix安装

    第一部分:LNMP环境搭建 一.环境说明: OS:   centos7.6_x64nginx:nginx-1.16.0php:   php-7.1.11mysql:mysql-5.6.44 zabbi ...

随机推荐

  1. python接口自动化--Excel

    1.操作步骤: (1)安装python官方Excel库-->xlrd (2)获取Excel文件位置并读取 (3)读取sheet (4)读取指定rows和cols内容 2.示例代码 # -*- c ...

  2. 发送大数据时,PDU的问题?

    昨天发现通过 Ice发送请求传递一个大块数据时,当请求的体积大于1.2M后,直接抛出异常Connection Lost,对方peer或是断开了.通过防火墙配置排查,以及对同一网络同一机器的php服务p ...

  3. 从cocos2dx源代码看android和iOS跨平台那些事

    cocos2dx一个跨移动(平板)平台的游戏引擎,支持2d和3d,基于c/c++,网上介绍多在此不详叙.我们本篇关心的是跨平台那些事,自然而然就找到platform目录.好家伙,支持的操作平台还真不少 ...

  4. python_07

    破解极限滑动认证 from selenium import webdriver from selenium.webdriver import ActionChains from PIL import ...

  5. 学习完vue指令 做的一个学生信息录入系统

    一.demo实现原理 输入完个人信息后  点击创建用户  数据就会显示在下面的表格中 用到了vue中的数据双向绑定 v-model v-for 还要js正则 数组的unshift splice 等方法 ...

  6. ggforce|绘制区域轮廓-区域放大-寻找你的“onepiece”

    首发于“生信补给站” https://mp.weixin.qq.com/s/fm69bw-3cww1YEW_kBcTHQ 更多关于R语言,ggplot2绘图,生信分析的内容,关注有惊喜

  7. 题解 P1226 【【模板】快速幂||取余运算】

    1.题目分析 原题 本题在于快速幂的使用,以及对long long的应用问题. 2.解题思路 快速幂 求幂常见用法: int pow(int a,int b) { int ans; for(int i ...

  8. 【JavaEE】之MyBatis的ParameterType的使用

    在MyBatis的Mapper.xml文件中,参数的表示方法有两种:一种是使用 “#{XXX}” 的方式表示的,另一种是使用 “${XXX}” 的方式表示的.今天来介绍以下这两种方式的不同之处. 1. ...

  9. 修改json源码支持datetime序列化

    修改json源码支持datetime序列化 import json import datetime now = datetime.datetime.today() json.dumps(now) 抛出 ...

  10. 2019-2020-1 20199304《Linux内核原理与分析》第七周作业

    进程的描述和进程的创建 1.进程描述 1.1操作系统的三大管理功能以及对应的抽象概念: 进程管理 内存管理 文件系统 1.2Linux进程的状态: (1)Linux中进程的状态细分可以分为七种: R运 ...