Saltstack Official PHP Formula
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808
  1. .. _readme:
  2. php-formula
  3. ===========
  4. |img_travis| |img_sr|
  5. .. |img_travis| image:: https://travis-ci.com/saltstack-formulas/php-formula.svg?branch=master
  6. :alt: Travis CI Build Status
  7. :scale: 100%
  8. :target: https://travis-ci.com/saltstack-formulas/php-formula
  9. .. |img_sr| image:: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
  10. :alt: Semantic Release
  11. :scale: 100%
  12. :target: https://github.com/semantic-release/semantic-release
  13. Formula to set up and configure php
  14. .. list-table::
  15. :name: banner-breaking-changes-v1.0.0
  16. :header-rows: 1
  17. :widths: 1
  18. * - WARNING: BREAKING CHANGES IN UPCOMING ``v1.0.0``
  19. * - This formula currently provides two methods for managing PHP; the old method
  20. under ``php`` and the new method under ``php.ng``.
  21. In upcoming `v1.0.0 <https://github.com/saltstack-formulas/php-formula/releases/tag/v1.0.0>`_,
  22. the old method will be removed and ``php.ng`` will be promoted to ``php`` in its place.
  23. If you are not in a position to migrate, you will need to pin your repo to
  24. the final release tag before
  25. `v1.0.0 <https://github.com/saltstack-formulas/php-formula/releases/tag/v1.0.0>`_,
  26. which is expected to be
  27. `v0.39.2 <https://github.com/saltstack-formulas/php-formula/releases/tag/v0.39.2>`_.
  28. If you are currently using ``php.ng``, there is nothing to do until
  29. `v1.0.0 <https://github.com/saltstack-formulas/php-formula/releases/tag/v1.0.0>`_
  30. is released.
  31. To migrate from the old ``php``, the first step is to convert to ``php.ng``,
  32. before `v1.0.0 <https://github.com/saltstack-formulas/php-formula/releases/tag/v1.0.0>`_
  33. is released.
  34. .. contents:: **Table of Contents**
  35. General notes
  36. -------------
  37. See the full `SaltStack Formulas installation and usage instructions
  38. <https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html>`_.
  39. If you are interested in writing or contributing to formulas, please pay attention to the `Writing Formula Section
  40. <https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html#writing-formulas>`_.
  41. If you want to use this formula, please pay attention to the ``FORMULA`` file and/or ``git tag``,
  42. which contains the currently released version. This formula is versioned according to `Semantic Versioning <http://semver.org/>`_.
  43. See `Formula Versioning Section <https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html#versioning>`_ for more details.
  44. Contributing to this repo
  45. -------------------------
  46. **Commit message formatting is significant!!**
  47. Please see :ref:`How to contribute <CONTRIBUTING>` for more details.
  48. Available states
  49. ----------------
  50. .. contents::
  51. :local:
  52. ``php``
  53. ^^^^^^^
  54. Installs the php package.
  55. ``php.adodb``
  56. ^^^^^^^^^^^^^
  57. Installs the php-adodb package.
  58. ``php.apc``
  59. ^^^^^^^^^^^
  60. Installs the php-apc package.
  61. Disabled by default on opensuse need server:php repo
  62. ``php.apcu``
  63. ^^^^^^^^^^^^
  64. Installs the php-apcu package.
  65. Disabled by default on opensuse need server:php repo
  66. ``php.bcmath``
  67. ^^^^^^^^^^^^^^
  68. Installs the php-bcmath package.
  69. ``php.cgi``
  70. ^^^^^^^^^^^
  71. Installs the php-cgi package.
  72. Disabled on opensuse not available, only fastcgi
  73. ``php.cli``
  74. ^^^^^^^^^^^
  75. Installs the php-cli package.
  76. ``php.composer``
  77. ^^^^^^^^^^^^^^^^
  78. Installs [composer](https://getcomposer.org) and keeps it updated.
  79. ``php.curl``
  80. ^^^^^^^^^^^^
  81. Installs the php5-curl package on Debian, and ensures that curl itself is
  82. installed for RedHat systems, this is due to the curl libs being provided by
  83. php-common, which will get installed with the main php package.
  84. ``php.dev``
  85. ^^^^^^^^^^^
  86. Installs the php-dev package.
  87. ``php.fileinfo``
  88. ^^^^^^^^^^^^^^^^
  89. Installs the php-fileinfo package and enables it.
  90. ``php.fpm``
  91. ^^^^^^^^^^^
  92. Installs the php-fpm package, starts the service, and enables it.
  93. ``php.gd``
  94. ^^^^^^^^^^
  95. Installs the php-gd package.
  96. ``php.imagick``
  97. ^^^^^^^^^^^^^^^
  98. Installs the php-imagick package.
  99. Disabled on opensuse not available.
  100. ``php.imap``
  101. ^^^^^^^^^^^^
  102. Installs the php-imap package.
  103. ``php.intl``
  104. ^^^^^^^^^^^^
  105. Installs the php-intl package.
  106. ``php.json``
  107. ^^^^^^^^^^^^
  108. Installs the php-json package.
  109. ``php.ldap``
  110. ^^^^^^^^^^^^
  111. Installs the php-ldap package.
  112. ``php.mail``
  113. ^^^^^^^^^^^^
  114. Installs the php-mail package.
  115. ``php.mbstring``
  116. ^^^^^^^^^^^^^^^^
  117. Installs the php-mbstring package.
  118. ``php.mcrypt``
  119. ^^^^^^^^^^^^^^
  120. Installs the php-mcrypt package.
  121. ``php.memcache``
  122. ^^^^^^^^^^^^^^^^
  123. Installs the php-memcache package.
  124. Disabled on opensuse need server:php:extensions repo
  125. ``php.memcached``
  126. ^^^^^^^^^^^^^^^^^
  127. Installs the php-memcached package.
  128. Disabled on opensuse need server:php:extensions repo
  129. ``php.mongo``
  130. ^^^^^^^^^^^^^
  131. Installs the php-mongo package.
  132. Disabled on opensuse need server:php:extensions repo
  133. ``php.mysql``
  134. ^^^^^^^^^^^^^
  135. Installs the php-mysql package.
  136. ``php.mysqlnd``
  137. ^^^^^^^^^^^^^^^
  138. Installs the php-mysqlnd package.
  139. Disabled on opensuse no package.
  140. ``php.oauth``
  141. ^^^^^^^^^^^^^
  142. Installs the php-oauth package.
  143. ``php.pear``
  144. ^^^^^^^^^^^^
  145. Installs the php-pear package.
  146. ``php.pgsql``
  147. ^^^^^^^^^^^^^
  148. Installs the php-pgsql package.
  149. ``php.readline``
  150. ^^^^^^^^^^^^^^^^
  151. Installs the php-readline package.
  152. ``php.redis``
  153. ^^^^^^^^^^^^^
  154. Installs the php-redis package.
  155. Disabled on opensuse need server:php:extensions repo
  156. ``php.soap``
  157. ^^^^^^^^^^^^
  158. Installs the php-soap package.
  159. ``php.sqlite``
  160. ^^^^^^^^^^^^^^
  161. Installs the php-sqlite package,
  162. ``php.suhosin``
  163. ^^^^^^^^^^^^^^^
  164. Installs the php-suhosin package.
  165. ``php.sybase``
  166. ^^^^^^^^^^^^^^
  167. Installs the php-sybase package for Sybase/MS-SQL. Debian / Ubuntu as RedHat has no similar package.
  168. ``php.tokenizer``
  169. ^^^^^^^^^^^^^^^^^
  170. Installs the php-tokenizer package and enables it.
  171. ``php.xml``
  172. ^^^^^^^^^^^
  173. Installs the php-xml package.
  174. ``php.zip``
  175. ^^^^^^^^^^^
  176. Installs the php-zip package.
  177. Next-generation, alternate approach
  178. -----------------------------------
  179. The following states provide an alternate approach to managing PHP and FPM
  180. pools, as well as code organization. Please provide feedback by filing issues,
  181. discussing in ``#salt`` in Freenode and the mailing list as normal.
  182. **Note:** php.ng states require the merge parameter of salt.modules.pillar.get(),
  183. first available in the Helium release.
  184. .. contents::
  185. :local:
  186. ``php.ng``
  187. ^^^^^^^^^^
  188. Installs the php package.
  189. ``php.ng.adodb``
  190. ^^^^^^^^^^^^^^^^
  191. Installs the php-adodb package.
  192. ``php.ng.apache2``
  193. ^^^^^^^^^^^^^^^^^^
  194. Meta-state that combines `php.ng.apache2.install`_ and `php.ng.apache2.ini`_.
  195. ``php.ng.apache2.ini``
  196. ^^^^^^^^^^^^^^^^^^^^^^
  197. Manages the apache2 php.ini file
  198. ``php.ng.apache2.install``
  199. ^^^^^^^^^^^^^^^^^^^^^^^^^^
  200. Installs the apache2 and libapache2-mod-php5 package. Debian Only.
  201. ``php.ng.apc``
  202. ^^^^^^^^^^^^^^
  203. Installs the php-apc package.
  204. Disabled on opensuse need server:php repo
  205. ``php.ng.apcu``
  206. ^^^^^^^^^^^^^^^
  207. Installs the php-apcu package.
  208. Disabled on opensuse need server:php repo
  209. ``php.ng.auth-sasl``
  210. ^^^^^^^^^^^^^^^^^^^^
  211. Installs the php-auth-sasl package.
  212. ``php.ng.bcmath``
  213. ^^^^^^^^^^^^^^^^^
  214. Installs the php-bcmath package.
  215. ``php.ng.bz2``
  216. ^^^^^^^^^^^^^^
  217. Installs the php-bz2 package.
  218. ``php.ng.cache-lite``
  219. ^^^^^^^^^^^^^^^^^^^^^
  220. Installs the php-cache-lite package.
  221. ``php.ng.cgi``
  222. ^^^^^^^^^^^^^^
  223. Installs the php-cgi package.
  224. Disabled on opensuse only php5-fastcgi available.
  225. ``php.ng.cli``
  226. ^^^^^^^^^^^^^^
  227. Meta-state that combines `php.ng.cli.install`_ and `php.ng.cli.ini`_.
  228. ``php.ng.cli.ini``
  229. ^^^^^^^^^^^^^^^^^^
  230. Manages the php-cli ini file.
  231. ``php.ng.cli.install``
  232. ^^^^^^^^^^^^^^^^^^^^^^
  233. Installs the php-cli package.
  234. ``php.ng.composer``
  235. ^^^^^^^^^^^^^^^^^^^
  236. Installs [composer](https://getcomposer.org) and keeps it updated.
  237. ``php.ng.console-table``
  238. ^^^^^^^^^^^^^^^^^^^^^^^^
  239. Installs the php-console-table package.
  240. ``php.ng.ctype``
  241. ^^^^^^^^^^^^^^^^
  242. Installs the php-ctype package.
  243. ``php.ng.curl``
  244. ^^^^^^^^^^^^^^^
  245. Installs the php5-curl package on Debian, and ensures that curl itself is
  246. installed for RedHat systems, this is due to the curl libs being provided by
  247. php-common, which will get installed with the main php package.
  248. ``php.ng.dba``
  249. ^^^^^^^^^^^^^^
  250. Installs the php-dba package.
  251. ``php.ng.dev``
  252. ^^^^^^^^^^^^^^
  253. Installs the php5-dev and build-essential package.
  254. ``php.ng.filter``
  255. ^^^^^^^^^^^^^^^^^
  256. Installs the php-filter package.
  257. ``php.ng.fpm``
  258. ^^^^^^^^^^^^^^
  259. Meta-state that combines all php.ng.fpm states.
  260. ``php.ng.fpm.config``
  261. ^^^^^^^^^^^^^^^^^^^^^
  262. Manages the (non-pool) php-fpm config files.
  263. ``php.ng.fpm.install``
  264. ^^^^^^^^^^^^^^^^^^^^^^
  265. Installs the php-fpm package.
  266. ``php.ng.fpm.pools``
  267. ^^^^^^^^^^^^^^^^^^^^
  268. Meta-state that combines `php.ng.fpm.service`_ and `php.ng.fpm.pools_config`_
  269. ``php.ng.fpm.pools_config``
  270. ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  271. Manages php-fpm pool config files.
  272. ``php.ng.fpm.service``
  273. ^^^^^^^^^^^^^^^^^^^^^^
  274. Manages the php-fpm service.
  275. ``php.ng.gd``
  276. ^^^^^^^^^^^^^
  277. Installs the php-gd package.
  278. ``php.ng.gearman``
  279. ^^^^^^^^^^^^^^^^^^
  280. Installs the php-gearman package.
  281. ``php.ng.geoip``
  282. ^^^^^^^^^^^^^^^^
  283. Installs the php-geoip package.
  284. ``php.ng.geshi``
  285. ^^^^^^^^^^^^^^^^
  286. Installs the php-geshi package.
  287. ``php.ng.gettext``
  288. ^^^^^^^^^^^^^^^^^^
  289. Installs the php-gettext package.
  290. ``php.ng.gmp``
  291. ^^^^^^^^^^^^^^
  292. Installs the php-gmp package. Debian Only.
  293. ``php.ng.hash``
  294. ^^^^^^^^^^^^^^^
  295. Installs the php-hash package.
  296. ``php.ng.http``
  297. ^^^^^^^^^^^^^^^
  298. Installs the php-http package.
  299. ``php.ng.hhvm``
  300. ^^^^^^^^^^^^^^^
  301. Meta-state that combines php.ng.hhvm states
  302. ``php.ng.hhvm.config``
  303. ^^^^^^^^^^^^^^^^^^^^^^
  304. Manages the php-hhvm config files
  305. ``php.ng.hhvm.install``
  306. ^^^^^^^^^^^^^^^^^^^^^^^
  307. Installs the php-hhvm package
  308. ``php.ng.hhvm.repo``
  309. ^^^^^^^^^.REPO^^^^^^
  310. Configures the hhvm repo for debian/ubuntu
  311. ``php.ng.hhvm.service``
  312. ^^^^^^^^^^^^^^^^^^^^^^^
  313. Manages the php-hhvm service.
  314. ``php.ng.igbinary``
  315. ^^^^^^^^^^^^^^^^^^^
  316. Installs the php-igbinary package.
  317. ``php.ng.imagick``
  318. ^^^^^^^^^^^^^^^^^^
  319. Installs the php-imagick package.
  320. Disabled on opensuse no package.
  321. ``php.ng.imap``
  322. ^^^^^^^^^^^^^^^
  323. Installs the php-imap package.
  324. ``php.ng.intl``
  325. ^^^^^^^^^^^^^^^
  326. Installs the php-intl package.
  327. ``php.ng.json``
  328. ^^^^^^^^^^^^^^^
  329. Installs the php-json package.
  330. ``php.ng.ldap``
  331. ^^^^^^^^^^^^^^^
  332. Installs the php-ldap package.
  333. ``php.ng.mail``
  334. ^^^^^^^^^^^^^^^
  335. Installs the php-mail package.
  336. ``php.ng.mbstring``
  337. ^^^^^^^^^^^^^^^^^^^
  338. Installs the php-mbstring package.
  339. ``php.ng.mcrypt``
  340. ^^^^^^^^^^^^^^^^^
  341. Installs the php-mcrypt package.
  342. ``php.ng.mdb2``
  343. ^^^^^^^^^^^^^^^
  344. Installs the php-mdb2 package.
  345. ``php.ng.mdb2-driver-mysql``
  346. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  347. Installs the php-mdb2-driver-mysql package.
  348. ``php.ng.mdb2-driver-pgsql``
  349. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  350. Installs the php-mdb2-driver-pgsql package.
  351. ``php.ng.memcache``
  352. ^^^^^^^^^^^^^^^^^^^
  353. Installs the php-memcache package.
  354. Disabled on opensuse need server:php:extensions repo
  355. ``php.ng.memcached``
  356. ^^^^^^^^^^^^^^^^^^^^
  357. Installs the php-memcached package.
  358. Disabled on opensuse need server:php:extensions repo
  359. ``php.ng.modules``
  360. ^^^^^^^^^^^^^^^^^^
  361. Calls ``php.ng.<name>`` for each entry in ``php:ng:modules`` if available, or
  362. try to install the matching packages that can be set via from
  363. ``php:ng:lookup:pkgs``
  364. ``php.ng.mongo``
  365. ^^^^^^^^^^^^^^^^
  366. Installs the php-mongo package.
  367. ``php.ng.mongodb``
  368. ^^^^^^^^^^^^^^^^^^
  369. Installs the php-mongodb package.
  370. ``php.ng.msgpack``
  371. ^^^^^^^^^^^^^^^^^^
  372. Installs the php-msgpack package.
  373. ``php.ng.mysql``
  374. ^^^^^^^^^^^^^^^^
  375. Installs the php-mysql package.
  376. ``php.ng.mysqlnd``
  377. ^^^^^^^^^^^^^^^^^^
  378. Installs the php-mysqlnd package.
  379. Disabled on opensuse no package.
  380. ``php.ng.net-smtp``
  381. ^^^^^^^^^^^^^^^^^^^
  382. Installs the php-net-smtp package.
  383. ``php.ng.net4``
  384. ^^^^^^^^^^^^^^^
  385. Installs the php-net4 package.
  386. ``php.ng.net6``
  387. ^^^^^^^^^^^NET6
  388. Installs the php-net6 package.
  389. ``php.ng.oauth``
  390. ^^^^^^^^^^^^^^^^
  391. Installs the php-oauth package.
  392. ``php.ng.opcache``
  393. ^^^^^^^^^^^^^^^^^^
  394. Installs the php-opcache package.
  395. ``php.ng.openssl``
  396. ^^^^^^^^^^^^^^^^^^
  397. Installs the php-openssl package.
  398. ``php.ng.pear``
  399. ^^^^^^^^^^^^^^^
  400. Installs the php-pear package.
  401. ``php.ng.pgsql``
  402. ^^^^^^^^^^^^^^^^
  403. Installs the php-pgsql package.
  404. ``php.ng.phar``
  405. ^^^^^^^^^^^^^^^
  406. Installs the php-phar package.
  407. ``php.ng.posix``
  408. ^^^^^^^^^^^^^^^^
  409. Installs the php-posix package.
  410. ``php.ng.pspell``
  411. ^^^^^^^^^^^^^^^^^
  412. Installs the php-pspell package.
  413. ``php.ng.readline``
  414. ^^^^^^^^^^^^^^^^^^^
  415. Installs the php-readline package.
  416. ``php.ng.redis``
  417. ^^^^^^^^^^^^^^^^
  418. Installs the php-redis package.
  419. Disabled on opensuse need server:php:extensions repo
  420. ``php.ng.seclib``
  421. ^^^^^^^^^^^^^^^^^
  422. Installs the php-seclib package.
  423. ``php.ng.session``
  424. ^^^^^^^^^^^^^^^^^^
  425. Installs the php-session package.
  426. ``php.ng.snmp``
  427. ^^^^^^^^^^^^^^^
  428. Installs the php-snmp package.
  429. ``php.ng.soap``
  430. ^^^^^^^^^^^^^^^
  431. Installs the php-soap package.
  432. ``php.ng.sqlite``
  433. ^^^^^^^^^^^^^^^^^
  434. Installs the php-sqlite package,
  435. ``php.ng.ssh2``
  436. ^^^^^^^^^^^^^^^
  437. Installs the php-ssh2 package,
  438. ``php.ng.suhosin``
  439. ^^^^^^^^^^^^^^^^^^
  440. Installs the php-suhosin package.
  441. ``php.ng.svn``
  442. ^^^^^^^^^^^^^^
  443. Installs the php-svn package.
  444. ``php.ng.sybase``
  445. ^^^^^^^^^^^^^^^^^
  446. Installs the php-sybase package.
  447. ``php.ng.tcpdf``
  448. ^^^^^^^^^^^^^^^^
  449. Installs the php-tcpdf package.
  450. ``php.ng.tidy``
  451. ^^^^^^^^^^^^^^^
  452. Installs the php-tidy package.
  453. ``php.ng.uuid``
  454. ^^^^^^^^^^^^^^^
  455. Installs the php-uuid package.
  456. ``php.ng.xcache``
  457. ^^^^^^^^^^^^^^^^^
  458. Meta-state that combines `php.ng.xcache.install`_ and `php.ng.xcache.ini`_.
  459. ``php.ng.xcache.ini``
  460. ^^^^^^^^^^^^^^^^^^^^^
  461. Manages the php-xcache ini file
  462. ``php.ng.xcache.install``
  463. ^^^^^^^^^^^^^^^^^^^^^^^^^
  464. Installs the php-xcache package.
  465. Disabled on opensuse need server:php:extensions repo
  466. ``php.ng.xdebug``
  467. ^^^^^^^^^^^^^^^^^
  468. Installs the php-xdebug package.
  469. ``php.ng.xml``
  470. ^^^^^^^^^^^^^^
  471. Installs the php-xml package.
  472. ``php.ng.xsl``
  473. ^^^^^^^^^^^^^^
  474. Installs the php-xsl package.
  475. ``php.ng.zip``
  476. ^^^^^^^^^^^^^^
  477. Installs the php-zip package.
  478. Testing
  479. -------
  480. Linux testing is done with ``kitchen-salt``.
  481. Requirements
  482. ^^^^^^^^^^^^
  483. * Ruby
  484. * Docker
  485. .. code-block:: bash
  486. $ gem install bundler
  487. $ bundle install
  488. $ bin/kitchen test [platform]
  489. Where ``[platform]`` is the platform name defined in ``kitchen.yml``,
  490. e.g. ``debian-9-2019-2-py3``.
  491. ``bin/kitchen converge``
  492. ^^^^^^^^^^^^^^^^^^^^^^^^
  493. Creates the docker instance and runs the ``template`` main state, ready for testing.
  494. ``bin/kitchen verify``
  495. ^^^^^^^^^^^^^^^^^^^^^^
  496. Runs the ``inspec`` tests on the actual instance.
  497. ``bin/kitchen destroy``
  498. ^^^^^^^^^^^^^^^^^^^^^^^
  499. Removes the docker instance.
  500. ``bin/kitchen test``
  501. ^^^^^^^^^^^^^^^^^^^^
  502. Runs all of the stages above in one go: i.e. ``destroy`` + ``converge`` + ``verify`` + ``destroy``.
  503. ``bin/kitchen login``
  504. ^^^^^^^^^^^^^^^^^^^^^
  505. Gives you SSH access to the instance for manual testing.