当前位置: 首页 > 编程日记 > 正文

centos7 系统下搭建 lnmp 环境

目录

    • 目录
    • 概述
    • 准备工作
    • 开始编译安装
      • 1. 安装 Nginx
        • 1. 解压
        • 2. 环境准备
        • 3. 编译过程
        • 4. Nginx 服务
      • 2. 安装 MySQL
        • 1. 解压
        • 2. 环境准备
        • 3. 安装 CMake 编译器:
        • 4. 编译过程
        • 5. 初始化数据库
        • 6. MySQL 服务
      • 3. 安装 PHP
        • 1. 安装依赖包
        • 2. 编译安装
        • 3. 配置 PHP
      • 4. 整合 LNMP
        • 1 编辑 Nginx 配置文件
        • 2 编辑fastcgi_params文件
        • 3 编辑测试页
        • 4 访问站点测试效果
    • 后记

概述

在之前的工作中,搭建过一次 zabbix 监控平台,应用的就是 LNMP 环境,但都是用的 rpm 包直接安装的。
由于是在阿里云封闭网络环境中搭建的,要想二次利用 LNMP 架构就得重新配置,所以做了本次操作,全部组件都是源码编译,配置成型,方便以后迁移利用。
也编制了文档,方便查阅、二次编辑。

准备工作

本次安装用到的资源包(点击可自动下载):
MySQL-5.6.40
Nginx-1.14.0
PHP-7.1.18
Apache-2.4.33:虽然不是 LAMP 架构,但还是准备了 Apache 的源码包下载地址,方便你我他。

将源码包统一放置在 /root/app 下:
# ls -lh /root/app/
-rw-r–r–. 1 root root 8.7M May 31 14:17 httpd-2.4.33.tar.gz
-rw-r–r–. 1 root root 31M May 31 14:17 mysql-5.6.40.tar.gz
-rw-r–r–. 1 root root 993K May 31 14:17 nginx-1.14.0.tar.gz
-rw-r–r–. 1 root root 19M May 31 14:17 php-7.1.18.tar.gz

开始编译安装

1. 安装 Nginx

1. 解压

# tar -xf nginx-1.14.0.tar.gz
# cd nginx-1.14.0/

2. 环境准备

# yum -y install gcc
# useradd -s /sbin/nologin -M nginx
# id nginx
# mkdir -p /var/tmp/nginx/{client,proxy,fastcgi,uwsgi,scgi}

3. 编译过程

在 Nginx 解压的目录下执行

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/tmp/nginx/client \
--http-proxy-temp-path=/var/tmp/nginx/proxy \
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--with-pcre \
--with-file-aio \
--with-http_secure_link_module \
--with-threads
  • 此时可能遇到的报错:

    错误 1:./configure: error: the HTTP rewrite module requires the PCRE library.
    错误 2: ./configure: error: SSL modules require the OpenSSL library.
    解决办法(缺少依赖库,安装就好了)
    # yum -y install pcre-devel
    # yum -y install openssl-devel

  • configure 成功后,执行:
    # make
    # make install
    注:可在编译结束后,通过 echo $? 来查看任务输出码,一般为 0 则是成功。

4. Nginx 服务

启动服务
# /usr/local/nginx/sbin/nginx
# ss -antp |grep nginx
LISTEN 0 128 *:80 *:* users:((“nginx”,pid=8814,fd=6), (“nginx”,pid=8813,fd=6))


设置开机自启动:
# tail -1 /etc/rc.d/rc.local
/usr/local/nginx/sbin/nginx
创建软连接:
# ln -s /usr/local//nginx/sbin/nginx /usr/bin/nginx

2. 安装 MySQL

1. 解压

# tar -xf mysql-5.6.40.tar.gz
# cd mysql-5.6.40/

2. 环境准备

  • 卸载系统原装数据库 mariadb
    # rpm -qa | grep mariadb
    mariadb-libs-5.5.56-2.el7.x86_64
    # rpm -e --nodeps mariadb-libs

  • 创建数据目录
    # mkdir -p /mydata/data

  • 还有很重要的两步
    # groupadd -g 27 mysql
    # useradd -u 27 -g 27 -s /sbin/nologin -M mysql
    # chown -R mysql.mysql /mydata/data/


注:MySQL5.5 之前的版本使用的是 gcc 编译器,自5.5版本以后,就开始使用 CMake 编译工具了,因此,在安装源文件中找不到 configure 文件是正常的。

3. 安装 CMake 编译器:

