源码安装LAMP环境+yii2框架-创新互联

当有些新增的软件版本出现,而你想要进行尝试使用,但是在本地用yum安装却不能满足你的需求时, 那么朋友,你需要和我一样用源码安装的形式来达成你的目的。

因为开发的同事想要一个Apache 2.4.25 + Mysql 5.7.17 + php7.1.5 + yii2-basic的环境来做活动。

10年积累的成都做网站、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有朝阳县免费网站建设让你可以放心的选择与我们合作。

为了满足应用需求,现在我们就开始着手做吧!

一、安装Apache

本来在本地,只要你能联网,就能够用yum轻轻松松安装上Apache,而且安装的版本会比官网上

下载的最新源码包还要新。

但我发现yum安装的Apache不能够满足我后期的一些需求,大部分程度应该是因为我不才啦,

所以我就直接选择了源码安装。

当然有过源码安装的朋友也一定知道,会有依赖库要先装哦,不然在源码安装的时候就会提示哪些依赖库找不到,导致装不上。

很简单先安装Apache的依赖包:zlib zlib-devel pcre-devel pcre apr apr-util

在源码安装apache之前,我们要先卸载系统中已经通过rpm包安装的apache。如下:

先找出装好的httpd的rpm包

rpm -qa |grep httpd

通过指令卸载安装好的httpd相关的rpm包

rpm -e --nodeps httpd-2.4.6-1.el7.centos.x86_64 rpm -e --nodeps httpd-tools-2.4.6-1.el7.centos.x86_64

我为了方便安装依赖包都用yum安装, 但是有两个依赖包(apr、apr-util)在Apache编译的时候找不到类库,所以只能采取源码安装形式再次安装。

在http://apr.apache.org/download.cgi可以找到这两个依赖库的安装包

 http://mirrors.noc.im/apache//apr/apr-1.5.2.tar.gz

 http://mirrors.noc.im/apache//apr/apr-util-1.5.4.tar.gz

然后分别在系统的目录下解压,并安装(一定要确保安装了 gcc-c++ 、make没有的话使用 yum install gcc-c++ make 进行安装)

 tar -xf apr-1.5.2.tar.gz  cd apr-1.5.2  ./configure --prefix=/data0/apr/  make && make install    tar -xf apr-util-1.5.4.tar.gz  cd  apr-util-1.5.4  ./configure --prefix=/data0/apr-util --with-apr=/data0/apr/  make && make install

好了,到这里,就可以开始安装Apache了

先到Apache官网下载你想要的版本 http://httpd.apache.org/download.cgi 现在最新的稳定版本2.4.25

下载以后解压

tar -xf httpd-2.4.25.tar.gz

进入解压的目录

cd httpd-2.4.25

可以根据你自己的需求来安装配置,使用./configure --help查看

查看完安装要配置哪些参数以后,我们就要开始配置参数并且检查了

./configure \ --prefix=/data0/apache/ \ --with-apr=/data0/apr/ \ --with-apr-util=/data0/apr-util/ \ --enable-so \ --enbale-deflate=shared \ --enbale-expires=shared \ --enable-rewrite=shared \ --enable-static-support

如果没有错误提示,那么开始编译安装

make && make install

安装完毕以后,进入到安装目录,开启Apache服务

cd /data0/apache/bin/ ./apachectl start

可能会报错:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name,  using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message

没关系,可以解决:

vim /data0/apache/conf/httpd.conf ##增加一行 ServerName localhost

修改完配置档,重启服务,让它生效:用浏览器访问http://IP,看看是不是出现it works!

源码安装LAMP环境+yii2框架

到这里,可以说Apache安装完毕

将apache的启动脚本复制到/etc/rc.d/init.d这个目录下

cp /data0/apache/bin/apachectl /etc/init.d/httpd

其实apache的启动是调用/data0/apache/bin/httpd这个命令,查看该脚本的内容,如下:

