电影《社交网络》中,facebook创始人马克.扎克失恋后***哈佛大学宿舍楼服务器,窃取数据库资料,并在两个小时内完成了一个给校内女生评分的交互网站,该网站一天内点击数过10W,直接导致学校服务器崩溃。。。。。。
其实,构建那样一个网站并不需要很多高深的技术,任何一个有一定网络编程基础的人都可以做到。马克构建网站所用的是Apache服务器和PHP服务器脚本语言,我曾经用三天时间学习PHP,然后用了两个星期为学校写了一个网站,可见PHP是很简单的,而facebook后台也是用php写的,当然,大家现在看到的我的wordpress博客后台也是php~~。话说回来,很多人可能已经用上ubuntu了,大家可能花了大量时间在ubuntu的美化上,这无可厚非,但是,ubuntu应该给我们的工作和学习带来更多的便利和方便。ubuntu作为linux,为我们提供了强大的网络方面的功能,其中的服务器技术尤其强大,安全。如果不学习linux的网络技术,很难说自己掌握了linux。
今天,我在ubuntu下配置了一个Apache服务器。通过Apache我们可以学习php网络编程,可以用它来部署自己本地的wordpress博客,从而进一步通过网络和朋友交流。从此,你将深刻体会到网络带个我们的神奇力量,至少我是这样觉得的~~
步骤一,安装apache2
1 | sudo apt-get install apache2 |
安装完成。
运行如下命令重启下: 1 | sudo /etc/init.d/apache2 restart |
在浏览器里输入http://localhost或者是http://127.0.0.1,如果看到了It works!,那就说明Apache就成功的安装了,Apache的默认安装,会在/var下建立一个名为www的目录,这个就是Web目录了,所有要能过浏览器访问的Web文件都要放到这个目录里。
步骤二 ,安装php:
1 | sudo apt-get install libapache2-mod-php5 php5 |
此外,建议安装扩展php5-gd php5-mysql,安装方式同上.
安装完后,我们要重新启动Apache,让它加载PHP模块:
1 | sudo /etc/init.d/apache2 restart |
接下来,我们就在Web目录下面新建一个test.php文件来测试PHP是否能正常的运行,命令:
1 | sudo gedit /var/www/test.php |
然后输入:
1 2 | <?php echo "hello,world!!"?> |
接着保存文件,在浏览器里输入http://127.0.0.1/test.php,如果在网页中显示hello,world!!,那就说明PHP已经正常运行了。
步骤三,安装mysql数据库:
1 | sudo apt-get install mysql-server mysql-client |
apt-get程序会自动下载安装最新的mysql版本。在安装的最后,它会要求里输入root的密码,注意,这里的root密码可不是Ubuntu的root密码啊,是你要给MySQL设定的root密码。
步骤四,安装phpmyadmin-Mysql数据库管理
1 | sudo apt-get install phpmyadmin |
phpmyadmin设置:
在安装过程中会要求选择Web server:apache2或lighttpd,使用空格键选定apache2,按tab键然后确定。然后会要求输入设置的Mysql数据库密码连接密码Password of the database’s administrative user。
然后将phpmyadmin与apache2建立连接,以我的为例:www目录在/var/www,phpmyadmin在/usr/share /phpmyadmin目录,所以就用命令:
1 | sudo ln -s /usr/share/phpmyadmin /var/www |
建立链接。
phpmyadmin测试:在浏览器地址栏中打开http://localhost/phpmyadmin。
以上ALMP的基本组件就安装完毕了,下面我们再来看一些其他的设置:
步骤五,设置Ubuntu文件执行读写权限
LAMP组建安装好之后,PHP网络服务器根目录默认设置是在:/var/www。由于Linux系统的安全性原则,改目录下的文件读写权限是只允许root用户操作的,所以我们不能在www文件夹中新建php文件,也不能修改和删除,必须要先修改/var/www目录的读写权限。在界面管理器中通过右键属性不能修改文件权限,得执行root终端命令:
1 | sudo chmod 777 /var/www |
。然后就可以写入html或php文件了。777是linux中的最高权限,表示可读,可写,可执行。
服务器上的mysql默认数据目录为/var/lib/mysql/,同时服务器的/空间不是很大,而近期又有大量的日志需要导入进行分析,时常搞得/的空间捉襟见肘,晚上一狠心就想把mysql的数据目录转移到另外一块硬盘/data中。
于是关闭mysql服务:
service mysqld stop
转移mysql数据目录
mv /var/lib/mysql/ /data/
编辑my.cnf
vi /etc/my.cnf
修改其中的datadir和socket到新的路径
[mysqld]
datadir=/data/fuhj/mysql socket=/data/fuhj/mysql/mysql.sock本以为修改完启动mysql服务之后就没问题了。
service mysqld start
但是尽管启动服务没有问题,但是通过mysql客户端连接的时候却报错:
[root@hostXXX data]# mysql -u root -p
Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)在网上搜了半天也没个所以然,一个个都是相互抄袭,各种拷贝,没有一个靠谱的。
自己分析了一下,提示说无法通过socket文件/var/lib/mysql/mysql.sock连接到mysql服务器,也就是说对于mysql程序来说,尽管我把socket文件从/var/lib/mysql/mysql.sock转移到了/data/mysql/mysql.sock我在my.cnf里指定了mysqld知道了,但是对于mysql还是会从默认的安装目录/var/lib/mysql/里找这个mysql.sock文件,找不着,就不知道从哪里启动了。
为了验证我的想法,我首先从转移后的路径做了个软连接指向到mysql的默认目录里,如果mysql程序能连上说明想法是正确的。
ln –s /data/mysql/mysql.sock /var/lib/mysql/
做完软连接,重启mysql服务,再次通过mysql程序连接,没有问题,可以连上了。
[root@host160 lib]# mysql -u root -p
Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.1.71 Source distributionCopyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
那说明就是这里的问题了。
其实不做软链接也是可以的,只需要在/etc/my.cnf里添加[mysql]字段指定socket的位置到我们转移后的位置即可
[mysql]
socket=/data/mysql/mysql.sock
作者: 付海军
出处: 版权:本文版权归作者和博客园共有 转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢 要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任 个人网站:解决办法:
cd /etc/init.dmysqld --user=root start参考文章: 今天服务器遇到了一个很熟悉的问题输入#mysql -u root -pERROR 2002 (HY000):Can't connect to local MySQL server随即上网找寻答案根据大家提供的方法我逐一尝试方案1.1.#ps -A|grep mysql 显示类似:1829 ? 00:00:00 mysqld_safe1876 ? 00:00:31 mysqld2.#kill -9 1829 3.#kill -9 18764.#/etc/init.d/mysql restart5.#mysql -u root -p 他的麻烦解决了,我的还没解决!继续找方案2先查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是否已经启动.另外看看是不是权限问题.------------------------------------------------------------------------------------[root@localhost beinan]#chown -R mysql:mysql /var/lib/mysql[root@localhost beinan]# /etc/init.d/mysqld start启动 MySQL: [ 确定 ][root@localhost lib]# mysqladmin -uroot password '123456'[root@localhost lib]# mysql -uroot -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 3 to server version: 4.1.11Type 'help;' or '\h' for help. Type '\c' to clear the buffe他的也解决了,我的麻烦还在继续,依然继续寻找方案3问题解决了,竟然是max_connections=1000 他说太多了,然后改成500也说多,无奈删之问题解决了。还是不行方案4 /var/lib/mysql 所有文件权限 改成mysql.mysql 不行不行方案5摘要:解决不能通过mysql.sock连接MySQL问题 这个问题主要提示是,不能通过 '/tmp/mysql.sock'连到服务器,而php标准配置正是用过'/tmp/mysql.sock',但是一些mysql安装方法将 mysql.sock放在/var/lib/mysql.sock或者其他的什么地方,你可以通过修改/etc/my.cnf文件来修正它,打开文件,可 以看到如下的东东:[mysqld] socket=/var/lib/mysql.sock 改一下就好了,但也会引起其他的问题,如mysql程序连不上了,再加一点: [mysql] socket=/tmp/mysql.sock 或者还可以通过修改php.ini中的配置来使php用其他的mysql.sock来连,这个大家自己去找找或者用这样的方法:ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock成功了,就是这样ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sockOK!以上资料是网上的资料我今天遇到的情况是我使用的mysqld_safe --user=mysql &重启mysql发现无法启动mysql,最后用/etc/init.d/mysqld start启动成功