# rpm -qa |grep cmake
# yum list |grep cmake
cmake.x86_64            2.8.12.2-2.el7            base
cmake-fedora.noarch     2.9.3-1.el7               epel
cmake-gui.x86_64        2.8.12.2-2.el7            base
cmake3.x86_64           3.11.0-1.el7              epel
cmake3-data.noarch      3.11.0-1.el7              epel
cmake3-doc.noarch       3.11.0-1.el7              epel
cmake3-gui.x86_64       3.11.0-1.el7              epel
extra-cmake-modules.noarch     5.36.0-1.el7       epel  # yum -y install cmake

4. 编译过程

进入解压的 MySQL 目录执行

  • 环境检查
    # cmake -L

    可能有如下报错:
    … …
    Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
    CMake Error at cmake/readline.cmake:85 (MESSAGE):
    Curses library not found. Please install appropriate package,
    remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
    Call Stack (most recent call first):
    cmake/readline.cmake:128 (FIND_CURSES)
    cmake/readline.cmake:218 (MYSQL_USE_BUNDLED_EDITLINE)
    CMakeLists.txt:448 (MYSQL_CHECK_EDITLINE)


    解决办法:
    # yum -y install ncurses-devel
    另外要注意
    错误的编译信息会存放到解压目录下 CMakeCache.txt 文件中,所以每次解决完问题,重新编译需要将此文件删掉.

  • Cmake
# cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_DATADIR=/mydata/data \
-DMYSQL_TCP_PORT=3306 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
  • make && make install
    # make
    # make install

5. 初始化数据库

先修改 mysql 目录的属主属组
# chown -R mysql.mysql /usr/local/mysql