cat /etc/init.d/httpd|grep -v ^#|grep -v ^$ ACMD="$1" ARGV="$@" HTTPD='/data0/apache//bin/httpd' if test -f /data0/apache//bin/envvars; then   . /data0/apache//bin/envvars fi LYNX="lynx -dump" STATUSURL="http://localhost:80/server-status" ULIMIT_MAX_FILES="ulimit -S -n `ulimit -H -n`" if [ "x$ULIMIT_MAX_FILES" != "x" ] ; then     $ULIMIT_MAX_FILES fi ERROR=0 if [ "x$ARGV" = "x" ] ; then      ARGV="-h" fi case $ACMD in start|stop|restart|graceful|graceful-stop)     $HTTPD -k $ARGV     ERROR=$?     ;; startssl|sslstart|start-SSL)     echo The startssl option is no longer supported.     echo Please edit httpd.conf to include the SSL configuration settings     echo and then use "apachectl start".     ERROR=2     ;; configtest)     $HTTPD -t     ERROR=$?     ;; status)     $LYNX $STATUSURL | awk ' /process$/ { print; exit } { print } '     ;; fullstatus)     $LYNX $STATUSURL     ;; *)     $HTTPD "$@"     ERROR=$? esac exit $ERROR

启动apache,如下:

/etc/init.d/httpd start netstat -lntp|grep 80 lsof -i :80

也可以使用/data0/apache/bin/httpd进行启动。如下:

/data0/apache/bin/httpd –k start

bin主要存放程序命令目录,。

conf主要存放apache配置文件。

htdocs主要存放站点目录。

logs主要存放默认日志文件。

modules主要存放apache的运行模块。例如php、memcache编译后的模块存放在这里。

二、MySQL源码安装

好了,开始着手MySQL的安装

1.安裝前進行依賴包安裝

yum -y install gcc gcc-c++ ncurses ncurses-devel cmake bison bison-devel openssl openssl-devel pcre pcre-devel

 

2.下载源码包

 2.1 建议到官方网站下载http://dev.mysql.com/downloads/mysql/,选择“Source Code”。下载的过程,需要注册一个Oracle账户,如果有直接登录就好

 2.2 提供一个下载地址:http://101.96.10.47/dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.17.tar.gz

或者https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

新版本的源码增加了boost库,如果你下的源码里面没有需要下载这个库,否则会报错,故需進行下載

3.新建MySQL用户和用户组

groupadd -r mysql useradd -r -g mysql mysql

4.進入安裝步驟

tar -zvxf mysql-boost-5.7.17.tar.gz cd mysql-5.7.17

新建MySQL数据库数据文件目录

mkdir -p /www/mysql-data mkdir -p /www/mysql-logs mkdir -p /www/mysql-temp

進行預編譯

cmake  -DCMAKE_INSTALL_PREFIX=/www/mysql \ -DMYSQL_DATADIR=/www/mysql-data \ -DMYSQL_UNIX_ADDR=/www/mysql/mysql.sock \ -DWITH_BOOST=/www/boost_1_59_0 \ -DSYSCONFDIR=/etc \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLE_DTRACE=0 \ -DDEFAULT_CHARSET=utf8mb4 \ -DDEFAULT_COLLATION=utf8mb4_general_ci \ -DWITH_EMBEDDED_SERVER=1

上述配置解释:

-DCMAKE_INSTALL_PREFIX=/www/mysql    //设置安装目录 -DMYSQL_DATADIR=/www/mysql/data     //设置数据库存放目录              -DMYSQL_UNIX_ADDR=/www/mysql/mysql.sock   //设置UNIX socket目录 -DDEFAULT_CHARSET=utf8mb4     //设置默认字符集 -DDEFAULT_COLLATION=utf8mb4_general_ci     //设置默认校对规则 -DWITH_INNOBASE_STORAGE_ENGINE=1    //添加InnoDB引擎支持 -DSYSCONFDIR=/etc    //设置my.cnf配置文件的所在目录,默认为安装目录,沒有的話,後期可添加一份至此

進行編譯安裝

make && make install

#安装完成后清理一下零时文件

make clean

设置启动脚本,开机自启动(即將mysql做成服務)

#拷贝可执行文件到指定的目录下,并修改名字为mysqld

cp /www/mysql/support-files/mysql.server /etc/init.d/mysqld