单纯执行初始化命令会报错,可能报错如下:
2018-05-31 16:53:40 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option (see documentation for more details).
2018-05-31 16:53:40 0 [Note] –secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
2018-05-31 16:53:40 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.6.40) starting as process 87262 …
2018-05-31 16:53:40 87262 [Note] Plugin ‘FEDERATED’ is disabled.
/usr/local/mysql/bin/mysqld: Table ‘mysql.plugin’ doesn’t exist
2018-05-31 16:53:40 87262 [ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it.


数据库初始化报错

网上找了好多相似案例,终于用下面的方法解决了

先执行如下操作
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mydata/data
再执行初始化命令
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/mydata/data
ls -h /mydata/data/
-rw-rw----. 1 mysql mysql   56 May 31 17:03 auto.cnf
-rw-rw----. 1 mysql mysql  76M Jun  1 09:21 ibdata1
-rw-rw----. 1 mysql mysql  48M Jun  1 09:21 ib_logfile0
-rw-rw----. 1 mysql mysql  48M May 31 16:56 ib_logfile1
-rw-rw----. 1 mysql mysql  33K Jun  1 09:20 lnmp.linux.com.err
-rw-rw----. 1 mysql mysql    6 May 31 17:14 lnmp.linux.com.pid
drwx------. 2 mysql mysql 4.0K May 31 16:56 mysql
drwx------. 2 mysql mysql 4.0K May 31 16:56 performance_schema
drwx------. 2 mysql mysql   94 Jun  1 09:21 test

6. MySQL 服务

  • 启动服务

    # cd /usr/local/mysql/support-files/
    # cp my-default.cnf /etc/my.cnf
    # vim /etc/my.cnf # 此步骤暂不说明,请根据需求自行解决
    # /usr/local/mysql/bin/mysqld_safe --user=mysql & # 这里敲两下回车
    # netstat -antp |grep mysqld
    tcp6 0 0 :::3306 :::* LISTEN 87606/mysqld

  • 设置开机自启动:

    # cp mysql.server /etc/init.d/mysqldd
    # chmod +x /etc/init.d/mysqldd
    # /etc/init.d/mysqldd restart
    Shutting down MySQL..180529 14:29:26 mysqld_safe mysqld from pid file
    /mydata/data/LNMP.linux.com.pid ended SUCCESS!
    [1]+ Done ./bin/mysqld_safe –user=mysql (wd: /usr/local/mysql)
    (wd now: /usr/local/mysql/support-files)
    # chkconfig --add mysqldd
    # chkconfig mysqldd on
    # #chkconfig mysqldd --list
    … …
    mysqldd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

  • 设置全局变量:

    可以在 profile 文件中添加,也可以单独在 profile.d 目录中创建 .sh 文件,我一般用后者:
    # ls -ld /etc/profile*
    -rw-r–r–. 1 root root 1813 May 28 14:04 /etc/profile
    drwxr-xr-x. 2 root root 4096 May 28 17:09 /etc/profile.d
    # vim mysql.sh
    # cat /etc/profile.d/mysql.sh
    export PATH=$PATH:/usr/local/mysql/bin
    # source /etc/profile.d/mysql.sh
    # echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin

3. 安装 PHP

1. 安装依赖包

# yum -y install libxml2-devel bzip2-devel libmcrypt libmcrypt-devel mcrypt mhash mhash-devel
# yum -y install curl-devel libjpeg-devel libpng libpng-devel freetype freetype-develPS:为什么我知道安装这些包,因为这是一遍一遍环境检测教育出来的... ...

2. 编译安装

./configure \
--prefix=/usr/local/php7 \
--exec-prefix=/usr/local/php7 \
--bindir=/usr/local/php7/bin \
--sbindir=/usr/local/php7/sbin \
--includedir=/usr/local/php7/include \
--libdir=/usr/local/php7/lib/php \
--mandir=/usr/local/php7/php/man \
--with-config-file-path=/usr/local/php7/etc \
--with-mysql-sock=/tmp/mysql.sock \
--with-mcrypt=/usr/include \
--with-mhash \
--with-openssl \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql \
--enable-mysqlnd \
--with-gd \
--with-iconv \
--with-zlib \
--enable-zip \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-curl \
--with-jpeg-dir \
--with-freetype-dir \
--enable-opcache \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--without-gdbm \
--disable-fileinfo  

为了方便以后的移植(也不知道用不用得上),我把一般能用到的参数都添加上了,此处特别强调一下 mysql 相关的参数,因为我为此重新编译了 MySQL 和 PHP。

最开始编译时就是从网上 copy 的,包括 - -with-mysql 参数,但是不知道从什么版本(后来查过官网才知道)开始,这个参数就被摒弃了。

重新编译时,加了下面两个参数:
–with-pdo-mysql=/usr/local/mysql
–enable-mysqlnd
加这两个参数的意义,会在文章的后面简单提到
详解请查看官方文档

  • make && make install
    # make
    # make install

3. 配置 PHP

  • 拷贝各种配置文件:
#cd /root/app/php-7.1.18
#cp php.ini-production /etc/php.ini
#cd /usr/local/php7/etc
#cp php-fpm.conf.default php-fpm.conf
#cd /root/app/php-7.1.18/sapi/fpm
#cp init.d.php-fpm /etc/init.d/php-fpm
#chmod a+x /etc/init.d/php-fpm设置开机自启动
#chkconfig --add php-fpm
#chkconfig --list php-fpm
...
php-fpm         0:off   1:off   2:on    3:on    4:on    5:on    6:off
编辑配置文件,这很重要
至于各个参数的意义,请自行查找相应文档
# vim /usr/local/php7/etc/php-fpm.conf
# cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
# vim /usr/local/php7/etc/php-fpm.d/www.conf[root@LNMP.linux.com /usr/local/php7/etc] LNMP
# grep -Ev '^$|^;' /usr/local/php7/etc/php-fpm.conf
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
include=/usr/local/php7/etc/php-fpm.d/*.conf[root@LNMP.linux.com /usr/local/php7/etc] LNMP
# grep -Ev '^$|^;' php-fpm.d/www.conf
[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000 
pm = dynamic
pm.max_children = 15            # 这些参数自行计算修改,参考官方文档或大神博客
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15注:以上值的大小必须遵循如下排列
pm.max_spare_servers > pm.start_servers > pm.min_spare_servers


  • 启动服务

[root@LNMP.linux.com /usr/local/php7/etc] LNMP
# /etc/init.d/php-fpm start
Starting php-fpm done


[root@LNMP.linux.com /usr/local/php7/etc] LNMP
# ss -antp |grep php-fpm
LISTEN 0 128 127.0.0.1:9000 : users:((“php-fpm”,pid=81980,fd=0),(“php-fpm”,pid=81979,fd=0),(“php-fpm”,pid=81978,fd=0),(“php-fpm”,pid=81977,fd=0),(“php-fpm”,pid=81976,fd=0),(“php-fpm”,pid=81975,fd=0),(“php-fpm”,pid=81974,fd=0),(“php-fpm”,pid=81973,fd=0),(“php-fpm”,pid=81972,fd=0),(“php-fpm”,pid=81971,fd=0),(“php-fpm”,pid=81970,fd=7))


注:
此时用 systemctl 查看 php-fpm 服务启动状态,看到是未启动的话,就停止 php-fpm 服务.
然后 systemctl start php-fpm,之前的步骤已经设置过开机自启动,此处不用再做。

4. 整合 LNMP

终于编译完这些 balabala… 终于可以干点儿正事儿啦!!!

1 编辑 Nginx 配置文件

整合 Nginx 和 PHP,改动内容如下:
...location / {root   html;index  index.php a.php index.html index.htm;}...location ~ \.php$  {root           /web/docs;fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;include        fastcgi_params;}

2 编辑fastcgi_params文件

  • 编辑/usr/local//nginx/conf/fastcgi_params文件,并将内容修改为如下内容,配置fastcgi参数:

#grep -Ev '^$|^#' /usr/local/nginx/conf/fastcgi_params
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  SCRIPT_FILENAME    $document_root\$fastcgi_script_name;    # 改动的是这里
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT     $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
fastcgi_param  REDIRECT_STATUS    200;

3 编辑测试页

在 /web/docs(我自定义了PHP初始页位置,可以不改,默认放在Nginx的html目录下)目录下编写 index.php 和 a.php ,内容如下:

#cat index.php<?phpphpinfo();?>

编写连接数据库的测试页:

    #cat a.php<?php$link=mysqli_connect("localhost","root","");if ($link)echo "Succeed!";elseecho "Fail!";mysqli_close();?>

4 访问站点测试效果

访问 $IP 可以看到 PHP 初始页面 ~ nice


PHP首页

访问 $IP/a.php 很可能会有http error 500的报错 ~ XXX


HTML error 500

我在测试数据库连接这里卡了一天的时间,看了各个日志,参考了网友同类型报错,但始终解决不了。
只好重新编译,查找和MySQL相关的参数,如上文提到的,加了那两个参数,再次编译果然能用了。

成功之前,还有一个另类的报错:
Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /usr/local/nginx/html/a.php:7 Stack trace: #0 {main} thrown in /usr/local/nginx/html/a.php on line 2

这里和PHP版本有关,查看了官方文档,发现自5.5.0版本开始废弃了好多api,并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。
具体的可以参考官方文档。链接:http://php.net/manual/zh/ref.mysql.php


突然想起郭德纲的那句话:“大难不死,必有下回”,在我这应验了,深深的理解了什么叫绝望 T_T

    成功之后竟然还有一个报警!!!Warning: mysqli_connect(): Headers and client library minor version mismatch. Headers:50640 Library:50556 in /usr/local/nginx/html/a.php on line 2


PHP-mysql警告页

对于这个,我实在没耐心继续搞了,毕竟是利用了好多工作时间,欠的工作要补救一下了。也希望有大牛在评论下指点一二


后记

用了大概一周的时间,断断续续的编译、搭建,学习了很多,但也发现不懂的更多。官方文档和强大的网友总能给你惊喜,要是没收到,那就歇一会儿再做就好了 ^_^

转载于:https://www.cnblogs.com/nimo97/p/9704764.html

相关文章:

dp uva1218

题目链接 一共有三种状态&#xff1a; 1、d[u][0]&#xff1a;u是服务器&#xff0c;每个子结点可以是也可以不是。 2、d[u][1]&#xff1a;u不是服务器&#xff0c;但u的父亲是&#xff0c;u的子结点都不是服务器。 3、d[u][2]&#xff1a;u和u的父亲都不是服务器&#xff0c;…

浏览器安全检查己通过_百度主动推送三项合一功能

百度主动推送三项合一功能作者&#xff1a;68喜功能模块&#xff1a;搜索关键词记录推送熊掌号当天推送熊掌号历史推送普通主动推送*///错误显示屏蔽error_reporting(E_ERROR | E_WARNING | E_PARSE);require ./common.inc.php; //引入公用函数$starid 1; //初始ID 开$limit…

EOS账户权限

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 账户和权限 钱包 账户 授权和权限 其他 默认账户配置(单个签名) 多签名账户和自定义权限 帐户是存储在区块链中的人类可读标识符。 每个交易都根据…

怎样在表格中选出同一类_3分钟教会你如何将不同表格中的数据关联在一起

原标题&#xff1a; 3分钟教会你如何将不同表格中的数据关联在一起版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。智能输入超级表格 微视频关键词&#xff1a; 智能输入 关联不同表格 逻辑输入「超级表格微视频」第六期提升效率、 增强免疫力&…

矢量图面层和线层相交得到相交后的线层文件(gis相交)

目的&#xff1a;将arcgis里的面层和线层相交(重叠)部分的线单独生成一个shp文件&#xff0c;用于道路路网密度计算等。注意&#xff1a;进行相交运算后生成的是线要素文件&#xff0c;相当于把面线相交部分的线单独拿了出来。操作例子&#xff1a;将图示的面层和线层相交处理。…

区块链3.0:拥抱EOS

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 EOS是当下最火的区块链技术&#xff0c;被社会广泛看好为下一代区块链3.0。不同于以太坊的学习&#xff0c;EOS的主语言是C&#xff0c;本文作为EO…

python3.9.0 print_关于 Python 3.9,那些你不知道的事

原标题&#xff1a;关于 Python 3.9&#xff0c;那些你不知道的事作者 | Ayushi Rawat编译 | 高卫华题图 | 视觉中国Python一直在满足社区需求&#xff0c;并且将成为未来使用最多的语言。Python的下一个版本带来了更快速的进程释放&#xff0c;性能的提升&#xff0c;简便的新…

djangorestframework怎么这么好用!

一年前就已经用过restframework, 当时觉得这个只是给web框架打辅助的, 他能实现的我也都实现(可能没有那么好用, 嘿嘿) 但是我有一种东西叫做效率, 时间就是金钱, 别人造好的就直接用就可以了, 自己其实没必要在去重复. 最近写一个调查问卷系统, 利用了以下知识点 1. django 2.…

第五百六十四天 how can I 坚持

变得越来越成熟了啊&#xff0c;放下的速度越来越快了。 我不会去羡慕那些亿万富翁&#xff0c;也不会去鄙视一个流浪汉&#xff0c;人人生而平等&#xff0c;just oncelife。 学会线代睡觉&#xff0c;晚上竟然又看起了不良人2.哎。转载于:https://www.cnblogs.com/52-it/p/60…

EOSIO Dawn 4.0 发布

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 关于Dawn 4.0 RAM分配的反馈 一些社区成员表示担心&#xff0c;在其他任何人发现之前&#xff0c;有些人会通过购买便宜的内存来获得不合理的利润。…

shell脚本俄罗斯方块游戏

亲自测试了一个大牛写的shell脚本&#xff0c;感兴趣可以看看&#xff0c;效果如下&#xff1a; 代码如下&#xff1a; 1 #!/bin/bash2 3 # Tetris Game4 # 10.21.2003 xhchen<[email]xhchenwinbond.com.tw[/email]>5 6 #APP declaration7 APP_NAME"${0##*[\\/]}&…

python 虚拟现实_虚拟现实 | MOOC中国 - 慕课改变你,你改变世界

你将学到什么Discover the fundamentals of Virtual Reality, the hardware and history, different applications, and the psychology and challenges of the medium.Learn the basics of 3D graphics, how we create objects and how to lay them out to create an environm…

Linux常用开发环境软件-jdk安装

linux下安装jdk1.8版本 用rpm -qa | grep java查看rpm安装的jdk版本卸载openjdk[roothuangdanfeng ~]# rpm -e --nodeps tzdata-java-2016c-1.el6.noarch     [roothuangdanfeng ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64     [roothuang…

EOS Cleos 命令使用指南

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 命令参考 操作 语法 例子 获取所有命令 $ cleos 例子 获取所有子命令 $ cleos ${command} 例子 链接节点 $ cleos --url node:{node}:no…

如何养出一个三十几亿身家的儿子

简评&#xff1a;他是 Atlassian 联合创始人&#xff08;$36亿&#xff09;的父亲&#xff0c;他以前是花旗银行和 IBM 的高管&#xff0c;是在澳大利亚设立花旗银行的那个人。晚饭时间饭桌上与孩子们聊的是「global issues」。 为了避免混淆&#xff0c;以下简称「父亲」和「儿…

jQuery学习- 内容选择器

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>内容选择器</title><script src"js/jquery.js"></script><script type"text/javascript">$(function(){//利用:contains获取包…

quickpcb添加pcb库_quickpcb使用说明

怎样抄板呢&#xff1f;抄板流程是怎样的&#xff1f;抄板比设计难度低得多&#xff0c;抄板&#xff0c;其实就是依葫芦画瓢。抄板步骤的简单说明&#xff1a;1.扫描电路板图片2.运行Quickpcb2005程序3.在文件菜单中调入扫描的电路板图片4.这个软件提供了测量工具和计算器&…

[mqtt]mqtt嵌入式移植

目前在无线这块&#xff0c;很多4G模组的厂商已经将mqtt放入模块内&#xff0c;无需在项目代码中再实现mqtt移植 github eclipse paho source code: https://github.com/mqtt/mqtt.github.io/wiki/libraries STM32 mqtt移植: http://sun2y.me/2017/05/12/MQTT%E5%8D%8F%E8%AE%A…

vue中点击第一次没有触发按钮怎么操作_vue如何触发某个元素的单击事件?

我来回答一波吧&#xff0c;&#xff0c;&#xff0c;因为没复习&#xff0c;&#xff0c;导致知识点结合不紧密。。。原生的中。。我们的写法是这样的王蒿大爷function myFunction(){document.getElementById("demo").innerHTML"Hello World";}window.οn…

微信小程序request合法域名怎么配置啊

request合法域名怎么配置啊&#xff0c; 有木有配置好的大神发来看看呀&#xff01; 用你申请小程序的后台账号&#xff0c;登录微信公众平台。然后点击设置&#xff0c;可配置服务器信息。<ignore_js_op>WechatIMG14.jpg (18.29 KB, 下载次数: 0) 登陆后 <ignore_js_…

全球比特币和区块链领域创业企业全景图

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 全球比特币和区块链创业企业中&#xff0c;美国的数量占全球55%&#xff0c;其次为英国占6%&#xff0c;新加坡占3%&#xff0c;中国仅占2%&#x…

iphone 在设置了initial-scale=1 之后,在设置滚动条之后,没有滑动效果的解决办法...

iphone在设置了initial-scale1 之后&#xff0c;我们终于可以以1:1 的比例进行页面设计了。 关于viewport&#xff0c;还有一个很重要的概念是&#xff1a;iphone 的safari 浏览器完全没有滚动条&#xff0c;而且不是简单的“隐藏滚动条”&#xff0c;是根本没有这个功能。 iph…

python入门小练习_python入门题目小练

Q1:Return the number (count) of vowels in the given string.We will consider a, e, i, o, and u as vowels for this Kata.The input string will only consist of lower case letters and/or spaces.也就是返回给定字符串中的元音字母(a, e, i, o, u)个数。分析&#xff1…

Cookie 用法

//Cookie:是一个客户端状态保持机制&#xff0c;&#xff08;网站的数据是存在客户端&#xff09;&#xff0c;与隐藏域与ViewState对象都属于这种客户端状态保持&#xff0c;Cookie中存储的是关于网站相关的文本字符串数据。Cookie的存储方式有两种&#xff0c;如果不指定过期…

比特币vs分布式账本vs以太坊vs区块链

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 我们经常被告知&#xff0c;区块链 - 比特币背后的技术 - 不仅将重新布线银行业&#xff0c;还包括社会保障支付&#xff0c;医疗保健甚至数字投票…

git 修改标签名称_Git常用命令汇总,希望能帮到你

展示帮助信息git help -g回到远程仓库的状态抛弃本地所有的修改&#xff0c;回到远程仓库的状态。git fetch --all && git reset --hard origin/master重设第一个commit也就是把所有的改动都重新放回工作区&#xff0c;并清空所有的commit&#xff0c;这样就可以重新提…

js字符串去重

js字符串去重&#xff1a; 1、 去掉字符串前后所有空格&#xff1a; function Trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ""); }说明&#xff1a; 如果使用jQuery直接使用$.trim(str)方法即可&#xff0c;str表示要去掉前后所有空格的字符串。 2、 去掉字…

JavaScript-也来谈--闭包

闭包&#xff0c;以前研究过&#xff0c;可能是当初理解的不够透彻&#xff0c;现在又忘了&#xff0c;(给自己一个台阶下-...)毕竟js一直没怎么用&#xff0c; 为了防止自己过段时间再忘了&#xff0c;写篇重要的闭包重点&#xff0c; 这样时不时也能温习下知识&#xff0c;不…

ABS是啥,为什么区块链可以与它完美结合?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 房地产市场在各方调控下终于进入新的平稳期&#xff0c;但租房市场近日来却是水涨船高。抛开传统的租售比概念不谈&#xff0c;今天小编想和大家谈…

Python学习笔记——全局变量声明

最近在编写python程序时发现&#xff0c;在函数中可以对函数外面的全局变量进行读取、打印等操作&#xff0c;但是不能赋值&#xff0c;否则会报错&#xff1a;UnboundLocalError: local variable a referenced before assignment示例代码如下&#xff1a;a 0def fun():print(…