#授予可执行的权限

chmod +x /etc/init.d/mysqld

#设置为开机启动

systemctl enable mysqld

修改mysql的可执行目录

chown -Rf mysql:mysql /www/mysql chown -Rf mysql:mysql /www/mysql-data chown -Rf mysql:mysql /www/mysql-logs chown -Rf mysql:mysql /www/mysql-temp

配置文件即修改/etc/my.cnf

#参考,具体里面的参数说明,请自行網上搜索

[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_general_ci skip-external-locking skip-name-resolve user = mysql port = 3306 basedir = /www/mysql datadir = /www/mysql-data tmpdir = /www/mysql-temp # server_id = ..... socket = /www/mysql/mysql.sock log-error = /www/mysql-logs/mysql_error.log pid-file = /www/mysql-data/mysql.pid open_files_limit = 10240 back_log = 600 max_connections=500 max_connect_errors = 6000 wait_timeout=605800 #open_tables = 600 #table_cache = 650 #opened_tables = 630 max_allowed_packet = 32M sort_buffer_size = 4M join_buffer_size = 4M thread_cache_size = 300 query_cache_type = 1 query_cache_size = 256M query_cache_limit = 2M query_cache_min_res_unit = 16k tmp_table_size = 256M max_heap_table_size = 256M key_buffer_size = 256M read_buffer_size = 1M read_rnd_buffer_size = 16M bulk_insert_buffer_size = 64M ###(不區分大小寫設定) lower_case_table_names=1 default-storage-engine = INNODB innodb_buffer_pool_size = 1G innodb_log_buffer_size = 32M innodb_log_file_size = 128M innodb_flush_method = O_DIRECT ##################### long_query_time= 2 slow-query-log = on slow-query-log-file = /www/mysql-logs/mysql-slow.log [mysqldump] quick max_allowed_packet = 32M character_set_server = utf8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid character_set_server = utf8 備註:上述character_set_server = utf8屬於解決亂碼問題

添加环境变量

vi /etc/profile #末尾添加以下内容 #mysql env export PATH=$PATH:/www/mysql/bin:/www/mysql/lib

使得設置文件生效

source /etc/profile

初始化数据库

mysqld --initialize-insecure --user=mysql --basedir=/www/mysql --datadir=/www/mysql-data

备注:

MySQL之前版本mysql_install_db是在mysql_basedir/script下

MySQL 5.7直接放在了mysql_install_db/bin目录下。

"–initialize"已废弃,生成一个随机密码(~/.mysql_secret)

"–initialize-insecure"不会生成密码

"–datadir"目录下不能有数据文件

或者使用下列語句:

mysql_install_db --user=mysql --basedir=/www/mysql --datadir=/www/mysql-data

启动数据库

systemctl start mysqld

查看數據庫狀態

systemctl status mysqld

查看mysql服务进程和端口

ps -ef | grep mysql netstat -tunpl | grep 3306

设置数据库root用户密码

MySQL和Oracle数据库一样,数据库也默认自带了一个root用户(这个和当前Linux主机上的

root用户是完全不搭边的),我们在设置好MySQL数据库的安全配置后初始化root用户的密码。

配制过程中,一路输入 y 就行了。这里只说明下MySQL5.7.17版本中,用户密码策略分成低级

LOW 、中等 MEDIUM 和超强 STRONG 三种,推荐使用中等 MEDIUM 级别!當然也可以不進行等

級設置

查阅官方文档后发现有以下三种密码策略:

政策测试执行

0 ---LOW长度

1 ---MEDIUM长度; 数字,小写/大写和特殊字符

2 ---STRONG长度; 数字,小写/大写和特殊字符; 字典文件

備註:後續的用戶相關密碼將需要按照此標準來執行,但是也可以進行相關修改

mysql_secure_installation

除了

Disallow root login remotely

Remove test database and accesss to it 可以為n,

其他都是y

進入數據庫

mysql -uroot -p密碼

創建其他用戶

mysql> create user 'hua'@'localhost' identified by 'hlj123';##(後續可以修改)

設置存儲引擎

mysql> set storage_engine=INNODB;

創建數據庫

mysql> create database zgz character set utf8;

查看是否建立成功

mysql> show databases;

賦予用戶相關數據庫權限

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.60.0.117' IDENTIFIED BY 'Fnn@88' WITH GRANT OPTION; mysql> flush privileges;

檢驗是否賦予遠程連接數據庫權限已開通

mysql -h 10.60.0.117 -uroot -pFnn@88 zgz

如果進入數據庫說明成功,否則重啟mysql服務即可再次嘗試

若是允許該用戶通過任意服務器可進行連接相關數據庫

mysql> GRANT ALL PRIVILEGES ON databasename.tables TO 'root'@'%' IDENTIFIED BY 'Fnn@88' WITH GRANT OPTION; mysql> flush privileges;

導出你需要的數據庫

mysqldump -h 10.157.136.134 -uroot -proot --events --ignore-table=mysql.event --default-character-set=UTF8 jspxcms >zgz.sql

提前建立一個空數據庫來存放需要導入的數據,後只需要執行數據庫導入命令

mysql> use zgz; mysql> source /root/zgz.sql;##(此處為你放置zgz.sql的存放位置)

确定数据表是否创建成功,即数据文件是否导入成功

mysql> show tables;

當你需要查看當前密碼策略,可進行下列操作:

mysql> show VARIABLES like "%password%" +---------------------------------------+---------+ | Variable_name             |  Value  | |---------------------------------------+---------| | default_password_lifetime       | 0    | | disconnect_on_expired_password    | ON   | | log_builtin_as_identified_by_password| OFF   | | mysql_native_password_proxy_users   | OFF   | | old_passwords             | 0    | | report_password            |     | | sha256_password_proxy_users      | OFF   | | validate_password_dictionary_file   |     | | validate_password_length       | 8    | | validate_password_mixed_case_count  | 1    | | validate_password_number_count    | 1    | | validate_password_policy       | MEDIUM | | validate_password_special_char_count | 1    | +---------------------------------------+---------+ 13 rows in set Time: 0.030s

修改默认密码策略(当然实际环境是不推荐修改为更低安全策略的)

mysql> set global validate_password_policy = 0;

validate_password_number_count指定了密码中数据的长度,

validate_password_special_char_count指定了密码中特殊字符的长度,

validate_password_mixed_case_count指定了密码中大小字母的长度。

这些参数,默认值均为1,所以validate_password_length最小值为4,

如果你显示指定validate_password_length的值小于4,尽管不会报错,

但validate_password_length的值将设为4。

修改validate_password_number_count,validate_password_special_char_count,

validate_password_mixed_case_count中任何一个值,则validate_password_length将进行动态修改

另,可通过my.cnf配置文件设置密码策略的级别

vi /etc/my.cnf [mysqld] validate_password_policy=2

validate_password_policy设置mysql启动的时候,密码策略级别如果设置为3,那么需要指定字典文件

当然你也可以通过my.cnf配置文件关闭validate_password插件

只需要添加一行

validate_password = off

编辑完配置文件后,重启mysqld服务即可生效。

mysql > show VARIABLES  like "validate_password%" +-----------------+---------+ | Variable_name  | Value  | |-----------------+---------| +-----------------+---------+ 0 rows in set Time: 0.008s

关闭validate_password插件后,就没有了validate_password的一些参数变量。

MySQL新版本默认监听在IPv6的地址族上。更改为监听IPv4地址族,

修改my.cnf添加一行配置:bind-address = 0.0.0.0

重启mysqld即可

三、php源码安装

到PHP官网下载最新版本:http://php.net/downloads.php 目前最新稳定版本是7.1.5

同样,先安装上依赖包:

yum install -y php-mcrypt libmcrypt libmcrypt-devel  autoconf  freetype gd jpegsrc libmcrypt libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel

进行解压

tar -xf php-7.1.15.tar.gz cd php-7.1.5 ./configure \ --prefix=/data0/php/ \ --with-apxs2=/data0/apache/bin/apxs \ --enable-fpm \ --enable-mbstring \ --enable-mysqlnd \ --with-gd \ --with-curl \ --with-openssl \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-config-file-path=/data0/php/etc/

检查是否有错,如果有错,可能是有些依赖包没有安装上,根据提示安装上依赖包即可

然后编译

make && make install

如果你在有错的情况下,没有看清就直接多次make编译可能会出错

你就直接

make clean

清楚掉残留就可以了,解决依赖包的问题,进行make && make install

等到编译完成后,我们就包源码包中的配置文件复制到PHP的安装目录下,源码包中有两个配置

php.ini-development  php.ini-production  ,看名字就知道,一个是开发环境,一个是生产环境,

我们这里就复制开发环境的

cp -raf php.ini-development /data0/php/etc/php.ini

到了这一步,将需要让Apache去解析PHP文件,所以设置Apache配置文件:

vim /data0/apache/conf/httpd.conf ###add php   Addtype application/x-httpd-php .php .phtml

重启Apache服务

httpd restart

测试php是否安装成功

在apache的/data0/apache/htdocs/文件目录下添加php文件test.php

vi test.php

在浏览器访问http://IP/test.php,就会显示你安装的数据信息了

源码安装LAMP环境+yii2框架

到这里就可以说你全新的LAMP环境已经搭建成功了!

四、PHP添加扩展

这里谈一点可能会涉及到的东西,就是PHP添加扩展,因为开发的环境可能是集成的环境,所以开发的同事也不太清楚

他们的代码需要什么扩展模块。那怎么办呢?为了适应开发人员的代码环境,我们需要开启他们所需要的扩展模块,否则在应用运行的时候可能就会存在一些问题了,为了提前预防,我们有义务做点什么。

首先请开发人员在他们的集成环境了使用语句

php -m

然后你在你的部署环境上也使用php -m

照着开发提供的PHP modules进行添加扩展即可

因为添加动作都是一样的,就只举一个例子,安装openssl扩展,在你的源码安装包ext下,会有 openssl 目录, 进入到该目录

首先调用我们已经编译好的phpize

/data0/php/bin/phpize

如果有报错,

Cannot find config.m4.  Make sure that you run '/data/php/bin/phpize' in the top level source directory of the module

那就将config0.m4复制到config.m4即可

cp -raf config0.m4 config.m4

再次执行

/data0/php/bin/phpize

诶,这下OK了,弄完之后,你会发现里面多了些文件 其中有configure文件,这个就是我们想要的

./configure \--with-php-config=/usr/local/php/bin/php-config make && make install

如果在此类编译过程中出错,一般是因为缺少某个依赖包,把依赖包安装上即可。

这时你会在你的扩展目录下发现 .so 文件

(扩展目录没有指定的话,就位于 /data0/php/lib/php/extensions/no-debug-zts-xxx 里面 )

然后在php.ini 加上该扩展

vim /data0/php/etc/php.ini ##add extension=/data0/php/lib/php/extensions/no-debug-zts-20160303/openssl.so

然后重启apache 再次访问test.php 就会发现扩展就安装上去了.

五、yii2环境搭建

其实yii2-basic就是免安装的

直接在官网上下载http://www.yiiframework.com/download/yii2-basic,解压到你的web目录下

tar -xf  yii-basic-app-2.0.11.tgz

修改config/web.php文件,给cookieValidationKey配置项添加一个密钥

vim /data0/apache/htdocs/basic/config  'cookieValidationKey' => 'jfsbkjsbfdskjgfdskjbgfsdhjgfajds', ##上面是随便填的,不填会报错,官方文档也说不能让其为空值

为了方便浏览,将apache的默认访问路径修改为yii2的框架目录就可以了!

方法如下:

vim /data0/apache/conf/httpd.conf ##找到DocumentRoot,修改成你希望的路径就可以了 DocumentRoot "/data0/apache//htdocs/basic/web"

打开浏览器访问http://IP,出现下列画面,说明你已安装完毕了。

源码安装LAMP环境+yii2框架

从上面的步骤上来看,是不是很简单啊,哈哈,有兴趣的朋友,可以自己也试试哦!

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻标题:源码安装LAMP环境+yii2框架-创新互联
当前路径:http://scyanting.com/article/dgcpsp.html